目录
前言
一、ROI是什么?
二、多边形ROI处理思路
1.多边形ROI的定义
2.多边形ROI的复制
总结
本文主要讲述多边形ROI的常用处理思路。
ROI是什么呢?ROI是图像中的一个概念,叫做感兴趣区域,是对图像局部区域操作的手段之一。
多边形ROI是以多边形的顶点来定义的,类似与用四个点来定义矩形一样。
多边形复制:将多边形区域处理后复制到另外一副图像中,但是不能复制图像的背景;
处理思路如下所示:
srcfilename = 'src.jpg' ## 含有多边形区域,将这个多边形区域的内容拷贝到dst
src = cv2.imread(srcfilename )
dstfilename = 'dst.jpg'
dst = cv2.imread(dstfilename )
src = cv2.imread(image_path)
src_mask = src.copy()
src_mask = cv2.cvtColor(src1_mask,cv2.COLOR_BGR2GRAY)
src_mask.fill(0)
## 假设我们的多边形区域这样表示
poly = np.array([ [0,0], [20,0], [70,40], [100,60]], np.int32)
_ = cv2.fillPoly(src1_mask, [poly], 255)
roi = dst[np.min(poly[:,1]):np.max(poly[:,1]),np.min(poly[:,0]):np.max(poly[:,0])]
mask = src_mask[np.min(poly[:,1]):np.max(poly[:,1]),np.min(poly[:,0]):np.max(poly[:,0])]
这个感兴趣区域是多边形围起来的最小矩形
mask_inv = cv2.bitwise_not(mask)
dst_bg = cv2.bitwise_and(roi,roi,mask = mask_inv)
poly_cut = src[np.min(poly[:,1]):np.max(poly[:,1]),np.min(poly[:,0]):np.max(poly[:,0])]
src_fg = cv2.bitwise_and(poly_cut,poly_cut,mask = mask)
coped_ROI = cv2.add(dst_bg,src_fg)
combined_image = dst.copy()
combined_image [np.min(poly[:,1]):np.max(poly[:,1]),np.min(poly[:,0]):np.max(poly[:,0])] = coped_ROI
plt.imshow(cv2.cvtColor(combined_image , cv2.COLOR_BGR2RGB))
这里巧妙的利用了按位操作来完成。