C++ 断言失败错误
我试图找到两个图像序列之间的光流,当我运行程序时,它显示calcOpticalFlowFarneback()函数的断言失败。有人能帮我解决这个问题吗C++ 断言失败错误,c++,opencv,computer-vision,C++,Opencv,Computer Vision,我试图找到两个图像序列之间的光流,当我运行程序时,它显示calcOpticalFlowFarneback()函数的断言失败。有人能帮我解决这个问题吗 #include "stdafx.h" #include<opencv\cv.h> #include<opencv2\highgui\highgui.hpp> #include<opencv2\calib3d\calib3d.hpp> #include<opencv2\core\core.hpp>
#include "stdafx.h"
#include<opencv\cv.h>
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\calib3d\calib3d.hpp>
#include<opencv2\core\core.hpp>
using namespace cv;
using namespace std;
void drawOptFlowMap (const Mat& flow, Mat& cflowmap, int step, double scale, const
Scalar& color)
{
for(int y = 0; y < cflowmap.rows; y += step)
for(int x = 0; x < cflowmap.cols; x += step)
{
const Point2f& fxy = flow.at<Point2f>(y, x);
line(cflowmap, Point(x,y), Point(cvRound(x+fxy.x), cvRound(y+fxy.y)),
color);
circle(cflowmap, Point(cvRound(x+fxy.x), cvRound(y+fxy.y)), 1, color, -1);
}
}
int main()
{
Mat flow,cflow;
Mat Previous_Gray=imread("image2.png");
Mat Current_Gray=imread("image3.png");
cvtColor(Current_Gray,Current_Gray,CV_BGR2GRAY);
cvNamedWindow("optical Flow", CV_WINDOW_NORMAL);
calcOpticalFlowFarneback(Previous_Gray,Current_Gray,flow,0.5, 3, 15, 3, 5, 1.2, 0);
cvtColor(Previous_Gray, cflow, CV_GRAY2BGR);
drawOptFlowMap(flow, cflow, 32, 50, CV_RGB(0, 255, 0));
imshow("optical Flow", cflow);
return 0;
}
#包括“stdafx.h”
#包括
#包括
#包括
#包括
使用名称空间cv;
使用名称空间std;
void drawOptFlowMap(常数矩阵和流量、矩阵和cflowmap、整数步长、双刻度、常数
标量和颜色)
{
对于(int y=0;y
Mat imread(const string&filename,int flags=1)
,您在Mat Previous_Gray=imread(“image2.png”)行中使用的调用是什么代码>返回3通道rgb图像。因此,因为这是断言的一部分
prev0.channels()==next0.channels()==1
这是错误的。在打电话给calcOpticalFlowFarneback之前,你忘了转换之前的Gray吗
您可以包含断言输出吗?您是否检查了输入数据的格式是否正确?OpenCV错误:断言失败(prev0.size()==next0.size()&&prev0.channels()==next0.channels()==1&&pyr\u未知函数中的比例,文件..\..\src\opencv\modules\video\src\optflowgf.cpp,第579行您的问题标题不太具有描述性,请尝试选择更具描述性/特定性的内容。此外,请尝试先查看代码,尝试确定哪些部分有效,哪些部分无效(一种方法是注释掉部分)。一旦您准确地确定了导致问题的行/节,请使用再现问题所需的最低代码量编辑您的问题。@ilent2:虽然问题标题和问题本身并不具体,而且很容易找出问题,但我不会说作者必须添加一些细节。所有必要的如果给定y,则可以在代码中指定一些可能导致问题的问题。我已根据您的建议进行了更改,程序运行时没有任何错误,但打开了一个没有任何输出的窗口。。