最近做目标检测任务的时候,需要对固定区域的内容进行检测,要用到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)