图像ROI与ROI操作

  • 知识点
  • python代码
  • c++代码

知识点

图像ROI与ROI操作
图像ROI解释:
图像的ROI(region of interest)是指图像中感兴趣区域、在OpenCV中图像设置图像ROI区域,实现只对ROI区域操作。

  1. 矩形ROI区域提取

  2. 矩形ROI区域copy

  3. 不规则ROI区域

  • ROI区域mask生成
  • 像素位 and操作
  • 提取到ROI区域
  • 加背景or操作
  • add 背景与ROI区域

python代码

import cv2 as cv
import numpy as npsrc = cv.imread("C:/Users/qqxd/Desktop/opencvcode/images/test.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
h, w = src.shape[:2]
print(h,w)roi = src[20:230,130:300,:]
cv.imshow("roi", roi)
# copy ROI
image = np.copy(roi)
# modify ROI
#通过切片操作对图像的通道进行处理
#b通道为0
roi[:, :,0 ]  = 0
#g通道为0
# roi[:, :,1 ] = 0# r通道为0
# roi[:, :,2] = 0
cv.imshow("result", src)src2 = cv.imread("C:/Users/qqxd/Desktop/opencvcode/images/greenback.png");
cv.imshow("src2", src2)
hsv = cv.cvtColor(src2, cv.COLOR_BGR2HSV)
mask = cv.inRange(hsv, (35, 43, 46), (99, 255, 255))
mask = cv.bitwise_not(mask)
person = cv.bitwise_and(src2, src2,mask=mask)
cv.imshow("person",person)
result = np.zeros(src2.shape, src2.dtype)
result[:,:,0] = 255
mask = cv.bitwise_not(mask)
cv.imshow("mask",mask)
dst = cv.bitwise_or(person, result,mask = mask)
dst = cv.add(dst, person)
cv.imshow("dst",dst)
#从而完成换底操作
cv.waitKey(0)
cv.destroyAllWindows()

c++代码

#include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;
using namespace std;int main(int argc, char** argv) {Mat src = imread("C:/Users/qqxd/Desktop/opencvcode/images/test.png");namedWindow("input", WINDOW_AUTOSIZE);imshow("input", src);int h = src.rows;int w = src.cols;// 获取ROIRect rect(130, 20, 300-130, 230-20);Mat roi = src(rect);imshow("roi", roi);Mat image = roi.clone();// modify ROIroi.setTo(Scalar(255, 0, 0));//imshow("result", src);// modify copy roi//image.setTo(Scalar(0, 0, 255));imshow("result", src);//imshow("copy roi", image);// example with ROI - generate maskMat src2 = imread("C:/Users/qqxd/Desktop/opencvcode/images/greenback.png");imshow("src2", src2);Mat hsv, mask;cvtColor(src2, hsv, COLOR_BGR2HSV);inRange(hsv, Scalar(35, 43, 46), Scalar(99, 255, 255), mask);imshow("mask", mask);// extract person ROIMat person;bitwise_not(mask, mask);bitwise_and(src2, src2, person, mask);imshow("person", person);// generate backgroundMat result = Mat::zeros(src2.size(), src2.type());result.setTo(Scalar(255, 0, 0));// combine background + personMat dst;bitwise_not(mask, mask);bitwise_or(person, result, dst, mask);add(dst, person, dst);imshow("dst", dst);waitKey(0);return 0;
}

运行结果如下:

Opencv-图像ROI与ROI操作相关推荐

  1. opencv——图像遍历以及像素操作

    摘要 我们在图像处理时经常会用到遍历图像像素点的方式,在OpenCV中一般有四种图像遍历的方式,在这里我们通过像素变换的点操作来实现对图像亮度和对比度的调整. 数据格式千万不要搞错: uchar对应的 ...

  2. 《OpenCv视觉之眼》Python图像处理六 :Opencv图像傅里叶变换和傅里叶逆变换原理及实现

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  3. 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  4. 《OpenCv视觉之眼》Python图像处理十四 :Opencv图像轮廓提取之Scharr算法和Canny算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  5. 《OpenCv视觉之眼》Python图像处理十 :Opencv图像形态学处理之开运算、闭运算和梯度运算原理及方法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  6. OpenCV之图像ROI与ROI操作

    python代码: import cv2 as cv import numpy as npsrc = cv.imread("./test.png") cv.namedWindow( ...

  7. opencv python3 找图片色块_Python 图像处理 OpenCV (3):图像属性、图像感兴趣 ROI 区域及通道处理...

    前文传送门: 图像属性 图像属性包括行数,列数和通道数,图像数据类型,像素数等. 1. 形状:shape 图像的形状可以通过 shape 关键字进行获取,使用 shape 关键的后,获取的信息包括行数 ...

  8. OpenCV--0016:图像ROI与ROI操作

    文章目录 一.图像ROI 1. 概念 2. 图像ROI操作 2.1 矩形感兴趣区域 2.1.1 使用Rect函数 2.1.2 使用Range 2.1.3 应用实例 2.2 不规则ROI区域 2.2.1 ...

  9. 【OpenCV3】将图像指定区域使用另一图像(或ROI)覆盖

    在图像处理中,有时会遇到使用使用一幅图像(或ROI)覆盖(替换)另一图像的指定区域,直接的方法是逐个像素进行复制,但这是一种效率很低的操作,下面介绍opencv中一种效率较高且简便的操作. 具体看如下 ...

  10. opencv图像的基础操作

    目标 • 获取像素值并修改 • 获取图像的属性(信息) • 图像的ROI() • 图像通道的拆分及合并 几乎所有这些操作与Numpy 的关系都比与OpenCV 的关系更加紧密,因此熟练Numpy 可以 ...

最新文章

  1. android连接不上socket,关于socket通信的android与pc端连接,为什么我定义的socket是为空的,连接不上pc端...
  2. 【计算机网络】网络安全 : 运输层安全协议 ( 安全套接字层 SSL | 运输层安全 TSL | SSL 服务 | SSL 安全会话建立流程 )
  3. 【Python】利用Conda尝鲜Python 3.10
  4. 深度学习的一些经验总结和建议| To do v.s Not To Do
  5. 如何将React App转换为React Native
  6. springCloud - 第2篇 - 服务的发现 seeParam
  7. Python变量 - Python零基础入门教程
  8. Ansi与Unicode编码
  9. RabbitMQ学习之集群消息可靠性测试
  10. IT职场人生系列之十七:入职(高手篇)
  11. java弹出提示框jo类_Java JobMeta.getJobLogTable方法代码示例
  12. Problem:服务器超过最大中终连接数
  13. 【韩顺平 零基础30天学会Java】(第一阶段)(自用)
  14. win7电脑桌面便签哪个好用
  15. 嵌入式开发比单片机开发难?
  16. 关于简单的factorymode
  17. VSCode C++ control reaches end of non-void function [-Wreturn-type]
  18. C#练习题答案: 反恐精英系列【难度:1级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战
  19. 父亲儿子女儿放取水果进程/线程间通信程序设计与实现
  20. MT5 白标专用 清算抛单工具

热门文章

  1. Lucene实现自定义中文同义词分词器
  2. 【读书笔记】《价值投资的秘密》
  3. CSDN学霸课表——系统集成项目管理工程师(软考中级)
  4. vs community 2019安装失败问题解决
  5. MySQL常用类型转换函数总结
  6. 计算机网络实验三(基于packet tracer)
  7. c语言企业自动化管理系统,基于C语言制作的人事管理系统-自动化毕业论文.doc...
  8. 中国大学MOOC-陈越、何钦铭-数据结构-2022春期中考试
  9. js实现刷新页面的方法
  10. Netty网络框架学习笔记-16(心跳(heartbeat)服务源码分析)