안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요~
안드로이드 어플개발하고 있는 학생입니다~
Camera.PreviewCallback으로 byte[] data 받으면 그 영상 포맷이 YUV로 됩니다.
제가 개발하면서 사용하는게 갤럭시A라서 그건 YUV422로 되어있습니다.
그래서 442구조랑 YUV를 RGB로 변환하는 공식을 구해서 코드 짜고 있는데
이상하게 G값이 밝거나 어둡거나 색에 관계 없이 130대로 계속 나오네요;;
http://msdn.microsoft.com/en-us/library/ms893078.aspx
C = Y - 16
D = U - 128
E = V - 128
R = clip(( 298 * C + 409 * E + 128) >> 8)
G = clip(( 298 * C - 100 * D - 208 * E + 128) >> 8)
B = clip(( 298 * C + 516 * D + 128) >> 8)
공식은 이렇고 clip은 0~255로 값 잘라내는거구요...
G = clip(( 298 * C - 100 * D - 208 * E + 128) >> 8)
에서 298 * C - 100 * D - 208 * E + 128 값 보면 Y U V이 0이 되면
G 값이 130이 되는데 0이 되어가 정상 아닌가요ㅠㅠ?
검정색은 rgb값이 000니까... 근데 0 130 0 이런식으로 되서 밑에 처럼 나오는거 같습니다.

스샷은 카메라위에 변환된 rgb 비트맵 띄운건데 카메라 영상은 스샷안되네요;
아무댓글이라도 부탁드립니다 ㅠ

안드로이드 어플개발하고 있는 학생입니다~
Camera.PreviewCallback으로 byte[] data 받으면 그 영상 포맷이 YUV로 됩니다.
제가 개발하면서 사용하는게 갤럭시A라서 그건 YUV422로 되어있습니다.
그래서 442구조랑 YUV를 RGB로 변환하는 공식을 구해서 코드 짜고 있는데
이상하게 G값이 밝거나 어둡거나 색에 관계 없이 130대로 계속 나오네요;;
http://msdn.microsoft.com/en-us/library/ms893078.aspx
C = Y - 16
D = U - 128
E = V - 128
R = clip(( 298 * C + 409 * E + 128) >> 8)
G = clip(( 298 * C - 100 * D - 208 * E + 128) >> 8)
B = clip(( 298 * C + 516 * D + 128) >> 8)
공식은 이렇고 clip은 0~255로 값 잘라내는거구요...
G = clip(( 298 * C - 100 * D - 208 * E + 128) >> 8)
에서 298 * C - 100 * D - 208 * E + 128 값 보면 Y U V이 0이 되면
G 값이 130이 되는데 0이 되어가 정상 아닌가요ㅠㅠ?
검정색은 rgb값이 000니까... 근데 0 130 0 이런식으로 되서 밑에 처럼 나오는거 같습니다.

스샷은 카메라위에 변환된 rgb 비트맵 띄운건데 카메라 영상은 스샷안되네요;
아무댓글이라도 부탁드립니다 ㅠ





해결 했습니다. 420포맷 이었습니다.