python opencv边缘提取,python opencv 截取矩形区域
ROI是感兴趣的区域。在机器视觉和图像处理中,从处理后的图像中以盒、圆、椭圆和不规则多边形的形式勾勒出待处理的区域,称为ROI。本文将利用Python和OpenCV提取不规则多边形的ROI区域,可供参考。
ROI,主要由鼠标交互绘制:
1.单击左键选择多边形的点;
2.右键单击以删除最后选择的点;
3.单击中间按钮确定ROI区域并将其可视化。
4.按“S”键将多边形ROI区域的点保存到本地“config.pkl”文件中。
事不宜迟,下面是核心代码
导入cv2
将numpy作为np导入
导入作业库
Pts=[] #用于存储点
#统一:鼠标回调功能
def draw_roi(事件,x,y,标志,参数):
img2=img.copy()
if event==cv2 . event _ lbuttondown 3360 #左键单击选择一个点
pts.append((x,y))
if event==cv2 . event _ rbuttondown 3360 #右键取消最后选择的点。
pts.pop()
if event==cv2 . event _ mbutton down : #中键绘制轮廓
mask=np.zeros(img.shape,np.uint8)
points=np.array(pts,np.int32)
points=points . shape((-1,1,2))
#绘制多边形
mask=cv2 . polysis(mask,[points],True,(255,255,255),2)
Mask=cv2.fillpoly (mask.copy(),[points],(255,255,255)) #用于查找ROI。
Mask=cv2.fillpoly (mask.copy(),[points],(0,255,0)) #用于显示在桌面上的图像
show _ image=cv2 . add weighted(src 1=img,alpha=0.8,src2=mask3,beta=0.2,gamma=0)
cv2.imshow(mask ,mask2)
cv2.imshow(show_img ,show_image)
ROI=cv2.bitwise_and(mask2,img)
cv2.imshow(ROI ,ROI)
cv2.waitKey(0)
if len(pts) 0:
#画出最后一点
cv2.circle(img2,pts[-1],3,(0,0,255),-1)
if len(pts) 1:
#画一条线
对于范围内的I(len(pts)-1):
2.CVCircle (IMG2,PTS [I],5,(0,0,255),-1) # x,y是鼠标点击处的坐标。
cv2.line(img=img2,pt1=pts[i],pt2=pts[i 1],color=(255,0,0),thickness=2)
cv2.imshow(image ,img2)
#创建一个图像和窗口,并将窗口绑定到回调函数
img=cv2.imread(111.jpg )
cv2.namedWindow(image )
cv2.setMouseCallback(image ,draw_roi)
打印([INFO]左键:选择一个点,右键:删除最后选择的点,中键:确定ROI区域)
打印([INFO]按“s”确认选择区域并保存)
打印([信息]按ESC退出)
而True:
key=cv2.waitKey(1)0xFF
如果key==27:
破裂
if key==ord(s):
saved_data={
投资回报率:分
}
joblib.dump(value=saved_data,filename=config.pkl )
打印([信息] ROI坐标已保存在本地。)
破裂
cv2.destroyAllWindows()
绘制不规则多边形:
然后按鼠标中键。
补充
当然Python OpenCV也可以获取RGB图像规则的ROI区域。
下面是实现代码
将cv2作为cv2导入
img=cv2.imread(111.jpg )
#获取图像大小和通道数量
h,w,channel=img.shape
#打印采集的数据
打印(高、宽、通道)
行数=h
cols=w
Roi=img [0:int (rows/2),03360 int(cols/2)]# ROI区域是行和列的一半。
cv2.imshow( ,roi)
cv2.waitKey()
原图:
ROI显示
关于Python OpenCV提取不规则多边形ROI区域的这篇文章到此结束。有关Python OpenCV ROI提取的更多信息,请搜索热门IT软件开发工作室之前的文章或继续浏览下面的相关文章。希望你以后能支持热门的IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。