【问题标题】:Extract detected objects and save to different images - OpenCV Python提取检测到的对象并保存到不同的图像 - OpenCV Python
【发布时间】:2018-04-22 18:49:31
【问题描述】:

我有这张图片:

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

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])

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

【问题讨论】:

    标签: python opencv mser


    【解决方案1】:

    您必须尝试不同的参数才能提取所需的内容。

    使用下面的 sn-p,我提取了除了一个 blob 之外的所有内容:

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

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

    【讨论】:

    • 但是通过您所做的提取,您是否能够在图像中保存例如按钮“Habitação”,然后在另一张图像中保存按钮“Climatização”?
    • 是的,除了中间的块(塞古兰卡)之外,我能够保存其中的 4 个
    • 你能告诉我你是怎么做到的吗?你能告诉我你的代码吗?和我的一样吗?
    • 是的,而不是 mser = cv2.MSER_create() 这一行,我添加了一些参数来使用 mser = cv2.MSER_create( _min_area = 5000, _max_variation = 1.0) 选择最相关的 blob。您可以了解更多关于其他参数HERE
    • 好的,我已经测试过了,它有效。但最初我有 mser = cv2.MSER_create() 并且我可以识别所有按钮。那么,为什么我的循环不起作用? :S 谢谢你的帮助!
    猜你喜欢
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 2021-01-31
    • 2021-01-22
    • 1970-01-01
    相关资源
    最近更新 更多