如何解决提取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提取检测到的区域:
我要做的是保存绿色边界区域。我的实际代码是这样的:
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。
源图像:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。