项目场景:
Aeye相机采集程序
问题描述:
相机采集程序运行一次之后停止并重新启动程序,会导致程序出错,直接崩溃
显示cvtColor转换时incoming_img数据是空的empty
if(cvt_conversion_type == COLOR_RGB2BGR) {
memcpy(output_img.data, incoming_img.data, (width * tmp_height * sizeof(char)));
}
else {
cvtColor(incoming_img, output_img, cvt_conversion_type);
}
原因分析:
cv转换的数据为空
连续打印数据大小发现重新启动程序时候,前几帧数据size为0;
因此在进行cvtColor转换的时候导致的程序崩溃
Mat SiaMoviCam::process_frame(uchar *frame, size_t size)
解决方案:
先判断一下帧数据的大小,过滤前面的几帧空数据;
单步运行程序,实际上拿了很多帧数据,返回有图像的帧数据
对应原本QT程序,为什么没有这个问题呢,因为在选择界面框框的时候,连接上MYRIAD的时候,
就已经在接收图像了,所以它前几帧数据早就过滤了
if (size < 2000)
{
// return Mat( Size(width,height), CV_8UC3, Scalar::all(255));//返回纯白图像
return Mat(1964, 2616, CV_8UC3, Scalar::all(255));
}