我正在尝试使用Farneback方法计算密集的光流,并且遇到以下错误:error:(-215)scn == 1 &&(dcn == 3 || dcn == 4)在函数ipp_cvtColor中

我的代码:

Mat flow, cflow, frame1,frame2;
UMat gray1,gray2, uflow;
namedWindow("flow", 1);


frame1 = imread("./car1.jpg", IMREAD_COLOR);
frame2 = imread("./car2.jpg", IMREAD_COLOR);

cvtColor(frame1, gray1, COLOR_BGR2GRAY);
cvtColor(frame2, gray2, COLOR_BGR2GRAY);


calcOpticalFlowFarneback(gray2, gray1, uflow, 0.5, 3, 15, 3, 5, 1.2, 0);
cvtColor(frame2, cflow, COLOR_GRAY2BGR);
uflow.copyTo(flow);
drawOptFlowMap(flow, cflow, 16, 1.5, Scalar(0, 255, 0));
imshow("flow", cflow);

最佳答案

Thuis线

cvtColor(frame2, cflow, COLOR_GRAY2BGR);

可能是罪魁祸首。
在上面的一行中,您使用frame2frame2 = imread("./car2.jpg", IMREAD_COLOR);加载为彩色图像,但是现在您正尝试将其从灰色转换,这似乎是不合逻辑的。

关于c++ - 两帧之间的光流密集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36312935/

10-08 22:13