获取图像的像素值

时间:2013-03-04 04:09:12

标签: visual-c++ opencv pixel

下面是提供2个图像的宽度,高度和BGR值的代码。但问题是,直到我关闭第一个图像,我看不到第二个图像。要进行哪些修改,以便我可以看到两个图像时间并获得所有像素值。

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;
}

1 个答案:

答案 0 :(得分:1)

问题出在cvWaitKey() 试试:

    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);