两帧之间的密集光流
Posted
技术标签:
【中文标题】两帧之间的密集光流【英文标题】:Dense optical flow between two frames 【发布时间】:2016-03-30 15:13:12 【问题描述】:我正在尝试使用 Farneback 方法计算密集光流,但遇到以下错误:error: (-215) scn == 1 && (dcn == 3 || dcn == 4) in function 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);
【问题讨论】:
【参考方案1】:泰晤士线
cvtColor(frame2, cflow, COLOR_GRAY2BGR);
可能是罪魁祸首。
在上面的一行中,您使用frame2 = imread("./car2.jpg", IMREAD_COLOR);
将frame2
加载为彩色图像,但现在您尝试将其从灰色 转换,这似乎不合逻辑。
【讨论】:
error: (-215) size.width>0 && size.height>0 in function imshow 现在发生这种情况... 错误有点神秘地告诉你,你传递给imshow
的Mat
是空的。 IE。它的至少一个维度是零。您可能应该查看您的矩阵,看看哪个矩阵用于何处以及用于什么目的。以上是关于两帧之间的密集光流的主要内容,如果未能解决你的问题,请参考以下文章