这是我第一次尝试编写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?为什么会这样?
答案 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);