opencv-python不规则多边形 ROI提取

import cv2import numpy as np
import joblibpts = []  # 用于存放点# 统一的:mouse callback function
def draw_roi(event, x, y, flags, param):img2 = img.copy()if event == cv2.EVENT_LBUTTONDOWN:  # 左键点击,选择点pts.append((x, y))if event == cv2.EVENT_RBUTTONDOWN:  # 右键点击,取消最近一次选择的点pts.pop()if event == cv2.EVENT_MBUTTONDOWN:  # 中键绘制轮廓mask = np.zeros(img.shape, np.uint8)points = np.array(pts, np.int32)points = points.reshape((-1, 1, 2))# 画多边形mask = cv2.polylines(mask, [points], True, (255, 255, 255), 2)mask2 = cv2.fillPoly(mask.copy(), [points], (255, 255, 255))  # 用于求 ROImask3 = cv2.fillPoly(mask.copy(), [points], (0, 255, 0))  # 用于 显示在桌面的图像show_image = cv2.addWeighted(src1=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:# 将pts中的最后一点画出来cv2.circle(img2, pts[-1], 3, (0, 0, 255), -1)if len(pts) > 1:# 画线for i in range(len(pts) - 1):cv2.circle(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)
print("[INFO] 单击左键:选择点,单击右键:删除上一次选择的点,单击中键:确定ROI区域")
print("[INFO] 按‘S’确定选择区域并保存")
print("[INFO] 按 ESC 退出")while True:key = cv2.waitKey(1) & 0xFFif key == 27:breakif key == ord("s"):saved_data = {"ROI": pts}joblib.dump(value=saved_data, filename="config.pkl")print("[INFO] ROI坐标已保存到本地.")break
cv2.destroyAllWindows()

多边形ROI,主要利用鼠标交互进行绘制:

  1. 单击左键,选择多边形的点;

  2. 单击右键,删除最近一次选择的点;

  3. 单击中键,确定ROI区域并可视化。

  4. 按”S“键,将多边形ROI区域的点保存到本地”config.pkl"文件中。

【opencv-python不规则多边形 ROI提取】相关推荐

  1. opencv-python不规则多边形 ROI提取

    import cv2import numpy as np import joblibpts = [] # 用于存放点# 统一的:mouse callback function def draw_roi ...

  2. OpenCV—python 视频分析背景提取与前景提取

    文章目录 一.算法 二.代码 MOG2(Mixture of Gaussian) 与 KNN对比 Kmeans 行人检测代码 OpenCV中支持的两种背景提取算法都是 基于模型密度评估,然后在 像素级 ...

  3. OpenCV—python Gabor滤波(提取图像纹理)

    文章目录 一.Gabor滤波简介 二.代码演示 Gabor是一个用于边缘提取的线性滤波器,其频率和方向表达与人类视觉系统类似,能够提供良好的方向选择和尺度选择特性,而且对于光照变化不敏感,因此十分适合 ...

  4. mat opencv 修改roi_OpenCV中如何提取不规则ROI区域

    点击上方"计算机视觉life",选择"星标" 快速获得最新干货 什么是ROI ROI是英文Region Of Interest的三个首字母缩写,很多时候我们对图 ...

  5. python提取图片感兴趣区域_Python+OpenCV感兴趣区域ROI提取方法

    方法一:使用轮廓 步骤1 """src为原图""" ROI = np.zeros(src.shape, np.uint8) #感兴趣区域RO ...

  6. python怎么编写视觉识别_Python视觉识别--OpenCV色彩空间\图像运算\ROI(四)

    (七) 色彩空间 什么是色彩空间,人们建立了多种色彩模型,以一维.二维.三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间 色彩空间有很多,但是常用的色彩空间一共5种:RGB ...

  7. python二值化 感兴趣区域_Python+OpenCV感兴趣区域ROI提取方法

    方法一:使用轮廓 步骤1 """src为原图""" ROI = np.zeros(src.shape, np.uint8) #感兴趣区域RO ...

  8. OpenCV python(二)图像预处理:改变图像大小 提取感兴趣区域

    OpenCV python(二)图像预处理:改变图像大小 && 提取感兴趣区域 一.改变图像大小 1.获取图像宽.高.通道数 2.resize函数 3.案例 二.ROI感兴趣区域 1. ...

  9. OpenCV+python:ROI与泛洪填充

    1,ROI 感兴趣区(Region of Interest,ROI) 是图像的一部分,它通过在图像上选择或使用诸如设定阈值(thresholding) 或者从其他文件(如矢量> 转换获得等方法生 ...

最新文章

  1. 人工智能:2018年发生了什么变化,2019年又将发生什么变化
  2. php 7.2 兼容5.5吗,PHP5.5至PHP7.2 新特性整理
  3. SNMP模型中,网管者、网管代理、网管协议及管理信息库MIB之间的工作流程
  4. 爬虫笔记12完结篇实例:股票
  5. Java发邮件-QQ服务器认证
  6. R语言观察日志(part8)-RMarkdown之其他语言
  7. 设计模式_第二篇_策略模式
  8. 【数据结构与算法】Treap的Java实现
  9. Eclipse run configrations 配置
  10. Ubuntu18.04 下面安装docker
  11. 新宠混血儿诞生记--Java+PHP整合
  12. 考研:研究生考试(十五天学完)之《高等数学-上册/下册》研究生学霸重点知识点总结之目录(函数与极限、导数与微分、微分中值定理与导数、不定积分、定积分及其应用、微分方程、空间解析几何与向量代数、多元函数
  13. 易捷行云获选国际开源基础设施基金会OIF“双董事” 席位
  14. 虚拟小镇意识保存~认识脑电波
  15. idea创建SpringBoot工程
  16. LaTex 中 控制表格的行距
  17. 知道IP入侵个人的电脑
  18. 网络安全9大思维的实战检验
  19. 意法半导体 STM32F102C4 芯片解密 芯片特性
  20. replaceAll(xxxx, File.separator); 报错character to be escaped is missing-1

热门文章

  1. 静态页面笔记包括 html和css
  2. 支持苹果18W-60W PD快充协议芯片JD6606S
  3. 【Matplotlib】 移动spines
  4. 女人要关注男人的几大点
  5. 红米AC3000、小米cr8806、8808、8809成功刷入openwrt
  6. css 图片居中_你需掌握的CSS知识都在这了(长文建议收藏,文末有福利)
  7. 微信复制统计系统-好多粉如何使用?
  8. Python 输出[m,n]之间既能被3整除又能被7整除的数
  9. 一对同居男女同一天的日记
  10. Process finished with exit code -1073740791 (0xC0000409)报错解决方案