【opencv-python不规则多边形 ROI提取】
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,主要利用鼠标交互进行绘制:
单击左键,选择多边形的点;
单击右键,删除最近一次选择的点;
单击中键,确定ROI区域并可视化。
按”S“键,将多边形ROI区域的点保存到本地”config.pkl"文件中。
【opencv-python不规则多边形 ROI提取】相关推荐
- opencv-python不规则多边形 ROI提取
import cv2import numpy as np import joblibpts = [] # 用于存放点# 统一的:mouse callback function def draw_roi ...
- OpenCV—python 视频分析背景提取与前景提取
文章目录 一.算法 二.代码 MOG2(Mixture of Gaussian) 与 KNN对比 Kmeans 行人检测代码 OpenCV中支持的两种背景提取算法都是 基于模型密度评估,然后在 像素级 ...
- OpenCV—python Gabor滤波(提取图像纹理)
文章目录 一.Gabor滤波简介 二.代码演示 Gabor是一个用于边缘提取的线性滤波器,其频率和方向表达与人类视觉系统类似,能够提供良好的方向选择和尺度选择特性,而且对于光照变化不敏感,因此十分适合 ...
- mat opencv 修改roi_OpenCV中如何提取不规则ROI区域
点击上方"计算机视觉life",选择"星标" 快速获得最新干货 什么是ROI ROI是英文Region Of Interest的三个首字母缩写,很多时候我们对图 ...
- python提取图片感兴趣区域_Python+OpenCV感兴趣区域ROI提取方法
方法一:使用轮廓 步骤1 """src为原图""" ROI = np.zeros(src.shape, np.uint8) #感兴趣区域RO ...
- python怎么编写视觉识别_Python视觉识别--OpenCV色彩空间\图像运算\ROI(四)
(七) 色彩空间 什么是色彩空间,人们建立了多种色彩模型,以一维.二维.三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间 色彩空间有很多,但是常用的色彩空间一共5种:RGB ...
- python二值化 感兴趣区域_Python+OpenCV感兴趣区域ROI提取方法
方法一:使用轮廓 步骤1 """src为原图""" ROI = np.zeros(src.shape, np.uint8) #感兴趣区域RO ...
- OpenCV python(二)图像预处理:改变图像大小 提取感兴趣区域
OpenCV python(二)图像预处理:改变图像大小 && 提取感兴趣区域 一.改变图像大小 1.获取图像宽.高.通道数 2.resize函数 3.案例 二.ROI感兴趣区域 1. ...
- OpenCV+python:ROI与泛洪填充
1,ROI 感兴趣区(Region of Interest,ROI) 是图像的一部分,它通过在图像上选择或使用诸如设定阈值(thresholding) 或者从其他文件(如矢量> 转换获得等方法生 ...
最新文章
- 人工智能:2018年发生了什么变化,2019年又将发生什么变化
- php 7.2 兼容5.5吗,PHP5.5至PHP7.2 新特性整理
- SNMP模型中,网管者、网管代理、网管协议及管理信息库MIB之间的工作流程
- 爬虫笔记12完结篇实例:股票
- Java发邮件-QQ服务器认证
- R语言观察日志(part8)-RMarkdown之其他语言
- 设计模式_第二篇_策略模式
- 【数据结构与算法】Treap的Java实现
- Eclipse run configrations 配置
- Ubuntu18.04 下面安装docker
- 新宠混血儿诞生记--Java+PHP整合
- 考研:研究生考试(十五天学完)之《高等数学-上册/下册》研究生学霸重点知识点总结之目录(函数与极限、导数与微分、微分中值定理与导数、不定积分、定积分及其应用、微分方程、空间解析几何与向量代数、多元函数
- 易捷行云获选国际开源基础设施基金会OIF“双董事” 席位
- 虚拟小镇意识保存~认识脑电波
- idea创建SpringBoot工程
- LaTex 中 控制表格的行距
- 知道IP入侵个人的电脑
- 网络安全9大思维的实战检验
- 意法半导体 STM32F102C4 芯片解密 芯片特性
- replaceAll(xxxx, File.separator); 报错character to be escaped is missing-1
热门文章
- 静态页面笔记包括 html和css
- 支持苹果18W-60W PD快充协议芯片JD6606S
- 【Matplotlib】 移动spines
- 女人要关注男人的几大点
- 红米AC3000、小米cr8806、8808、8809成功刷入openwrt
- css 图片居中_你需掌握的CSS知识都在这了(长文建议收藏,文末有福利)
- 微信复制统计系统-好多粉如何使用?
- Python 输出[m,n]之间既能被3整除又能被7整除的数
- 一对同居男女同一天的日记
- Process finished with exit code -1073740791 (0xC0000409)报错解决方案