微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用opencv检测作物行的结尾?

如何解决如何使用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 举报,一经查实,本站将立刻删除。