python opencv边缘提取,python opencv 截取矩形区域

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: