我使用以下OpenCV
代码从相机访问视频供稿(Jetson TX1终端中的lsusb命令将相机列为Pixart Imaging,Inc。)。
代码:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
int main()
{
cv::VideoCapture cap(1);
if(!cap.isOpened())
{
std::cout << "Input error\n";
return -1;
}
cv::namedWindow("Video Feed", cv::WINDOW_AUTOSIZE);
for(;;)
{
cv::Mat frame;
cap >> frame;
std::cout << "Type: " << frame.type() << "\n";
//cv::cvtColor(frame, frame, CV_YUV2RGB);
//cv::resize(frame, frame, cv::Size2i(256, 144));
cv::imshow("Video Feed", frame);
if (cv::waitKey(10) == 27)
{
break;
}
}
cv::destroyAllWindows();
return 0;
}
视频输入的screeenshots如下所示:
我正在尝试识别相机的颜色格式并将其转换为RGB
。我尝试了不同的颜色格式,但我主要关注YUV
到RGB
转换,如下所示(此行在上面的代码中已注释掉):cv::cvtColor(frame, frame, CV_YUV2RGB);
我还尝试了列出here的YUV的不同变体。但是,我还没有收到接近正常RGB
图像的任何结果。
我也在终端上收到以下消息:
Corrupt JPEG data: 1 extraneous bytes before marker 0xd9
1)这只是一个有缺陷的相机吗?
2)是否有任何测试/方法来识别和纠正问题?