FindContours поддерживает только изображения 8uC1 и 32sC1

python opencv

14043 просмотра

3 ответа

46 Репутация автора

у меня есть проблема в обнаружении огня мой код:

ret, frame = cap.read()
lab_image = cv2.cvtColor(frame, cv2.COLOR_BGR2LAB)
L , a , b = cv2.split(lab_image)
ret,thresh_L = cv2.threshold(L,70,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
ret,thresh_a = cv2.threshold(a,70,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
ret,thresh_b = cv2.threshold(b,70,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
thresh_image = cv2.merge((thresh_L, thresh_a, thresh_b))
dilation = cv2.dilate(thresh_image, None, iterations=2)
gray = cv2.cvtColor(thresh_image,cv2.COLOR_
(cnts, _) = cv2.findContours(dilation.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for c in cnts:
    if cv2.contourArea(c) < args["min_area"]:
        continue
    (x,y,w,h) = cv2.boundingRecy(c)
    cv2.rectangle(frame,(x,y),(x+w, y+h), (0,255,0), 2)

cv2.imshow('frame1',frame)

и когда я запускаю эту программу, вижу эту ошибку

FindContours support only 8uC1 and 32sC1 images in function cvStartFindContours

Помогите мне, пожалуйста . Тпх

Автор: Mazyar123 Источник Размещён: 18.07.2016 01:58

Ответы (3)


0 плюса

661 Репутация автора

В документе findContoursчетко сказано, что он может позволить себе брать одноканальные изображения в качестве входных данных (т.е. 8uc1 и 32sc1). Но вы отправляете трехканальное изображение. Документацию по findcontours можно найти по адресу http://docs.opencv.org/2.4/modules /imgproc/doc/structural_analysis_and_shape_descriptors.html#findcontours

Автор: hariprasad Размещён: 18.07.2016 03:00

9 плюса

794 Репутация автора

cv2.cvtColor(img, cv2.COLOR_BGR2GRAY);

Используйте эту строку на мате, на котором вы хотите найти контуры, и он должен работать, потому что он преобразует ваше изображение в формат 8UC1 (оттенки серого).

Автор: Dainius Šaltenis Размещён: 18.07.2016 09:09

2 плюса

21 Репутация автора

Для завершения, 8UC1формат 8-байтовый, без знака, один канал. В дополнение к полутоновому масштабированию в cv2 uint8будет также допустим одноканальный формат, если кто-либо создает изображение вне функций cv2 и сталкивается с этой ошибкой.

Автор: Santiago Ruiz-Valdepeñas Размещён: 31.12.2018 08:57
Вопросы из категории :
32x32