Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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++ 需要帮助理解为什么我';我在OpenCV C代码中收到此错误消息。。。?_C++_Opencv - Fatal编程技术网

C++ 需要帮助理解为什么我';我在OpenCV C代码中收到此错误消息。。。?

C++ 需要帮助理解为什么我';我在OpenCV C代码中收到此错误消息。。。?,c++,opencv,C++,Opencv,以下是错误: Error no Operand "<<" matches these operands Error no Operand”CvSize是a类型,而size是CvSize 您需要按如下方式使用它: cout没有CvSize流插入器。如果需要该语法,请定义一个: std::ostream& operator <<(std::ostream& os, const CvSize& siz) { os << siz.wi

以下是错误:

Error no Operand "<<" matches these operands
Error no Operand”
CvSize
是a类型,而
size
CvSize

您需要按如下方式使用它:


cout没有CvSize流插入器。如果需要该语法,请定义一个:

std::ostream& operator <<(std::ostream& os, const CvSize& siz)
{
    os << siz.width << ',' << siz.height;
    return os;
}

<代码> STD::OfSand &操作员为什么在标题和标签中有C?这看起来像C++……不太理解你的答案@ WoZoCig…这是一个计算机科学项目,我是C的新手。我想能够设置一个变量,像char A=αs(大小:宽度1280:高度1024);并把它传递给像IPLIMAGI*IMG01Hyv= CVCCRATIAGE这样的函数。(a,IPL_DEPTH_8U,1);但我需要知道哪个字符串将满足cvCreateImage的第一个参数……我想看看代码背后的机制,这样我就可以包装它了……@user2735131这只是声明了一个流插入操作符(您已经将它们用于
const char*
之类的类型。这允许您拥有一个输出流通常不理解的
CvSize
类型的变量,并将该类型的变量发送到流中。因此,与其这样做:
cout@user2735131,是的,您可以对任何想要的数据类型使用相同的概念发送到
std::ostream
或其中的派生(例如文件流)。许多类型(所有本机类型,如
int
char
float
等)已经是标准库的一部分。如果您的类型不是标准库的一部分,则可以执行此操作。当我将您的函数直接输入到我的代码中CvSize size=cvGetSize(frame)下面时;在我将其更改为std::ostream&operator后,不要将其放在下面。它是一个函数,像任何其他函数一样声明和定义它。在您的情况下,我会将其放在main之前。
cout << "M = "<< endl << " " << frame << endl << endl;
#include <cv.h>
#include <highgui.h>


using namespace std;
int main(){
CvCapture* capture =0;

capture = cvCreateCameraCapture(0);
if(!capture){
//printf("Capture failure\n");
return -1;
}

IplImage* frame=0;
int size = 0;
cvNamedWindow("Video");


//iterate through each frames of the video
while(true){

frame = cvQueryFrame(capture);
if(!frame) break;

frame=cvCloneImage(frame);

CvSize size = cvGetSize(frame);
cout << "M = "<< endl << " " << size << endl << endl;
//Clean up used images

cvReleaseImage(&frame);

//Wait 50mS
int c = cvWaitKey(10);
//If 'ESC' is pressed, break the loop
if((char)c==27 ) break;
}

cvDestroyAllWindows() ;
cvReleaseCapture(&capture);

return 0;
}
//////////////////////////////////////
std::ostream& operator <<(std::ostream& os, const CvSize& siz)
{
    os << siz.width << ',' << siz.height;
    return os;
}