изображение становится зеленым после захвата OpenCV

У меня есть этот код, который захватывает изображение с веб-камеры с помощью OpenCV:

#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

int main( )
{
    VideoCapture cap(0); // open the default camera
    if(!cap.isOpened())  // check if we succeeded
        return -1;

    Mat meter_image;
    cap >> meter_image;

    imwrite("/boneCV-master/img.jpg", meter_image);

    return 0;
}

Я получаю следующее изображение в качестве вывода.

введите здесь описание изображения

Раньше работал нормально. Я не знаю, что происходит. Я попробовал самый простой из всех кодов при поиске в Google, но ничего не сработало. Пожалуйста, дайте мне знать, что может быть не так с ним.

заранее спасибо.

ИЗМЕНИТЬ

Я забыл упомянуть одну вещь: я работаю над beagleBone Black. этот же фрагмент кода отлично работает с моим Mac.


person Saghir A. Khatri    schedule 16.05.2016    source источник
comment
Иногда первый захваченный кадр полностью равен нулю из-за какой-либо ошибки в драйвере камеры. Попробуйте получить дополнительные кадры.   -  person ATul Singh    schedule 16.05.2016
comment
@ATulSingh Я забыл упомянуть черный Beaglebone в своем вопросе. Пожалуйста, проверьте мое редактирование   -  person Saghir A. Khatri    schedule 16.05.2016
comment
К сожалению, я не имею ни малейшего представления об этом черном Beaglebone. Одна вещь, которую вы можете сделать, это просто отладить код захвата OpenCV. Шагните в это, может быть, вы сможете что-то найти, Удачи (Y)   -  person ATul Singh    schedule 16.05.2016


Ответы (1)


Возможно, добавление проверки кадров будет полезно.

Mat meter_image;
while(meter_image.empty()){
    cap >> meter_image;
}

Но есть риск бесконечного цикла.

person Giebut    schedule 16.05.2016
comment
Проверьте мое редактирование... Я забыл упомянуть здесь BeagleBone Black. - person Saghir A. Khatri; 16.05.2016
comment
Извините, я не знаю этого устройства. Я немного погуглил и нашел это руководство. Я думаю, вы используете его. Если не проверить. Возможно, вы забыли добавить какую-то опцию в компилятор. - person Giebut; 16.05.2016