不规则ROI形状的透明背景(Python,OpenCV)

时间:2018-01-12 13:24:45

标签: python dictionary

我正在尝试使用MSER轮廓从此图像中提取数字。

src

使用此代码..

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检测结果的整个图像本身):

res0 res1

如何让背景透明?我发现的关于使用Opencv和Python的这个过程的所有内容都是另一个问题:NumPy/OpenCV 2: how do I crop non-rectangular region?

应用建议的代码产生下一个输出,这不是我想要的:

res2

目标是拥有这样的东西:

out

如果在那个级别不可能,至少我怎样才能将黑色区域变为透明?

由于

0 个答案:

没有答案