Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 断言失败错误_C++_Opencv_Computer Vision - Fatal编程技术网

C++ 断言失败错误

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>

我试图找到两个图像序列之间的光流,当我运行程序时,它显示calcOpticalFlowFarneback()函数的断言失败。有人能帮我解决这个问题吗

#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,则可以在代码中指定一些可能导致问题的问题。我已根据您的建议进行了更改,程序运行时没有任何错误,但打开了一个没有任何输出的窗口。。