为什么我这串代码检测不出每个窗口的数量,都是显示为0的,有人能帮我看看怎么改吗
import cv2
import numpy as np
def detect_item_quantity(image):
# 将图像转换为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 对灰度图进行二值化处理
_, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
# 寻找轮廓
contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 遍历轮廓,计算每个货窗中物品的数量
item_quantities = []
for contour in contours:
# 计算轮廓的面积
area = cv2.contourArea(contour)
# 假设物品的面积范围
if area > 200 and area < 800:
item_quantities.append(1)
elif area >= 800:
item_quantities.append(2)
else:
item_quantities.append(0)
return item_quantities
image = cv2.imread(r'E:\zuoye\3.jpg')
quantities = detect_item_quantity(image)
for i, quantity in enumerate(quantities):
x = i * 100 + 20
y = 50
cv2.putText(image, str(quantity), (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)
cv2.imshow('Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
python调试三板斧 https://ask.csdn.net/questions/7908322/54130133
你的binary图不是你以为的样子 保存下来,看是否根本无法用你现在写的这个面积阈值去判断
你把运行日志打印出来发给我
不知道你这个问题是否已经解决, 如果还没有解决的话:问题描述:
我正在使用Opencv进行图像处理,并尝试检测每个窗口中物品的数量。然而,我的代码无法正确检测数量,每个窗口都显示为0。我希望您能帮助我查找问题所在并提供一些优化建议。
以下是我的代码实现步骤:
我希望您能够为我的代码提供一些优化建议,以确保能够正确检测每个窗口中物品的数量。感谢您的帮助!
提示:
您可以尝试在调用物品检测函数前调整图像的亮度和对比度,以提高图像质量。同时,您还可以在调用检测函数之前对图像进行预处理,例如进行边缘检测或滤波。此外,您需要检查您的检测函数是否正确并且返回正确的数量。最后,在标注物品数量时,建议使用绿色或红色框标记物品,并在每个框上方显示数字。