이미지 매칭 후 그위에 3D오브젝트를 띄우는데 이게 텍스쳐가 png로 되있다.
근데 opencv는 png를 무조건 1또는 3채널로만 읽어와서 그냥 투명 부분이 흰색으로 나오는 문제가 발생...
http://blog.developer.stylight.de/2010/05/how-to-load-alpha-channel-pngs-with.html
위 방법대로 하면 png를 rgba 4채널로 읽는다길래 해보니까 그냥 죽더라..
설마 opencv 2.0이라 그런거니?
다른 라이브러리를 찾아보던중 DevIL이라는 라이브러리를 포착
opencv와는 다르게 완전 c스타일로 코딩해야되는 라이브러리라 별로 끌리지는 않지만 써보기로함
코딩스타일이 opengl의 텍스쳐 로딩 부분이랑 매우 흡사하다.
DevIL로 파일을 불러와서 텍스쳐 세팅하는 방법을 간략히 적어보면
이렇게 된다.
음.. 뭔가 맘에 안드는 코딩스타일..
Java가 하고싶다.
어서 이 C의 세계에서 나가야겠어!
프로그래머가 되는것은 맘대로였겠지만 언어선택은 아니란다
이런 젝일
근데 opencv는 png를 무조건 1또는 3채널로만 읽어와서 그냥 투명 부분이 흰색으로 나오는 문제가 발생...
http://blog.developer.stylight.de/2010/05/how-to-load-alpha-channel-pngs-with.html
위 방법대로 하면 png를 rgba 4채널로 읽는다길래 해보니까 그냥 죽더라..
설마 opencv 2.0이라 그런거니?
다른 라이브러리를 찾아보던중 DevIL이라는 라이브러리를 포착
opencv와는 다르게 완전 c스타일로 코딩해야되는 라이브러리라 별로 끌리지는 않지만 써보기로함
코딩스타일이 opengl의 텍스쳐 로딩 부분이랑 매우 흡사하다.
DevIL로 파일을 불러와서 텍스쳐 세팅하는 방법을 간략히 적어보면
ILuint imgid;
ilGenImages(1, &imgid);
ilBindImage(imgid);
ilLoadImage(buffer);
ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE);
glTexImage2D(GL_TEXTURE_2D, 0, ilGetInteger(IL_IMAGE_BPP), ilGetInteger(IL_IMAGE_WIDTH), ilGetInteger(IL_IMAGE_HEIGHT), 0, ilGetInteger(IL_IMAGE_FORMAT), GL_UNSIGNED_BYTE, ilGetData());
ilDeleteImages(1, &imgid);
이렇게 된다.
음.. 뭔가 맘에 안드는 코딩스타일..
Java가 하고싶다.
어서 이 C의 세계에서 나가야겠어!
프로그래머가 되는것은 맘대로였겠지만 언어선택은 아니란다
이런 젝일