python - 提取检测到的对象并保存到不同的图像 - OpenCV Python

标签 python opencv mser

我有这张图片:

enter image description here

我想提取所有按钮并将它们保存在不同的图像中。到目前为止,我有这段代码:

import numpy as np
import cv2

img = cv2.imread('C:\\Users\\Rita\\Desktop\\ISCTE\\2_ano\\Tese\MSER\\1_Exemplo\\botoes.PNG',1)

vis = img.copy()
mser = cv2.MSER_create()
vis = img.copy()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

regions, _ = mser.detectRegions(gray)

hulls = [cv2.convexHull(p.reshape(-1, 1, 2)) for p in regions]
cv2.polylines(vis, hulls, 1, (0, 255, 0))



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

但它并没有以正确的方式分开。有人知道我在代码中缺少什么吗?或者最好的方法是什么?

最佳答案

为了提取您需要的内容,您必须尝试使用​​不同的参数。

使用下面的代码片段,我提取了除一个 blob 之外的所有内容:

mser = cv2.MSER_create( _min_area = 5000, _max_variation = 1.0)

enter image description here

尝试改变 THIS LINK 中的其他参数以获得更好的结果。

关于python - 提取检测到的对象并保存到不同的图像 - OpenCV Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49969550/

相关文章:

c++ - 暂停时编辑轨迹栏值

python - 在 MSER 检测到的区域上执行凸包时出错

python - 改进文本区域检测(OpenCV、Python)

python - tkinter:self.master.destroy() 删除两个小部件

python - 加入图像后找到新的坐标

python - 如何使用方法名分配给变量来动态调用类中的方法

opencv - C++无法使用Opencv打开pbm文件

opencv - 在 OpenCV 2.4.x 中初始化 MSER 的参数的确切含义?

python - 从 Azure 函数获取托管身份访问 token 时出错

python - 使用opencv检测图像中折线的顶点