open cv error: (-215) scn == 3 || scn == 4 в функции cvtColor

Я сейчас в Ubuntu 14.04, используя python 2.7 и cv2.

Когда я запускаю этот код:

import numpy as np import cv2 img = cv2.imread('2015-05-27-191152.jpg',0) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 

он возвращает:

  File "face_detection.py", line 11, in <module> gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.error: /home/arthurckl/Desktop/opencv-3.0.0-rc1/modules/imgproc/src/color.cpp:7564: error: (-215) scn == 3 || scn == 4 in function cvtColor 

Я уже искал здесь, и один ответ сказал, что я могу загрузить свою фотографию неправильно, потому что она должна иметь 3 измерения: строки, столбцы и глубину.

Когда я печатаю img.shape, он возвращает только два числа, поэтому я должен делать это неправильно. Но я не знаю, как правильно загружать мою фотографию.

7 Solutions collect form web for “open cv error: (-215) scn == 3 || scn == 4 в функции cvtColor”

Дайте полный путь изображения с помощью косой черты. Он решил ошибку для меня.

Например

 import numpy as np import cv2 img = cv2.imread('C:/Python34http://img.rupython.com/python2015-05-27-191152.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 

Кроме того, если вы даете 0 во втором параметре при загрузке изображения с использованием cv2.imread чем нет необходимости конвертировать изображение с помощью cvtColor , оно уже загружается как изображение в оттенках серого, например.

 import numpy as np import cv2 gray = cv2.imread('C:/Python34http://img.rupython.com/python2015-05-27-191152.jpg',0) 

Пожалуйста, установите как ниже

 img = cv2.imread('2015-05-27-191152.jpg',1) // Change Flag As 1 For Color Image //or O for Gray Image So It image is //already gray 
 img = cv2.imread('2015-05-27-191152.jpg',0) 

Вышеприведенная строка кода считывает ваше изображение в цветовой модели в оттенках серого из-за добавления 0 в конце. И если вы снова попытаетесь преобразовать уже серое изображение в серое изображение, оно покажет эту ошибку.

Поэтому либо используйте стиль выше, либо используйте код под заголовком:

 img = cv2.imread('2015-05-27-191152.jpg') gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 

Только передать имя изображения, не нужно 0 :

 img=cv2.imread('sample.jpg') 

Первое, что вы должны проверить, это то, существует ли изображение в корневом каталоге или нет. Это в основном связано с изображением с высотой = 0. Это означает, что cv2.imread(imageName) не читает изображение.

Вот что я заметил, когда использовал свои собственные наборы изображений в формате .jpg . В сценарии образца, доступном в документе Opencv , обратите внимание на то, что он имеет неправильное значение и обрезает линии crop the image как показано ниже:

 # undistort dst = cv2.undistort(img, mtx, dist, None, newcameramtx) # crop the image x,y,w,h = roi dst = dst[y:y+h, x:x+w] cv2.imwrite('calibresult.jpg',dst) 

Итак, когда мы запускаем код в первый раз, он выполняет строку cv2.imwrite('calibresult.jpg',dst) сохраняя изображение calibresult.jpg в текущем каталоге. Итак, когда я запускал код в следующий раз, наряду с моими наборами образцов изображений, которые я использовал для калибровки камеры в формате jpg, код также попытался рассмотреть это недавно добавленное изображение calibresult.jpg из-за которого возникла ошибка

 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 

Я сделал это: я просто удалил это вновь созданное изображение после каждого прогона или, наоборот, изменил тип изображения, чтобы сказать png или тип tiff . Это решило проблему. Убедитесь, что вы вводите и записываете calibresult того же типа. Если это так, просто измените тип.

Попробуйте это в строке 11, работая для меня. Я думаю, что вам не хватает параметров функции detectMultiScale ()

 faces = face_cascade.detectMultiScale(gray, 1.3, 5) 
  • Захват одиночной картинки с opencv
  • Python Open CV2 Маска обнаружения цвета для пиксельных координат
  • QueryFrame не продвигает фрейм в OpenCV
  • не удалось обнаружить какие-либо белые пятна - opencv python
  • Создание видео с opencv и ffmpeg. Как найти правильный цветной формат?
  • Нарисовать самую длинную линию в контурах OPENCV
  • python opencv imwrite ... не могу найти параметры
  • Использовать cv.CaptureFromCAM в Django
  • Python - лучший язык программирования в мире.