2017-11-20 30 views
-1

png画像のピクセルrgb/ga情報を、ライブラリpng ++を使って行列にロードしようとしています。 (現時点では動作しません)ピクセル値を読み出す、png ++、C++

マイコード:

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

しかし、これらの方法のいずれも、各ピクセルのRGB値を取得するために動作しません。 各ピクセルのrgb/ga情報を取得する別の方法がある場合は、それに言及してください。

pic.write("picOutput.png");は、行pic.read(path)にロードされた同じpng iを配信します。これは、C++にもっと慣れ親しむための私の個人的な練習です。できるだけ自分のコードを批判します。

ありがとうございます!

+1

前の人がアップホッピングとダウンと叫んで開始マニュアルの多くがないことに注意してください「<虚辞削除>マニュアルを読みます」。 – user4581301

+0

私の問題のようなものです。私はソースのためだけにStackexchangeを持っています – Tuni

+1

幸いにも、png ++の作者はSOの半正規です。私はこれがうまくいくのかどうかはわかりませんが、彼にフラグを立てることができるかどうかを見てみましょう:@Alex – user4581301

答えて

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型の出力タイプ。 アレックスに感謝します!

の深い説明については、ここを見て: cout not printing unsigned char

関連する問題