Я хотел бы обнаружить линии внутри интересующей области. Мое выходное изображение должно отображать исходное изображение и обнаруженные линии в выбранной области интереса. До сих пор не было проблемой найти линии на исходном изображении или выбрать область интереса, но поиск линий только внутри области интереса не работал. Мой MWE считывает изображение, преобразует его в оттенки серого и позволяет выбрать область интереса, но выдает ошибку, когда 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()
Консоль показывает:
строки = 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 ‹‹ 3) - 1)) + (((1)-1) ‹‹ 3)) в функции cv::HoughLinesProbabilistic
Я предполагаю, что roi
не имеет правильного формата. Я использую Python 3.6 со Spyder 3.2.8. Спасибо за любую помощь!