![](/img/trans.png)
[英]Python/OpenCV how to deal with large number of SIFT feaure in .yml file?
[英]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.