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;
}