【问题标题】:How to draw bounding boxes on ROI using opencv如何使用opencv在ROI上绘制边界框
【发布时间】:2020-02-25 14:11:29
【问题描述】:

这是图片:

这些是文本文件中的键值对:

camera: LG G3 D855
reading: 05501
position: 843 1492 572 119
    digit 1: 855 1513 54 98
    digit 2: 971 1512 61 100
    digit 3: 1092 1512 61 100
    digit 4: 1207 1501 64 99
    digit 5: 1341 1499 38 97

我需要在数字周围绘制边界框。这是我的代码:

for i in image_list:
    img = cv2.imread(os.path.join(image_dir,i))
    img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
    matching = [s for s in text_files if i.replace(".jpg","") in s]
    myvars = {}
    with open(str(matching[0])) as myfile:
        for line in myfile:
            print(line)
            name, var = line.partition(":")[::2]
            myvars[name.strip()] = var
    digits1 = myvars["digit 1"].split(" ")
    print(digits1[1])
    pts1 = (digits1[1], digits1[2])
    pts2 = (digits1[1]+digits1[3], digits1[2]+digits1[4])
    cv2.rectangle(img, pts1 , pts2 , (255,0,0), 2)
    cv2.imshow("lalala", img)
    k = cv2.waitKey(0) # 0==wait forever

这给出了这个错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-40-8ed670a7caaf> in <module>
     26     pts1 = (digits1[1], digits1[2])
     27     pts2 = (digits1[1]+digits1[3], digits1[2]+digits1[4])
---> 28     cv2.rectangle(img, pts1 , pts2 , 0, 2)
     29     cv2.imshow("lalala", img)
     30     k = cv2.waitKey(0) # 0==wait forever

TypeError: an integer is required (got type tuple)

我该如何解决这个问题?

【问题讨论】:

    标签: python opencv roi


    【解决方案1】:

    当你拆分一个字符串时,在输出中你会得到一个字符串,但是对于rectangle函数,你需要将这些字符串转换为int。所以你在这些行中有一些错误:

    digits1 = myvars["digit 1"].split(" ")
    print(digits1[1])
    pts1 = (digits1[1], digits1[2])  // a mistake happened in here
    pts2 = (digits1[1]+digits1[3], digits1[2]+digits1[4])  // a mistake happened in here
    

    您应该将这些字符串转换为 int,如下所示:

    pts1 = (int(digits1[1]), int(digits1[2]))
    pts2 = (int(digits1[1])+int(digits1[3]), int(digits1[2])+int(digits1[4]))
    

    【讨论】:

    • 就是这样。花了这么多时间。谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2021-11-26
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多