如何解决如何使用opencv检测作物行的结尾?
我正在编写一个程序来检测无人机图像中的裁剪行,我已经成功地使用 opencv 和 python 成功地检测到图像裁剪部分中的裁剪行,但是我现在遇到的问题是如何检测裁剪行的结尾。
图像是一个字段(不能公开共享),我正在尝试检测该字段中的所有行,我可以检测到行,但是目前我只是沿着行从顶部到底部绘制线图片。相反,我想从裁剪行的开始到结束绘制这条线。
即像这样的东西 https://i.stack.imgur.com/WUkg6.jpg(还没有足够的代表发布图片) 但本质上,我需要检测行尾,以便将线绘制到行尾。
关于如何做到这一点的任何想法?
解决方法
使用 Probabilistic Hough Line Transform:
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
frame = cv2.imread("crop.jpg")
# It converts the BGR color space of image to HSV color space
hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
# Threshold of blue in HSV space
lower_green = np.array([21,115,0])
upper_green = np.array([179,255,255])
# preparing the mask to overlay
mask = cv2.inRange(hsv,lower_green,upper_green)
mask = cv2.blur(mask,(5,5))
ret,mask = cv2.threshold(mask,128,cv2.THRESH_BINARY)
edges = cv2.Canny(mask,100,200)
# The black region in the mask has the value of 0,# so when multiplied with original image removes all non-blue regions
result = cv2.bitwise_and(frame,frame,mask = mask)
cdst = cv2.cvtColor(mask,cv2.COLOR_GRAY2BGR)
linesP = cv2.HoughLinesP(edges,1,np.pi / 180,50,None,30)
if linesP is not None:
for i in range(0,len(linesP)):
l = linesP[i][0]
cv2.line(cdst,(l[0],l[1]),(l[2],l[3]),(0,255),3,cv2.LINE_AA)
cv2.imshow("Detected Lines (in red) - Probabilistic Line Transform",cdst)
cv2.imshow('frame',frame)
cv2.imshow('mask',mask)
cv2.imshow('result',result)
cv2.waitKey(-1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。