C++ 如何让cv::calcOpticalFlowSF工作?

C++ 如何让cv::calcOpticalFlowSF工作?,c++,opencv,opticalflow,C++,Opencv,Opticalflow,我正在使用OpenCV的2.4.4版本我知道这是测试版 但是在示例文件夹中有一个关于该方法的示例,名为:simpleflow\u demo.cpp。但当我复制这个演示并将其与输入图像一起使用时,它开始处理,几秒钟后它返回一个崩溃报告。 关于该方法的文档有点奇怪,它说输出文件是x和yflow,而不是该方法实际需要的cv::Mat&flow。 有没有办法解决这个问题以使函数正常工作?试试这个对我有用的简单演示,然后根据您的需要进行修改(显示帮助): 请尝试这个对我有用的简单演示,然后根据您的需要进行

我正在使用OpenCV的2.4.4版本我知道这是测试版 但是在示例文件夹中有一个关于该方法的示例,名为:
simpleflow\u demo.cpp
。但当我复制这个演示并将其与输入图像一起使用时,它开始处理,几秒钟后它返回一个崩溃报告。 关于该方法的文档有点奇怪,它说输出文件是x和yflow,而不是该方法实际需要的
cv::Mat&flow

有没有办法解决这个问题以使函数正常工作?

试试这个对我有用的简单演示,然后根据您的需要进行修改(显示帮助):


请尝试这个对我有用的简单演示,然后根据您的需要进行修改(显示帮助):


在示例opencv/samples/cpp/simpleflow\u demo.cpp中有一个代码块

if (frame1.type() != 16 || frame2.type() != 16) {
    printf(APP_NAME "Images should be of equal type CV_8UC3\n");
    exit(1);
}

因此,灰色图像应转换为CV_8UC3。例如,使用CVT颜色(灰色、灰色3、CV_灰色2RGB)

在示例opencv/samples/cpp/simpleflow\u demo.cpp中有一个代码块

if (frame1.type() != 16 || frame2.type() != 16) {
    printf(APP_NAME "Images should be of equal type CV_8UC3\n");
    exit(1);
}

因此,灰色图像应转换为CV_8UC3。例如,使用CVT颜色(灰色、灰色3、CV_灰色2RGB)

您需要发布碰撞报告的实际详细信息。关于X和Y流的位是独立于C API,而不是C++ API。需要发布崩溃报告的实际细节。关于X和Y流的位是C API,不是C++ API。谢谢,现在我也得到了optalFuffDualtvl 1。谢谢,你的代码帮助了很多!但是我仍然有灰色图像的问题:
cv::cvtColor(image1Re,gray,cv_bgr2 gray);cv::CVT颜色(图像2RE、prevgray、cv_BGR2GRAY)使用:gray和prevgray作为frame1和frame2的输入intead。你知道在这种情况下出现了什么问题吗?仅仅从calcOpticalFlowSF文档中的变量名来看,似乎算法中使用了颜色,必须将其作为输入。谢谢,现在我让opticalFlow DualTVL1也在使用它。谢谢,你的代码帮助很大!但是我仍然有灰色图像的问题:
cv::cvtColor(image1Re,gray,cv_bgr2 gray);cv::CVT颜色(图像2RE、prevgray、cv_BGR2GRAY)使用:gray和prevgray作为frame1和frame2的输入intead。你知道在这种情况下出了什么问题吗?仅仅从calcOpticalFlowSF文档中的变量名来看,似乎算法中使用了颜色,必须作为输入。