زینب حسینی
پنج شنبه 02 شهریور 1391, 18:32 عصر
سلام
من کد زیر رو نوشتم که تابع هایی که قبل از تابع main تعریف شدن خطاهای زیر را میده.چرا؟
کد:
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
//Canny Edge Detector
IplImage* doCanny( IplImage* in, double lowThresh, double highThresh, int aperture)
{
if(in->nChannels != 1)
return(0); //Canny only handles gray scale images
IplImage* out = cvCreateImage( cvGetSize(in), IPL_DEPTH_8U, 1 );
cvCanny( in, out, lowThresh, highThresh, aperture );
return( out );
};
//Sobel Edge Detector
IplImage* doSobel( IplImage* in, int xOrder, int yOrder, int aperture)
{
if(in->nChannels != 1)
return(0); //Sobel only handles gray scale images
IplImage* temp = cvCreateImage( cvGetSize(in), IPL_DEPTH_16S, 1 );
IplImage* out = cvCreateImage( cvGetSize(in), IPL_DEPTH_8U, 1 );
cvSobel( in, temp, xOrder, yOrder, aperture );
cvConvertScale(temp, out);
cvReleaseImage(&temp);
return( out );
};
//Image Resize
IplImage* doResize( IplImage* in, int filter = CV_INTER_LINEAR )
{
IplImage* out = cvCreateImage(
cvSize( in->width/2, in->height/2 ), in->depth, in->nChannels );
cvResize( in, out, filter );
return( out );
};
int main( int argc, char** argv ) {
const char* imagename = argc > 1 ? argv[1] : "p.jpg";
IplImage* img = cvLoadImage(imagename);
IplImage* resized = doResize(img);
IplImage* g = cvCreateImage( cvGetSize(img), IPL_DEPTH_8U, 1 );
cvSplit(img, 0, g, 0, 0);
IplImage* cedge = doCanny(g, 50, 175, 3);
IplImage* sedge = doSobel(g, 0, 1, 3);
cvShowImage("Original", img);
cvShowImage("Green Channel", g);
cvShowImage("Resized", resized);
cvShowImage("Canny Edge", cedge);
cvShowImage("Sobel Edge", sedge);
cvSaveImage("Green channel.jpg", g);
cvSaveImage("Resized.jpg", resized);
cvSaveImage("Canny Edge.jpg", cedge);
cvSaveImage("Sobel Edge.jpg", sedge);
cvWaitKey(0);
// Release memory and destroy window
cvReleaseImage( &resized );
cvReleaseImage( &g );
cvReleaseImage( &cedge );
cvReleaseImage( &sedge );
cvReleaseImage( &img );
cvDestroyWindow( "Original" );
cvDestroyWindow( "Green Channel" );
cvDestroyWindow( "Resized" );
cvDestroyWindow( "Canny Edge" );
cvDestroyWindow( "Eobel Edge" );
return(0);
}
خطاها:
Error 1 error C2275: 'IplImage' : illegal use of this type as an expression c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 26
Error 2 error C2065: 'out' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 26
Error 3 error C2065: 'out' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 29
Error 5 error C2065: 'out' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 31
Error 7 error C2275: 'IplImage' : illegal use of this type as an expression c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 48
Error 8 error C2065: 'temp' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 48
Error 9 error C2275: 'IplImage' : illegal use of this type as an expression c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 51
Error 10 error C2065: 'out' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 51
Error 11 error C2065: 'temp' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 54
Error 13 error C2065: 'temp' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 56
Error 15 error C2065: 'out' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 56
Error 17 error C2198: 'cvConvertScale' : too few arguments for call c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 56
Error 18 error C2065: 'temp' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 59
Error 21 error C2065: 'out' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 62
Error 23 error C2143: syntax error : missing ')' before '=' c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 70
Error 24 error C2072: 'doResize' : initialization of a function c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 70
Error 25 error C2059: syntax error : ')' c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 70
Error 26 error C2143: syntax error : missing ';' before '{' c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 74
Error 27 error C2449: found '{' at file scope (missing function header?) c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 74
Error 28 error C2059: syntax error : '}' c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 88
من کد زیر رو نوشتم که تابع هایی که قبل از تابع main تعریف شدن خطاهای زیر را میده.چرا؟
کد:
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
//Canny Edge Detector
IplImage* doCanny( IplImage* in, double lowThresh, double highThresh, int aperture)
{
if(in->nChannels != 1)
return(0); //Canny only handles gray scale images
IplImage* out = cvCreateImage( cvGetSize(in), IPL_DEPTH_8U, 1 );
cvCanny( in, out, lowThresh, highThresh, aperture );
return( out );
};
//Sobel Edge Detector
IplImage* doSobel( IplImage* in, int xOrder, int yOrder, int aperture)
{
if(in->nChannels != 1)
return(0); //Sobel only handles gray scale images
IplImage* temp = cvCreateImage( cvGetSize(in), IPL_DEPTH_16S, 1 );
IplImage* out = cvCreateImage( cvGetSize(in), IPL_DEPTH_8U, 1 );
cvSobel( in, temp, xOrder, yOrder, aperture );
cvConvertScale(temp, out);
cvReleaseImage(&temp);
return( out );
};
//Image Resize
IplImage* doResize( IplImage* in, int filter = CV_INTER_LINEAR )
{
IplImage* out = cvCreateImage(
cvSize( in->width/2, in->height/2 ), in->depth, in->nChannels );
cvResize( in, out, filter );
return( out );
};
int main( int argc, char** argv ) {
const char* imagename = argc > 1 ? argv[1] : "p.jpg";
IplImage* img = cvLoadImage(imagename);
IplImage* resized = doResize(img);
IplImage* g = cvCreateImage( cvGetSize(img), IPL_DEPTH_8U, 1 );
cvSplit(img, 0, g, 0, 0);
IplImage* cedge = doCanny(g, 50, 175, 3);
IplImage* sedge = doSobel(g, 0, 1, 3);
cvShowImage("Original", img);
cvShowImage("Green Channel", g);
cvShowImage("Resized", resized);
cvShowImage("Canny Edge", cedge);
cvShowImage("Sobel Edge", sedge);
cvSaveImage("Green channel.jpg", g);
cvSaveImage("Resized.jpg", resized);
cvSaveImage("Canny Edge.jpg", cedge);
cvSaveImage("Sobel Edge.jpg", sedge);
cvWaitKey(0);
// Release memory and destroy window
cvReleaseImage( &resized );
cvReleaseImage( &g );
cvReleaseImage( &cedge );
cvReleaseImage( &sedge );
cvReleaseImage( &img );
cvDestroyWindow( "Original" );
cvDestroyWindow( "Green Channel" );
cvDestroyWindow( "Resized" );
cvDestroyWindow( "Canny Edge" );
cvDestroyWindow( "Eobel Edge" );
return(0);
}
خطاها:
Error 1 error C2275: 'IplImage' : illegal use of this type as an expression c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 26
Error 2 error C2065: 'out' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 26
Error 3 error C2065: 'out' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 29
Error 5 error C2065: 'out' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 31
Error 7 error C2275: 'IplImage' : illegal use of this type as an expression c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 48
Error 8 error C2065: 'temp' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 48
Error 9 error C2275: 'IplImage' : illegal use of this type as an expression c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 51
Error 10 error C2065: 'out' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 51
Error 11 error C2065: 'temp' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 54
Error 13 error C2065: 'temp' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 56
Error 15 error C2065: 'out' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 56
Error 17 error C2198: 'cvConvertScale' : too few arguments for call c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 56
Error 18 error C2065: 'temp' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 59
Error 21 error C2065: 'out' : undeclared identifier c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 62
Error 23 error C2143: syntax error : missing ')' before '=' c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 70
Error 24 error C2072: 'doResize' : initialization of a function c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 70
Error 25 error C2059: syntax error : ')' c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 70
Error 26 error C2143: syntax error : missing ';' before '{' c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 74
Error 27 error C2449: found '{' at file scope (missing function header?) c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 74
Error 28 error C2059: syntax error : '}' c:\documents and settings\administrator\my documents\visual studio 2010\projects\i\i\i.cpp 88