#image-processing #contour #opencv-python #sobel #image-thresholding
Вопрос:
Я пытаюсь использовать функцию findContours на изображении, на котором я использовал функцию Sobel, и я продолжаю получать следующую ошибку:
error: (-210:Unsupported format or combination of formats) [Start]FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only in function 'cvStartFindContours_Impl'
Код, который я использую, показан ниже:
img = cv2.imread(image_address,0)
sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=31)
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=31)
blended_sobel = cv2.addWeighted(src1=sobelx,alpha=0.5,src2=sobely,beta=0.5,gamma=0)
image,contours, hierarchy = cv2.findContours(blended_sobel, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)
Я попытался использовать функцию цвета, чтобы изменить «blended_sobel» на черно-белое изображение, но безуспешно, а также попытался ограничить изображение, но в итоге получил странный результат, даже когда играл с порогом во всем диапазоне. Я думаю, что проблема может быть связана с тем, что вывод sobel выполнен в каком-то другом формате, но я не могу понять, что это такое и как это исправить.
Для справки, я надеюсь, что этот скрипт сможет подсчитывать бактериальные колонии на слайде (базовый счетчик больших двоичных объектов), чтобы ускорить некоторые лабораторные работы, которые я выполняю. Эти изображения флуоресцентные и очень шумные с изменяющимся фоном, и функция Sobel очень хорошо работает, чтобы очистить изображения и создать красивый большой двоичный объект, который, как я надеялся, сможет найти функция обнаружения контуров.