Преобразование изображения PNG в формат XImage - PullRequest
0 голосов
/ 24 декабря 2018

Я хочу загрузить изображение .png (используя OpenCV) и скопировать его в новое окно с помощью XPutImage ().Но для этого мне нужно сначала преобразовать изображение в формат XImage.

Я смог сделать XImage для .png, используя приведенный ниже фрагмент кода.Но теперь я запутался в обратном преобразовании.

Так есть ли хороший метод (или фрагмент кода) для преобразования файла png в формат XImage?

Для XPutImage (): https://tronche.com/gui/x/xlib/graphics/XPutImage.html

 Mat img(ht,wd,CV_8UC3);

 XImage *image = XGetImage(d, w1, 0,0 , wd, ht, AllPlanes, ZPixmap);
 unsigned long rm = image->red_mask;
 unsigned long gm = image->green_mask;
 unsigned long bm = image->blue_mask;

 for (int x = 0; x < wd; x++)
    for (int y = 0; y < ht ; y++)
        {

        unsigned long pixel = XGetPixel(image,x,y);
        unsigned char blue = pixel & bm;
        unsigned char green = (pixel & gm) >> 8;
        unsigned char red = (pixel & rm) >> 16;     

        Vec3b color = img.at<Vec3b>(Point(x,y));         
                color[0] = blue;
        color[1] = green;
        color[2] = red;
        img.at<Vec3b>(Point(x,y)) = color;

    }   

imwrite("w1_img.png", img);
...