我无法运行这个简单的代码。我正在尝试计算 2 张图片之间的光流。
请检查附件
OpenCV Error: Assertion failed (prev0.size() == next0.size() && prev0.channels() == next0.channels() && prev0.channels() == 1 && pyrScale_ < 1) in cv::`anonymous-namespace'::FarnebackOpticalFlowImpl::calc, file C:\Users\krato\Desktop\OpenCV\opencv-master\modules\video\src\optflowgf.cpp, line 1114
#include <Windows.h>
#include "opencv2\highgui.hpp"
#include "opencv2\imgproc.hpp"
#include "opencv2\objdetect\objdetect.hpp"
#include "opencv2/video/tracking.hpp"
#include <vector>
#include <stdio.h>
#include <Windows.h>
#include <iostream>
using namespace std;
using namespace cv;
// Display the results of the matches
//
int main(int argc, char* argv[])
{
cv::Mat img1 = cv::imread(argv[1], cv::IMREAD_GRAYSCALE);
cv::Mat img2 = cv::imread(argv[2], cv::IMREAD_GRAYSCALE);
cv::Mat res;
cv::calcOpticalFlowFarneback(img1,img2,img1,.4,1,12,2,8,1.2, 0);
cv:imshow("cat", res);
cv::waitKey(0);
}
最佳答案
断言是因为 img1
和 img2
的大小不同。在您提供的第一张图片中,可以清楚地看到 img1
有 762 行,img2
有 768 行。
尝试使用 cv::resize
使 img2
的大小与 img1
相同。在 cv::calcOpticalFlowFarneback()
之前添加以下行。
cv::resize(img2, img2, img1.size());
关于c++ - 简单密集光流程序 calcOpticalFlowFarneback() openCV 3.2 cpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43482959/