OpenCV 2.1: Runtime Error

I have a program that uses OpenCV. I have a webcam and it captures color frames, and I want to convert the color frames into gray scale frames. So, I used cvCvtColor(color_frame, gray_frame, CV_BGR2GRAY); to convert color frames to BW frames.

When using this color conversion function → Grayscale I get a runtime error:

 OpenCV Error: Null pointer (NULL array pointer is passed) in unknown function, file ..\..\..\..\ocv\opencv\src\cxcore\cxarray.cpp, line 2376 

Has anyone experienced this problem before? Any solutions how to fix this?

thank

My program

 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/time.h> #include"cv.h" #include"highgui.h" #include"cxtypes.h" #define ERROR -1 #define NO_ERROR 1 int main() { int EXIT_STATUS = NO_ERROR; int camera_index = 0; CvCapture *capture = 0; IplImage *color_frame = NULL; IplImage *gray_frame = NULL; int exit_key_press = 0; capture = cvCaptureFromCAM(camera_index); cvNamedWindow("SURF", CV_WINDOW_AUTOSIZE); while(exit_key_press != 's') { /* Capture a frame */ color_frame = cvQueryFrame(capture); if(color_frame == NULL) { break; } else { // When this line is enabled the runtime error occurs. //cvCvtColor(color_frame, gray_frame, CV_BGR2GRAY); cvShowImage("SURF", color_frame ); } exit_key_press = cvWaitKey(1); } cvDestroyWindow("Output"); cvReleaseCapture(&capture); printf("\n\n~*~The END~*~"); exit(EXIT_STATUS); } 
0
c opencv runtime-error
Aug 09 '10 at 8:44
source share
2 answers

You do not need to select your IplImage? It is not specified by the conversion function, but I believe that you need to select dst of the same size / type as the source.

+1
Aug 09 '10 at 19:03
source share

I see that many people are trying to do this simple task and have problems with it.

Therefore, I allowed changing the source code to a program that displays the converted grayscale video from the webcam on the screen.

Please use this code for reference.

I compiled on my Macbook Pro using:

 g++ -I/usr/include/opencv -c gray.cpp -o gray.o -m32 -arch i386 g++ gray.o -o gray -L/usr/lib -lcxcore -lcv -lhighgui -lcvaux -lml -ldl -m32 -arch i386 

File: gray .cpp

 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/time.h> #include"cv.h" #include"highgui.h" #include"cxtypes.h" #define ERROR -1 #define NO_ERROR 1 int main() { int camera_index = 0; IplImage *color_frame = NULL; int exit_key_press = 0; CvCapture *capture = NULL; capture = cvCaptureFromCAM(camera_index); if (!capture) { printf("!!! ERROR: cvCaptureFromCAM\n"); return -1; } cvNamedWindow("Grayscale video", CV_WINDOW_AUTOSIZE); while (exit_key_press != 'q') { /* Capture a frame */ color_frame = cvQueryFrame(capture); if (color_frame == NULL) { printf("!!! ERROR: cvQueryFrame\n"); break; } else { IplImage* gray_frame = cvCreateImage(cvSize(color_frame->width, color_frame->height), color_frame->depth, 1); if (gray_frame == NULL) { printf("!!! ERROR: cvCreateImage\n"); continue; } cvCvtColor(color_frame, gray_frame, CV_BGR2GRAY); cvShowImage("Grayscale video", gray_frame); cvReleaseImage(&gray_frame); } exit_key_press = cvWaitKey(1); } cvDestroyWindow("Grayscale video"); cvReleaseCapture(&capture); return 0; } 
+4
Aug 09 '10 at 21:30
source share



All Articles