Python选择ROI OpenCV

时间:2018-10-02 09:23:45

标签: python opencv

Sample Image

你好

我用python创建了一个应用程序,该应用程序选择图像的感兴趣区域(ROI),并对其进行记录和标记。但是我对每张图片的投资回报率有一个限制,有人知道如何对每张图片选择多种投资回报率吗?同样在附加的图像上,如您所见,我有多个窗口,我希望它位于一个具有不同选项的窗口中,这种应用程序使用什么软件包。

这是我在使用opencv2的python中的代码。预先感谢您的帮助

  for image in filelist:
    img = cv2.imread(image)
    fromCenter = False
    r = cv2.selectROI(img, fromCenter)

    lbl = simpledialog.askstring("Image Label", "Please Enter Label")

    result = eTree.SubElement(results, "Image")

    path = eTree.SubElement(result, 'Path')
    roi = eTree.SubElement(result, 'ROI')
    label = eTree.SubElement(result, 'Label')

    path.text = str(image)
    roi.text = str(r)
    label.text = str(lbl)

    tree = eTree.ElementTree(results)
    i = i + 1
    if i == count:
        format = [('XML Files', '*.xml'), ('All Files', '*.*')]
        save = filedialog.asksaveasfilename(filetype=format, defaultextension='*.xml')
        tree.write(save, xml_declaration=True, encoding='utf-8', method="xml")

2 个答案:

答案 0 :(得分:1)

至少在问题的第一部分,您是否考虑过尝试使用set而不是[Order(productId: 1, userId: 2, qty: 25), Order(productId: 2, userId: 1, qty: 30), Order(productId: 1, userId: 1, qty: 5), Order(productId: 3, userId: 1, qty: 20), Order(productId: 2, userId: 2, qty: 5)] ?当图像窗口打开时,您选择第一个ROI,然后按Enter,然后选择第二个ROI,然后按Enter等。完成后,请按退出键。它返回每个ROI的x,y,w,h。请注意,您将必须相应地更改代码,但是它将允许您选择多个ROI。

输入图像:

enter image description here

示例:

cv2.createROIs()

结果:

enter image description here

enter image description here

enter image description here

答案 1 :(得分:0)

对于自定义 ROI,您可以使用 EasyROI。支持矩形、直线、圆形和多边形。

使用:

pip install EasyROI

from EasyROI import EasyROI  
roi_helper = EasyROI()  
roi = roi_helper.draw_rectangle(frame, quantity=2)