뷰포리아 카메라로 얻은 이미지를 ZXing 으로 QR마크 decode할 때 주의할점

2017. 10. 31. 03:32프로그래밍

반응형
SMALL

뷰포리아 카메라로 얻은 이미지를 

ZXing 라이브러리를 이용해 마커를 디코딩할때 , 예제대로 한것 같은데 안됄때 한가지 짚어볼 점.




CameraDevice.Instance.SetFrameFormat(Image.PIXEL_FORMAT.RGB888, true);


qrresult = barCodeReader.Decode(cameraFeed.Pixels, cameraFeed.BufferWidth, cameraFeed.BufferHeight, RGBLuminanceSource.BitmapFormat.RGB24);




의 마지막 인자 비트맵 포맷이 , 카메라의 펙셀포맷과 맞는지 확인해보자.




PIXEL_FORMAT.RGB888 = RGB24비트

PIXEL_FORMAT.RGB565 = RGB16비트

라고 생각하자.



이 포맷을 맞춰줘야하는 이유는 포맷에 따라 디코딩 길이를 다르게 잡기 때문이다.


한 예로 그레이8 의 경우 한 픽셀에 대하여 한개의 바이트만 필요로 하는데, 

RGB의 경우 한 픽셀을 표현하는데 R,G,B 각각 한개씩 총 3개의 바이트가 필요하다


카메라피드의 픽셀안에 RGB포멧의 경우 3개의 바이트 묶음 단위로 계산하여 디코딩하고,

그레이는 한 픽셀 단위로 계산하여 디코딩하는 방식인 것이다.


큐알디코딩은 자원을 은근 많이 먹는다.

최적화를 생각해서

큐알마커 인식에 RGB까지 필요하겠어? 하며

디코드 등급을 그레이포맷으로 내리는 경우가 있을수있다. 


그렇게 돼면 코드상으로 아무 문제 없어보이는데 디코딩의 계산식이 달라져서 리절트에 아무것도 해독해내지 못하고 빈값을 반환하는데, 마치 디코딩이 정상작동하는데 큐알마커를 찾아내지 못하는 것처럼 오해하게 됀다.



반응형
LIST