我是OpenCV的新手。我正在使用opencv2.4.8庫在Windows 8中使用Visual Studio 2010。 我需要的對象物的檢測算法的項目,所以我試圖理解這段代碼是如何工作的:Opencv語法錯誤:缺少';'之前'while'
#include <opencv\cv.h>
#include <opencv\highgui.h>
//This function threshold the HSV image and create a binary image
IplImage* GetThresholdedImage(IplImage* imgHSV){
IplImage* imgThresh=cvCreateImage(cvGetSize(imgHSV),IPL_DEPTH_8U, 1);
cvInRangeS(imgHSV, cvScalar(170,160,60), cvScalar(180,256,256), imgThresh);
return imgThresh;
}
int main(){
CvCapture* capture =0;
IplImage* frame=0;
capture = cvCaptureFromCAM(0);
capture = cvCaptureFromCAM(0);
if(!capture){
printf("Capture failure\n");
return -1;
}
cvNamedWindow("Video",1);
cvNamedWindow("Ball",1);
//iterate through each frames of the video
while(true){
frame = cvQueryFrame(capture);
if(!frame) break;
frame=cvCloneImage(frame);
cvSmooth(frame, frame, CV_GAUSSIAN,3,3);//smooth the image using Gaussian
IplImage* imgHSV = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 3);
cvCvtColor(frame, imgHSV, CV_BGR2HSV); //Change the color format from BGRtoHSV
IplImage* imgThresh = GetThresholdedImage(imgHSV);
cvSmooth(imgThresh, imgThresh, CV_GAUSSIAN,3,3); //smooth the binary image
cvShowImage("Ball", imgThresh);
cvShowImage("Video", frame);
//Clean up used images
cvReleaseImage(&imgHSV);
cvReleaseImage(&imgThresh);
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;
}
這是http://opencv-srf.blogspot.in/2010/09/object-detection-using-color-seperation.html 我想周圍的錯誤工作的代碼,但不能擺脫這些:
- 1> Bas.cpp(23):錯誤C3872: '0x3000處':這個字符是不允許在標識符
- 1> Bas.cpp(24):錯誤C2065:':未聲明的標識符
- 1> Bas.cpp(24):錯誤C2146:語法錯誤:缺少';'在標識符'cvNamedWindow'之前
我不知道while循環或cvNamedWindow有什麼問題。請幫忙。
所有的
爲什麼不在代碼中使用正確的縮進?這將使找到問題的原因變得更容易。 – jogojapan
我甚至無法在您的代碼段中找到*「0x3000」! –
如果您將網站中的代碼複製並粘貼到文本文件中,則文件中可能會出現非打印字符,這些字符會混淆VS或編譯器。嘗試在調用'cvNamedWindow'之前和之後刪除所有空格並鍵入新的空格。看看是否糾正了問題或報告了新的錯誤。 – Ned