Вот ссылка на тип изображений, которые создает моя программа: https://imgur.com/a/vibBx#0
Я пробую написанную мною простую программу тестирования захвата. Я пытаюсь захватить изображения в цикле и сохранить их на доске с правильными номерами. Первый захват иногда бывает поврежден, а последующие захваты представляют собой смесь двух изображений. Я также заметил, что иногда верхняя половина изображения получается из предыдущего захвата, а нижняя половина - из этого цикла. Подробности и код я привел ниже.
OpenCV 2.4.2, работающий на BeagleBone Black с Ангстрём установлен на нем. Камера, подключенная к USB-порту BeagleBone Black, - Logitech C920. Камера подключается к BeagleBone Black перед включением питания через блок питания 5 В и подключением BeagleBone Black к ноутбуку. Доступ осуществляется через PuTTY.
Код
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <string>
#include <unistd.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <cxcore.h>
#include "LaserWeed.h"
#include "SimpleGPIO.h"
using namespace cv;
int main(int argc, char* argv[])
{
int i=0, a;
string name;
int length;
char c, Filename[10000];
CvCapture* capture = NULL;
IplImage* img = NULL;
do
{
//I am not sure if this is necessary, but I tried anyway
//to see if it makes a difference since upper half of
//image was from previous cycle.
capture = NULL;
img = NULL;
//Converting Numbers to string to save with proper name
std::stringstream ss;
ss << i;
name = ss.str();
name = name + ".jpg";
length = name.size();
for(a=0; a<length; a++)
{
Filename[a] = name[a];
}
capture = cvCaptureFromCAM(-1);
if (!capture)
{
fprintf( stderr, "ERROR: capture is NULL \n" );
getchar();
return -1;
}
img = cvQueryFrame(capture);
if (!img)
{
fprintf(stderr, "ERROR: img is null...\n");
getchar();
return -1;
}
cvSaveImage(Filename,img);
cvReleaseCapture(&capture);
cvReleaseImage(&img);
i++;
c = getchar();
}
while (c!='e')
;
return 0;
}
Где я могу ошибиться?
Вопрос о переполнении стека BeagleBone, OpenCV и проблема веб-камеры в некоторой степени имеет аналогичную проблему. Но переустановка ОС будет моим последним вариантом.