2015-11-02 2 views
1

Я пытаюсь обработать изображение с opencv.Here мой тестовый код.Ошибка при использовании findContours для обработки изображения в opencv

import numpy as np 
import cv2 
im = cv2.imread('keli.jpg') 
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) 

thresh = cv2.adaptiveThreshold(im,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,7,2) 

contours,hierarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) 
img = cv2.drawContours(im, contours, -1, (0,255,0), 1) 

cv2.imwrite("result.jpg",img) 

А вот ошибка

OpenCV Error: Assertion failed (src.type() == CV_8UC1) in adaptiveThreshold, file /build/buildd/opencv-2.4.8+dfsg1/modules/imgproc/src/thresh.cpp, line 796 
Traceback (most recent call last): 
    File "contour.py", line 6, in <module> 
    thresh = cv2.adaptiveThreshold(im,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,7,2) 
cv2.error: /build/buildd/opencv-2.4.8+dfsg1/modules/imgproc/src/thresh.cpp:796: error: (-215) src.type() == CV_8UC1 in function adaptiveThreshold 

Как я могу решить эту проблему.

+0

Вы видели [это предыдущий вопрос] (http://stackoverflow.com/questions/27014207/failure- к потребительной adaptivethreshold)? – Delgan

ответ

2

adaptiveThreshold нуждается в CV_8UC1 (черно-белое) изображение, так что просто пройти imgray вместо im:

thresh = cv2.adaptiveThreshold(imgray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 7, 2) 
Смежные вопросы