【发布时间】:2014-10-25 11:33:03
【问题描述】:
我已经取出了这张图片的激光曲线:
(来源:hostingpics.net)
现在,我正在尝试获得一组点(越多越好),它们位于这条曲线的中间。 我试图将图像分成垂直条纹,然后检测质心。 但是它并没有计算很多点,而且一点也不令人满意!
img = cv2.Canny(img,50,150,apertureSize = 3)
sub = 100
step=int(img.shape[1]/sub)
centroid=[]
for i in range(sub):
x0= i*step
x1=(i+1)*step-1
temp = img[:,x0:x1]
hierarchy,contours,_ = cv2.findContours(temp, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
if contours <> []:
for i in contours :
M = cv2.moments(i)
if M['m00'] <> 0:
centroid.append((x0+int(M['m10']/M['m00']),(int(M['m01']/M['m00']))))
我也试过cv2.fitLine(),但也不满意。
我怎样才能有效地检测到这条曲线中间的点?问候。
【问题讨论】:
-
这里是 3D 扫描仪的描述和 MATLAB 脚本,就像你想做的那样(我想)。 instructables.com/id/3-D-Laser-Scanner
-
谢谢,但我没有使用完全相同的过程。我只想找到这条粗红色曲线的平均值。有什么办法吗?
标签: python opencv detection curve