opencv for python的图像ROI相关操作

一、ROI简介:

所谓ROI即为感兴趣区域(range of interest)即从被处理的图像中以方框、圆、椭圆、不规则多边形等方式截取需要处理的区域。

二、截取矩形ROI:

矩形区域:可用numpy中的数组索引选择像素点的行数列数范围截取相关的指定区域。

roi=img[100:200,200:300]
 #截取图像img中像素点行数为100到200、列数为200到300即x轴200至300y轴100至200的roi区域
roi1=img[:,:,0] #0,1,2分别对应blue,green,red三个颜色通道
#截取图像中的blue颜色通道中的全部像素点即整个图像的范围

三、截取不规则ROI:

需用函数简介:
cv2.bitwise_and(src1,src2,[,dst[,mask]]) → dst
对两幅图像进行按位和运算,其中mask为掩码,src和dst分别为原图像和返回图像

cv2.bitwise_not(src,[,dst[,mask]]) → dst
对一幅图像进行按位非运算,其中mask为掩码

cv2.threshold(src,thresh,maxval,type[,dst]) → dst
简单阈值函数将原图像二值化,其中各参数分别代表原图像、阈值、二进制值的最大值、阈值处理的方法

cv2.cvtColor(src,code[,dst[,dstCn]]) → dst
颜色空间转换函数,code为颜色空间转换模式,常用的有cv2.COLOR_BGR2GRAY:将BGR格式的转换为灰度格式的图像
cv2.COLOR_BGR2HSV:将BGR格式的图像转换为HSV格式的图像

cv2.add(src1,src2[,dst[,mask[,dtype]]]) → dst将两幅源图像进行简单算术加和操作

利用阈值函数来生成掩码,将其分为ROI和背景(可白可黑),然后利用位运算中的反运算来生成掩码的二进制反码、利用和运算来生成ROI。
如下以将Opencv的logo融合到另一张图中为例来说明其操作:

import cv2
import numpy as np
img1=cv2.imread("……/1.jpg") #logo图像
img2=cv2.imread("……/2.jpg") #要添加logo的图像
rows,cols=img1.shape[:2] 
range=img2[:rows,:cols]  #选取ROI所在的矩形区域即为logo的全部区域
img1_gray=cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)
#由于简单阈值函数cv2.threshold()只能接受单通道的图像,因此需要利用颜色空间转换函数cv2.cvtColor()将其转换为灰度图像
mask=cv2.threshold(img1_gray,175,255,cv2.THRESH_BINARY)
#利用简单阈值函数来生成黑白二进制值的掩码
mask_inv=cv2.bitwise_not(mask) #利用位运算的非函数来生成与mask黑白区域对调的掩码
roi1=cv2.bitwise_and(img1,img1,mask_inv) 
 #利用和函数来生成ROI1,即在img2中挖出logo的区域,即该区域为黑
roi2=cv2.bitwise_and(img2,img2,mask)
#利用和函数生成ROI2,即使logo的背景变黑且使logo变白
add=cv2.add(roi1,roi2)  # 利用图像加法来将两个ROI加在一起来完成更好的融合
img2[:rows,:cols]=add  # 将合成后的区域还原到img2上
#可展示出各个中间处理图像,来理解整个过程
cv2.imshow("mask",mask)
cv2.imshow("mask_inv",mask_inv)
cv2.imshow("add1",add1)
cv2.imshow("add2",add2)
cv2.imshow("add",add)
cv2.imshow("img2",img2")
cv2.waitKey(0)
cv2.destroyAllWindows()

图片示例
处理后的图像
logo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值