2017-11-20 4 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)에로드 된 동일한 핀 번호를 전달합니다. 이것은 제가 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 

때문에 표준 : : cout을 할 수없는 부호 문자의 출력 유형. Alex에게 감사드립니다.

깊이있는 설명은, 이쪽을 봐 : cout not printing unsigned char