Search code examples
visual-c++opencvpixel

To get pixel values of images


Below is the code which provides width,height and BGR values of 2 images.But the problem is until i close the first image i cant see the second image.What modifications to be made such that i can see both images at a time and get the all the pixel values.

1 . #include <cv.h>
#include<iostream>
#include <cxcore.h>
#include <highgui.h>

using namespace std;

int main(int argc, char** argv[])
{
    int  width,height;
     int i=0,j=0,k=3,l=3;

        IplImage *img1 = cvLoadImage("E:/images.jpg");
        cvNamedWindow("Image1:",1);
        cvShowImage("Image1:",img1);
        cout << "Width:" <<  img1->width << endl;
        cout << "Height:" <<  img1->height << endl;
        CvScalar s;
        s=cvGet2D(img1,i,j); // get the (i,j) pixel value
        printf("B=%f, G=%f, R=%f\n",s.val[0],s.val[1],s.val[2]);
        cvWaitKey();
        cvDestroyWindow("Image1:");

        IplImage *img2 = cvLoadImage("C:/Users/Public/Pictures/Sample Pictures/Tulips.jpg");
        cvNamedWindow("Image2:",2);
        cvShowImage("Image2:",img2);
        cout << "Width:" <<  img2->width << endl;
        cout << "Height:" <<  img2->height << endl;

        s=cvGet2D(img2,k,l); // get the (k,l) pixel value
        printf("B1=%f, G1=%f, R1=%f\n",s.val[0],s.val[1],s.val[2]);
        cvWaitKey();
        cvDestroyWindow("Image2:");

        cvReleaseImage(&img1);
        cvReleaseImage(&img2);

        return 0;
}

Solution

  • problem is with cvWaitKey() try:

        IplImage *img1 = cvLoadImage("E:/images.jpg");
        cvNamedWindow("Image1:",1);
        cvShowImage("Image1:",img1);
        cout << "Width:" <<  img1->width << endl;
        cout << "Height:" <<  img1->height << endl;
        CvScalar s;
        s=cvGet2D(img1,i,j); // get the (i,j) pixel value
        printf("B=%f, G=%f, R=%f\n",s.val[0],s.val[1],s.val[2]);
    
    
    
        IplImage *img2 = cvLoadImage("C:/Users/Public/Pictures/Sample Pictures/Tulips.jpg");
        cvNamedWindow("Image2:",2);
        cvShowImage("Image2:",img2);
        cout << "Width:" <<  img2->width << endl;
        cout << "Height:" <<  img2->height << endl;
    
        s=cvGet2D(img2,k,l); // get the (k,l) pixel value
        printf("B1=%f, G1=%f, R1=%f\n",s.val[0],s.val[1],s.val[2]);
    
    
        cvWaitKey();
        cvDestroyWindow("Image1:");
        cvDestroyWindow("Image2:");
        cvReleaseImage(&img1);
        cvReleaseImage(&img2);