读出Pixel Values,png ++,C ++

时间:2017-11-20 19:36:58

标签: c++ colors png pixel

我正在尝试使用库png ++将png图像的像素rgb / ga信息加载到矩阵中,以便对它们进行一些计算。

我的代码(目前不起作用):

lsof -p $( sudo lsof -u <USERID> | awk '/<FileName>/ {print$2}' ) | awk '$4 ~ /cwd/ {print $9}'

但是,这些方法都不能用于获取每个像素的rgb值。 如果有其他方法可以获取每个像素的rgb / ga信息,请提及它。

#include <iostream> #include <png++/image.hpp> #include <png++/rgb_pixel.hpp> int main(int argc, const char * argv[]) { const std::string path="img_03.png"; png::image< png::basic_rgb_pixel <unsigned char> > pic(path); pixel=pic.get_pixel(0, 0); pixelp = &pixel; std::cout << "value=" << pic[10][10].red << std::endl; //output: '?' std::cout << "value=" << pixel.red << std::endl; //nothing std::cout << "pointer=" << pixelp << std::endl; //delivers adress pic.read(path); std::cout << "value=" << pic[10][10].red << std::endl; //nothing pic.write("picOutput.png"); //same picture return 0; } 提供了与行pic.write("picOutput.png");中加载的相同的png i。这是个人练习,让我更习惯C ++,尽可能地批评我的代码。

谢谢!

1 个答案:

答案 0 :(得分:0)

解决方案来了:

更改行:

std::cout << "value=" << pic[10][10].red << std::endl; //nothing

使用:

std::cout << "value=" << (int) pic[10][10].red << std::endl; //nothing

因为std :: cout无法输出unsigned char的类型。 感谢Alex!

有关深入解释,请查看此处: cout not printing unsigned char