我正在尝试使用MSER轮廓从此图像中提取数字。
使用此代码..
import cv2
import numpy as np
mser = cv2.MSER_create()
img = cv2.imread('C:\\Users\\Link\\Desktop\\7.png')
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]
poly = cv2.polylines(vis, hulls, 1, (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 i,contour in enumerate(hulls):
cv2.drawContours(mask, [contour], -1, (255, 255, 255), -1)
text_only = cv2.bitwise_and(img, img, mask=mask)
cv2.imwrite('poly{}.png'.format(i), text_only)
cv2.imshow('img', vis)
cv2.waitKey(0)
cv2.imshow('mask', mask)
cv2.waitKey(0)
cv2.imshow('text', text_only)
cv2.waitKey(0)
...我将其作为图像获取(除了作为MSER检测结果的整个图像本身):
如何让背景透明?我发现的关于使用Opencv和Python的这个过程的所有内容都是另一个问题:NumPy/OpenCV 2: how do I crop non-rectangular region?
应用建议的代码产生下一个输出,这不是我想要的:
目标是拥有这样的东西:
如果在那个级别不可能,至少我怎样才能将黑色区域变为透明?
由于