#python #opencv
Вопрос:
Я пытаюсь использовать обнаружение краев с помощью opencv для обнаружения некоторых подэлементов изображения, однако, когда я запускаю изображение против своей функции, я просто получаю черное изображение. Кто-нибудь может, пожалуйста, объяснить мне, что я могу делать неправильно?
def contourSegmentation(path_to_images, image_name, path_to_save_segments): img = cv2.imread(path_to_images image_name) img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_blurred = cv2.GaussianBlur(img_gray, (25, 25), cv2.BORDER_DEFAULT) v = np.median(img_gray) sigma=0.33 lower = int(max(0, (1.0 - sigma) * v)) upper = int(min(255, (1.0 sigma) * v)) img_canny = cv2.Canny(img_blurred, lower, upper) scale_percent = 30 # percent of original size width = int(img_canny.shape[1] * scale_percent / 100) height = int(img_canny.shape[0] * scale_percent / 100) dim = (width, height) # resize image resized = cv2.resize(img_canny, dim, interpolation = cv2.INTER_AREA) cv2.imshow("canny", resized) cv2.waitKey(0) cv2.DestroyAllWindows() kernel = np.ones((5,5), np.uint8) dilate = cv2.dilate(img_canny, kernel, iterations=1) contours = cv2.findContours(dilate, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) print(contours) contours = contours[0] if len(contours) == 2 else contours[1] image_number = 0 print(len(contours)) for contour in contours: x,y,w,h = cv2.boundingRect(contour) cv2.rectangle(image, (x, y), (x w, y h), (36,255,12), 2) ROI = original[y:y h, x:x w] cv2.imwrite("/home/jr/Downloads/Segments/ROI.png", ROI) image_number = 1
Комментарии:
1. Вы не определили «оригинал» или «изображение». Откуда они берутся? Пожалуйста, покажите весь соответствующий код. Предлагаю вам просмотреть каждый шаг, чтобы найти, где у него есть проблемы. У тебя есть какие-нибудь контуры?