Я новичок в компьютерных видениях.Поэтому я не знаю внутреннюю реализацию следующего кода, из-за которой я не могу отладить ошибку.Может ли кто-нибудь указать на ошибку в следующем коде?
Код преобразует образ парковки в двоичный файл, используя комбинацию Box Filter и матрицы ядра Edge Detection.И тогда я пытаюсь найти контуры.Теперь я знаю, что контур обнаружен в двоичном изображении, которое можно получить с помощью функции cv2.threshold (), не является ли изображение, полученное из матрицы фильтра и ядра, также двоичным изображением?
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('parking spot1.jpg',1)
k3 = np.array(([-1,-1,-1],[-1,8,-1],[-1,-1,-1]))
low_filter = cv2.boxFilter(img, -1, (4,4))
output_low = cv2.filter2D(low_filter, -1, k3)
plt.subplot(2, 2, 1)
plt.imshow(img)
plt.title('Original Image')
plt.subplot(2, 2, 2)
plt.imshow(output_low)
plt.title('matrix1')
plt.show()
img, ret, heirarchy = cv2.findContours(output_low, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
Что делатьты думаешь я не так делаю?Я был бы очень признателен за объяснение или направление в этом вопросе.
Заранее большое спасибо.
Ошибка, с которой я столкнулся:
Traceback (последний вызов был последним) в () ----> 1 img, ret, heirarchy = cv2.findContours (output_low, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
ошибка: OpenCV (3.4.3) /io/opencv/modules/imgproc/src/contours.cpp:199: ошибка: (-210: неподдерживаемый формат или комбинация форматов) [Пуск] FindContours поддерживает только изображения CV_8UC1 в режиме! = CV_RETR_FLOODFILL в противном случае поддерживает изображения CV_32SC1 только вфункция 'cvStartFindContours_Impl