我正在尝试使用rawvideo格式将opencv帧管道传输到ffmpeg,它应该接受输入为BGRBGRBGR ...在管道不是一个选项之前对帧进行编码。
cv::Mat frame;
cv::VideoCapture cap("cap.avi");
while(1)
{
cap >> frame;
if(!frame.data) break;
// some processing
cv::Mat array = frame.reshape(0, 1); // to make continuous
std::string output((char*) array.data, array.total() * array.elemSize());
std::cout << output;
}
使用命令
cap.exe | ffplay -f rawvideo -pixel_format bgr24 -video_size 1920x1080 -framerate 10 -i -
给出this kind of失真的结果
我认为问题与ffmpeg / ffplay无关,但我的框架与原始转换有问题
如何将3个频道的mat转换为rawvideo bgr24格式?