2015-04-02 3 views
4

Я следил за this tutorial отслеживания объектов OpenCV и сумел заставить код работать на моем ноутбуке, как в Windows, используя Visual Studio, так и на моей виртуальной машине Ubuntu (с использованием CMake). Теперь я пытаюсь запустить его на моей малине Pi (работает Raspbian). cmake . и make команды, кажется, работает нормально, но когда я пытаюсь запустить исполняемый файл, я получаю следующее сообщение об ошибке:openCV Ошибка: утверждение не выполнено (scn == 3 || scn == 4) на Raspberry Pi

[email protected] ~/Desktop/Track $ ./TrackObj 
init done 
opengl support available 
OpenCV Error: Assertion failed ((scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F)) in cvtColor, file /home/pi/opencv-2.4.10/modules/imgproc/src/color.cpp, line 3961 
terminate called after throwing an instance of 'cv::Exception' 
    what(): /home/pi/opencv-2.4.10/modules/imgproc/src/color.cpp:3961: error: (-215) (scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F) in function cvtColor 

Aborted 

Я посмотрел на this question и похож на него, но это не помогло мне решить эту проблему.

Исходный код доступен здесь:

objectTrackingTutorial.cpp

Fruit.cpp

Fruit.h

Я слышал, что проблема может быть с драйверами камеры или камеры, так что я попытался с помощью USB-камеры а также pi-камеру, и я также попытался изменить линию capture.open(0); на capture.open("someMovie.mp4");, поэтому вместо того, чтобы открыть прямой эфир, он будет работать в на выходе видео, но он все равно дает мне ту же ошибку.

+0

Возможно, попробуйте с предварительно загруженным изображением, которое вы абсолютно уверены в размере, формате и т. Д. Это потому, что он может быть совершенно неожиданным образом прочитан с веб-камеры. – GPPK

+0

Можете ли вы уточнить? Вы имеете в виду, что я должен изменить 'Capture.open (0);'? – DMEM

+0

Вы используете камеру Малины Pi? – theoB610

ответ

4

Ошибка указывает на то, что кадр или изображение, которое вы хотели бы преобразовать на уровне вызова 'cvtColor()', не имеют того же типа, что и вы указываете его в функции. две возможные причины:

  1. изображение имеет другой тип
  2. или ваш кадр пуст

пытаются изменить CV_BGR2HSV к CV_RGB2HSV или попытаться напечатать изображение, которое вы получаете от вашего кулачка, чтобы проверить, если он пуст или нет. Надеюсь, что это поможет

+0

Изменение CV_BGR2HSV на CV_RGB2HSV не помогло. Можете ли вы подробнее объяснить, как печатать изображение с камеры. Напоминание: этот код отлично работает на моем ноутбуке (Ubuntu и Windows). Вот почему я думаю, что проблема связана с Pi – DMEM

+0

для печати изображения с камеры: if (! Image.empty()) imshow («результат», изображение); else continue; – Kacem

+0

Я знаю, как печатать изображение, я спрашиваю, как мне попробовать распечатать в этом коде, учитывая, что код не работает ...? – DMEM

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