错误C2664:'cv :: Mat :: Mat(int,int,int)':无法将参数1从'cv :: Size'转换为'int'

时间:2014-07-02 08:11:30

标签: c++ opencv

这是我第一次尝试编写openCv C ++代码。 我正在尝试创建一个包含所有像素值200的图像,然后画一条线:

#include <vector>
#include "opencv2/highgui/highgui.hpp"
#include <opencv\cv.h>
#include <iostream>
#include<conio.h>


using namespace cv;
using namespace std;


int main()

{



    std::vector<char> dataPtr(40000, 200);
    cv::Point p1(0,0);
    cv::Point p2(200, 200);
    cv::Size size(200,200); 
    cv::Mat image(size, CV_8U, dataPtr);
    if (image.empty()) //check whether the image is valid or not 
     {
          cout << "Error : Image cannot be created..!!" << endl;
          system("pause"); //wait for a key press
          return -1;
     }

    cv::line(image, p1, p2, 'r', 5, 8, 0); 

    namedWindow("MyWindow", CV_WINDOW_AUTOSIZE); //create a window with the name "MyWindow"

    imshow("MyWindow", image); //display the image which is stored in the 'img' in the "MyWindow" window

    waitKey(0); //wait infinite time for a keypress
    destroyWindow("MyWindow"); //destroy the window with the name, "MyWindow"
    return 0;
}

但这会产生错误:

    cv::Mat image(size, CV_8U, dataPtr);
Error 3   error C2664: 'cv::Mat::Mat(int,int,int)' : cannot convert parameter 1 from 'cv::Size' to 'int'  in 2july.cpp    78

另一个错误是:

  

1智能感知:没有构造函数的实例&#34; cv :: Mat :: Mat&#34;匹配   参数列表2july.cpp 78

第一个参数&#39;尺寸&#39;存在一些问题。为什么它说int,当我无处使用int?为什么会这样?

1 个答案:

答案 0 :(得分:1)

查看http://docs.opencv.org/modules/core/doc/basic_structures.html上的规范后,我找不到cv :: Mat的构造函数实例,其中cv :: Size作为其第一个参数,并且有3个参数。

我要改变这个

cv::Mat image(size, CV_8U, dataPtr);

到这个

cv::Mat image(size, CV_8U);