Ask Your Question

Revision history [back]

Problem in cvGet2D function

//Program to use an image having 4 characters(eg : Z,L,5,T) of size 128x128 and store its pixel //values in a 1D array input_data

include "opencv2/core/core_c.h"

include "opencv2/highgui/highgui_c.h"

include <stdio.h>

include <stdlib.h>

define size 128

define neurons 16384

int input_data[4*neurons];

int main( int argc, const char** argv )


unsigned char pixels_array[size][size];
int height,total_width,per_image_width,i,counter=0,image_count=0,u,v;
FILE *fp;
IplImage* image;
CvScalar s;
char input_image[16];

printf("\nEnter the name of image\n");  

//input image is 512x128 i.e 4 characters of 128x128 arranged horizontally

image = cvLoadImage(input_image,CV_LOAD_IMAGE_GRAYSCALE);

    printf("Cannot read image file");
    return -1;

// get the image data

height    = image->height;
total_width = image->width;
printf("Processing a %dx%d image\n",height,total_width); 

image_count = total_width / size ; //gives the number of characters in image strip
per_image_width = total_width / image_count; //this is definitely 128
printf("\nNo of images in plate : %d, Per image width : %d\n",image_count,per_image_width);

fp = fopen("actual.txt","w");

    counter = per_image_width * i;  
          for(v= counter ; (v < (counter + per_image_width)) && (v < total_width) ; v+=1)
                    //this is how I am extracting pixel values   s=cvGet2D(image,u,v);                                                  pixels_array[u][v]=s.val[0];

            if (pixels_array[u][v]>127)
                input_data[(neurons*i)+ u*height + v] = 1 ;
                input_data[(neurons*i)+u*height +v] = -1;   
    fprintf(fp,"\n@@@@@@@@@@@This is the end of image number %d@@@@@@@@@@@@\n",i);
return 0;


When i see the resultant matrix in a file, i can see the first character clearly. But the second character does not print completely. It fails in its last iteration ie i=1, u=127, v=161 The error thrown is as follows:

OpenCV Error: Bad argument (unrecognized or unsupported array type) in cvPtr2D, file /home/varun/MTP1/opencv-, line 1830 terminate called after throwing an instance of 'cv::Exception' what(): /home/varun/MTP1/opencv- error: (-5) unrecognized or unsupported array type in function cvPtr2D

Aborted (core dumped)

I checked in array.cpp of OpenCV/modules/core/src directory containing cvGet2D but did not understand completely. Can somebody tell what the problem is? Thanks.