微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

提取MSER检测到的区域Python,OpenCV

如何解决提取MSER检测到的区域Python,OpenCV

只需获取每个轮廓的边界框,将其用作ROI即可提取区域并将其保存:

for i, contour in enumerate(hulls):
    x,y,w,h = cv2.boundingRect(contour)
    cv2.imwrite('{}.png'.format(i), img[y:y+h,x:x+w])

解决方法

我无法在此图像中通过MSER提取检测到的区域:

img

我要做的是保存绿色边界区域。我的实际代码是这样的:

import cv2
import numpy as np

mser = cv2.MSER_create()
img = cv2.imread('C:\\Users\\Link\\img.tif')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
vis = img.copy()
regions,_ = mser.detectRegions(gray)
hulls = [cv2.convexHull(p.reshape(-1,1,2)) for p in regions]
cv2.polylines(vis,hulls,(0,255,0))

mask = np.zeros((img.shape[0],img.shape[1],1),dtype=np.uint8)
mask = cv2.dilate(mask,np.ones((150,150),np.uint8))
for contour in hulls:
    cv2.drawContours(mask,[contour],-1,(255,255),-1)

    text_only = cv2.bitwise_and(img,img,mask=mask)


cv2.imshow('img',vis)
cv2.waitKey(0)
cv2.imshow('mask',mask)
cv2.waitKey(0)
cv2.imshow('text',text_only)
cv2.waitKey(0)

预期结果应该是像图像一样的ROI。

出

源图像:

src

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。