错误将cv :: mat转换为cv :: arr

时间:2017-03-03 08:28:34

标签: c++ opencv visual-c++

  

我只是想了解OpenCV并在x64机器上运行。

     

之前我正在使用OpenCV 3.2.0和VS2015,我尝试按照步骤操作   来自youtube的Kyle Hounslow的步骤教程,但是我收到了错误。

     

然后我使用VS2013重新安装,但我仍然遇到如下错误:

Error 1   error C2664: 'void cvShowImage(const char *,const CvArr *)' : cannot convert argument 2 from 'cv::Mat' to 'const CvArr *'
Error   2 IntelliSense: no suitable conversion function from "cv::Mat" to "const CvArr *" exists
     

我已在下面的链接中看到,但仍然不适合我

     
    

OpenCV can't compile

  
     

我也检查下面的链接,但我感到困惑

     
    

how to convert from cv::Mat to CvArr?

  
     

我的代码如下:

#include<iostream>
#include<opencv\cv.h>
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\videoio.hpp>
#include<opencv2\core.hpp>
#include<opencv2\imgproc\imgproc.hpp>


using namespace cv;

int main()
{

  Mat image;

  VideoCapture cap;
  cap.open(0);

  cvNamedWindow("window", 1);

  while (true)
  {
      cap >> image;

      cvShowImage("window", image);

      cvWaitKey(33);
  }


}
     

请帮助我,非常感谢。

抱歉,我删除了更新,因为原始问题已经解决

非常感谢

2 个答案:

答案 0 :(得分:1)

如果您需要使用c ++ Mat,则应使用imshow("window", image);

根据opencv docs

在指定的窗口中显示图像。

  

C ++:void imshow(const string&amp; winname,InputArray mat)

     

C:void cvShowImage(const char * name,const CvArr * image)

答案 1 :(得分:0)

您正在将旧的,过时的 C api(cvNamedWindowcvShowImagecvWaitKey)与新的C ++ API混合使用(Mat,{{ 1}})。不要那样做。完全放弃C api。名为cvFunctionName的所有内容都已过时。使用使用VideoCapture作为命名空间的较新的api,因此像cv :: functionName这样的名称就是你应该调用的。

在你的情况下,它是cv::namedWindowcv::imshowcv::waitKey

cv