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

本文介绍了Python结合OpenCV进行感兴趣区域(ROI)提取的两种方法:一是利用轮廓提取和图像交运算;二是直接通过图像坐标截取ROI。详细步骤包括图像灰度化、自适应阈值、轮廓检测等操作。
摘要由CSDN通过智能技术生成

Python+OpenCV感兴趣区域ROI提取方法

方法一:使用轮廓

步骤1

"""src为原图"""

ROI = np.zeros(src.shape, np.uint8) #感兴趣区域ROI

proimage = src.copy() #复制原图

"""提取轮廓"""

proimage=cv2.cvtColor(proimage,cv2.COLOR_BGR2GRAY) #转换成灰度图

proimage=cv2.adaptiveThreshold(proimage,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY_INV,7,7)

proimage,contours,hierarchy=cv2.findContours(proimage,cv2.RETR_CCOMP,cv2.CHAIN_APPROX_NONE) #提取所有的轮廓

步骤2

"""ROI提取"""

cv2.drawContours(ROI, contours, 1,(255,255,255),-1) #ROI区域填充白色,轮廓ID1

ROI=cv2.cvtColor(ROI,cv2.COLOR_BGR2GRAY) #转换成灰度图

ROI=cv2.adaptiveThreshold(ROI,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY_INV,7,7) #自适应阈值化

imgroi= cv2.bitwise_and(ROI,proimage) #图像交运算 ,获取的是原图处理——提取轮廓后的ROI

你可以使用 OpenCV 库来提取感兴趣区域ROI)。 首先,你需要检测多边形的轮廓。可以使用 OpenCV 的 findContours 函数来实现这一点。这个函数会返回图像中所有轮廓的列表。 然后,你可以使用 drawContours 函数将轮廓绘制在一个空白图像上。这个图像将作为掩膜,在后续的步骤中将被用来提取感兴趣区域。 接下来,你可以使用 bitwise_and 函数将原始图像掩膜相与,从而提取感兴趣区域。 以下是一个简单的示例代码: ```python import cv2 import numpy as np # 读取图像 img = cv2.imread('image.png') # 将图像转为灰度 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 二值化图像 ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 寻找轮廓 contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 创建空白图像作为掩膜 mask = np.zeros_like(gray) # 绘制轮廓到掩膜上 cv2.drawContours(mask, contours, -1, (255), thickness=cv2.FILLED) # 提取感兴趣区域 roi = cv2.bitwise_and(img, img, mask=mask) # 显示结果 cv2.imshow('ROI', roi) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个示例中,我们读取了一张图像,将其转为灰度图像,然后进行二值化处理。接着,找到图像中的轮廓,并将轮廓绘制到掩膜上。最后,我们使用掩膜提取感兴趣区域,并显示结果。 你可以根据你的具体需求调整代码中的参数,如阈值、轮廓检测方法等。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值