【发布时间】:2018-11-07 13:11:06
【问题描述】:
我想检测感兴趣区域内的线条。我的输出图像应显示原始图像和所选 ROI 中检测到的线条。到目前为止,在原始图像中查找线条或选择 ROI 都不是问题,但仅在 ROI 内查找线条不起作用。我的 MWE 读取图像,将其转换为灰度并让我选择 ROI,但当 HoughLinesP 想要读取 roi 时会出错。
import cv2
import numpy as np
img = cv2.imread('example.jpg',1)
gray = cv2.cvtColor(img ,cv2.COLOR_BGR2GRAY)
# Select ROI
fromCenter = False
roi = cv2.selectROI(gray, fromCenter)
# Crop ROI
roi = img[int(roi[1]):int(roi[1]+roi[3]), int(roi[0]):int(roi[0]+roi[2])]
# Find lines
minLineLength = 100
maxLineGap = 30
lines = cv2.HoughLinesP(roi,1,np.pi/180,100,minLineLength,maxLineGap)
for x in range(0, len(lines)):
for x1,y1,x2,y2 in lines[x]:
cv2.line(img,(x1,y1),(x2,y2),(237,149,100),2)
cv2.imshow('Image',img)
cv2.waitKey(0) & 0xFF
cv2.destroyAllWindows()
控制台显示:
lines = cv2.HoughLinesP(roi,1,np.pi/180,100,minLineLength,maxLineGap)
错误:OpenCV(3.4.1) C:\Miniconda3\conda-bld\opencv-suite_1533128839831\work\modules\imgproc\src\hough.cpp:441: 错误:(-215) image.type() == (((0) & ((1
我的假设是roi 的格式不正确。我将 Python 3.6 与 Spyder 3.2.8 一起使用。
感谢您的帮助!
【问题讨论】:
标签: python opencv houghlinesp