最近做目标检测任务的时候,需要对固定区域的内容进行检测,要用到opencv的mask操作,选择图片固定的区域
代码
import cv2
import numpy as np
img = cv2.imread('data/images/smoking.png')
# 弹出一个框 让你选择ROI | x,y是左上角的坐标
x,y,w,h = cv2.selectROI(img)
print(x, y, w, h)
# 创建mask
mask = np.zeros_like(img[:,:,0])
# 将感兴趣的区域的值设置为1
mask[y:y+h,x:x+w] = 1
# 将mask与原图像做与操作,留下感兴趣的区域,其它区域变成了0
masked_img = cv2.bitwise_and(img,img,mask=mask)
# 显示图片
cv2.imshow('img',img)
cv2.imshow('img_mask',masked_img)
cv2.waitKey()
# 保存图像
cv2.imwrite('data/images/masked_img.png', masked_img)
运行结果
原图片
执行 x,y,w,h = cv2.selectROI(img)
结果
文章来源:https://www.toymoban.com/news/detail-663554.html
mask取反,得到非ROI区域
background = cv2.bitwise_and(img,img,mask=1-mask)
对ROI处理,得到完整图片
可以对ROI检测香烟,检测之后在ROI的香烟上画上框,再roi+background得到完整图片文章来源地址https://www.toymoban.com/news/detail-663554.html
result = roi + background
到了这里,关于opencv的Mask操作,选择图片中感兴趣的区域的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!