2017-02-09 4 views
0

В настоящее время я читаю код примера на веб-сайте OpenCV, чтобы найти контуры в изображении.Поиск контуров с порогового изображения

я впервые прочитал изображение и преобразовать в шкале серого:

img = cv2.imread('/.../.../four.png') 
imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 

Я затем преобразовать изображение в двоичном путем применения порога:

thresh = cv2.threshold(imgray, 127, 255, 0, cv2.THRESH_BINARY) 

Согласно учебники .. я должен затем быть в состоянии назвать findContours() на пороговом изображении:

contours = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 

При попытке выполнить этот код по какой-то причине я получаю ошибку типа:

contours = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) TypeError: image is not a numerical tuple

Не знаете почему?

Вот полный код для облегчения читаемости:

img = cv2.imread('/Users/samtozer/Desktop/four.png') 
imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
thresh = cv2.threshold(imgray, 127, 255, 0, cv2.THRESH_BINARY) 
contours = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 

cv2.drawContours(img, contours, -1, (0,255,0), 3) 

Хотите знать, если кто-то испытал эту проблему раньше? И если да, то что происходит не так XD

Заранее спасибо

+0

использовать это: 'контуры _ = cv2.findContours (молотите, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) ' –

+0

Просто попробовал, что, все еще получая такое же ошибочное значение –

+0

, можете ли вы напечатать контуры? –

ответ

1

Как уже упоминалось в комментариях есть два вопроса, которые вы должны обратить внимание:

Возвращение типа cv2.findContours()

Существует два значения возврата в cv2.findContours():

  • Контуры, присутствующие в i маг
  • Иерархии этих контуров

возвращаемого типа cv2.threshold()

Есть два возвращаемых значений в cv2.threshold():

  • Возвращаемого значение. (Она возвращает float значения порогового значения, которое используется для классификации значения пикселов)
  • порогового изображения
+2

. Стоит упомянуть, что информация о' findContours' действительна для OpenCV 2.4.x. В OpenCV 3.x [он возвращает 3 значения] (http://docs.opencv.org/3.2.0/d4/d73/tutorial_py_contours_begin.html). –

+0

@ DanMašek благодарит за это: D –

Смежные вопросы