我计划在Raspberry pi 3上使用Opencv和相机来计算下图中的线条
它将用于生产线程的机器中。如果一个(或多个)丢失,它将停止机器。
现在我想知道怎么做......?
感谢您的建议!
修改
P.S。 我使用了cv2.findContours(来自Jeru Luke的回答)。 我在相机前面放了一张带有黑线的A4纸。我在循环中工作正常但是...我在表格上有43行。当相机检测到一些差异时,我将结果写入文件。有时我有710,800,67等。
请使用https://www.dropbox.com/s/jnn4w8mq3rrtppo/bledy.txt?dl=0
的值查看文件行....错误是permanet几秒钟。当我有43,43,43,43,44,43,43,43(一个是错的)时,Tere注意到了wronge因为我在错误之前看了几个值。但是,当数百个不好的价值观我不知道......
答案 0 :(得分:1)
使用 Hough Lines Transform 来检测线条,并计算您找到的计数。
这里有一个关于你的问题的教程(因为你没有指定语言,这是在python中)。
答案 1 :(得分:1)
我有一些比较简单的东西。它不涉及任何for
循环因此需要更少的时间。在找到合适的阈值后,我使用了计算图像轮廓的概念。我通过反复试验找到了完美的门槛。
我在python中有这个方法:
import cv2
path = 'C:/Users/Desktop/stack/contour/'
img = cv2.imread(path + 'lines.png', 0)
cv2.imshow('original Image', img)
ret, thresh = cv2.threshold(img, 80, 255, cv2.THRESH_BINARY_INV)
cv2.imshow('thresh1', thresh)
_, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
print('Number of lines:', len(contours))
cv2.waitKey(0)
cv2.destroyAllWindows()
注意:强>
for
个循环。也不需要计算像素变化的数量。每个假定的线都变成轮廓。使用`len(等高线)可以获得存在的行数。