2016-04-20 4 views
0

Traceback (most recent call last): File "C:/Users/michail.gakas/Desktop/python scripts/counters.1py.py", line 10, in imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) error: C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\imgproc\src\color.cpp:7456: error: (-215) scn == 3 || scn == 4 in function cv::ipp_cvtColorПочему у меня проблема с функцией cv2.findContours?

Мой код:

import numpy as np 
import cv2 

img = cv2.imread('star.jpg',0) 

imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
ret,thresh = cv2.threshold(imgray,127,255,0) 
im2, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) 
#cv2.waitKey(0) 
#cv2.destroyAllWindows() 

Я использую Python 2.7 CV3, но я установил CV2 до того

+0

либо нагрузки, как цветное изображение и преобразовать в оттенки серого или нагрузки в оттенках серого и Dont попытаться преобразовать от цвета к серому – Micka

+0

Traceback (самый последний вызов последнего): файла «C: \ Users \ michail.gakas \ Desktop \ python scripts \ counters.1py.py ", строка 12, в im2, контуры, иерархия = cv2.findContours (thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) ошибка: C: \ builds \ master_PackSlaveAddon-win64-vc12 -static \ opencv \ modules \ core \ src \ array.cpp: 2494: error: (-206) Неопознанный или неподдерживаемый тип массива в функции cvGetMat – moli

ответ

1

Я не OpenCV со мной прямо сейчас, но от того, что я вижу, что вы сделали

img = cv2.imread("star.jpg", 0) 

но то, что вы, вероятно, хотел сделать, это открыть его в цвете, как:

img = cv2.imread("star.jpg", 1) 

или открыть «без изменений», как:

img = cv2.imread("star.jpg", -1) 

То, что вы сделали, вы открыли изображение в режиме градаций серого, а затем попытался преобразовать его в оттенки серого. Эта ошибка на самом деле утверждает, что assert не нашел изображения с 3 или 4 каналами, а BGR2GRAYSCALE переходит из изображения jpg (3 канала) или цветного PNG изображения (4 канала, 1 для альфа иногда) в 1-канальное изображение в оттенках серого. Альфа-канал отбрасывается в этой функции. Pls упрощает вашу жизнь и использует официальные флаги cv2 для упрощения чтения кода.

cv2.IMREAD_UNCHANGED (<0) loads the image as is (including the alpha channel if present) 
cv2.IMREAD_GRAYSCALE (0) loads the image as an intensity one 
cv2.IMREAD_COLOR (>0) loads the image in the RGB format 
Смежные вопросы