繁体   English   中英

如何处理 opencv python 中没有值?

[英]How to deal with no values in opencv python?

最近我一直在使用 canny 和轮廓进行电缆位置/高度近似。 当在 roi 中找不到区域时,它将打印出“错误”的文本。 但是当我执行elif area < 0:然后打印出一些文本时,轮廓区域不返回任何内容/终端中没有打印任何值,因此不显示“错误”文本。 基本上,当电缆超出 roi 时,它会显示文本“错误”,但当它超出 roi 时,区域在开始时不返回任何值。 如何处理此类问题?

for c in contours:
    area = cv.contourArea(c)
    print(area)
    if area > 3100 and area <10000:
        #drawcontour = cv.drawContours(img, contours, -1, (0,255,0), 2)
        x,y,w,h = cv.boundingRect(c)
        center_of_rect = ((x + x + w)/2, (y + y + h)/2)
        cv.circle(img, (int(center_of_rect[0]),int(center_of_rect[1])), 5, (0,255,255),-1)
        words = f"approx position = {center_of_rect[1]}"
        #print(int(center_of_rect[1])) 
        rect = cv.rectangle(img, (x,y), (x+w,y+h), (0,0,255),2)
        cv.putText(img, words, (x,y-5), cv.FONT_HERSHEY_SIMPLEX, 0.5, (0,0,255), 1)
    elif area < 0:
        cv.putText(img, "Error", (20,50), cv.FONT_HERSHEY_SIMPLEX, 1, (0,0,255), 2)

我试过elif area is None:还是不行

在使用 area 之前,您需要检查它是否存在(否则,打印错误):

for c in contours:
    area = cv.contourArea(c)
    if area:
        print(area)
        if area > 3100 and area <10000:
            #drawcontour = cv.drawContours(img, contours, -1, (0,255,0), 2)
            x,y,w,h = cv.boundingRect(c)
            center_of_rect = ((x + x + w)/2, (y + y + h)/2)
            cv.circle(img, (int(center_of_rect[0]),int(center_of_rect[1])), 5, (0,255,255),-1)
            words = f"approx position = {center_of_rect[1]}"
            #print(int(center_of_rect[1])) 
            rect = cv.rectangle(img, (x,y), (x+w,y+h), (0,0,255),2)
            cv.putText(img, words, (x,y-5), cv.FONT_HERSHEY_SIMPLEX, 0.5, (0,0,255), 1)
        elif area < 0:
            cv.putText(img, "Error", (20,50), cv.FONT_HERSHEY_SIMPLEX, 1, (0,0,255), 2)
    else:
        cv.putText(img, "Error", (20,50), cv.FONT_HERSHEY_SIMPLEX, 1, (0,0,255), 2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM