2012-10-30 6 views
1

실제로 삼성 은하 탭 10.1을 사용하여 안드로이드에 응용 프로그램을 구축하고 있습니다. 장치의 후면 카메라를 사용하여 휘도 값을 가져 오려고합니다.안드로이드의 백 카메라를 사용하여 휘도를 계산하십시오.

문제는 빛 센서가 우리에게주는 값을 얻기 위해 장치 뒤쪽에 빛 센서가 없다는 것입니다. 그래서 저는 이것을 수동으로해야만합니다. 사실 프레임을 실시간으로 가져와야하고 각 프레임마다 그레이 스케일 이미지의 평균을 계산해야합니다. 여전히 문제가 있습니다.이 방법을 사용하면 카메라의 자동 보정 및 화이트 밸런싱.

예를 들어, 카메라를 매우 밝은 곳 앞쪽으로 향하면 카메라가 밝은 영역에 초점을 맞추고 밝은 점을 벗어나는 모든 영역이 매우 어둡게되어 그레이 스케일 이미지의 평균이 나타납니다 우리에게 거짓 값 (이 경우 어두운 영역이 있기 때문에 높지는 않음). API에서 수정을 사용하지 않는 방법을 검색했지만 재미있는 것을 찾지 못했습니다.

그래서 질문은 : 백 카메라를 사용하여 휘도 값을 얻는 방법이 있습니까?

감사합니다.

답변

1

현재 안드로이드 카메라 API에서이 데이터를 얻을 수있는 방법이 없다는 것이 맞습니다.

장치에 따라 사진을 캡처 한 다음 EXIF ​​데이터를 읽을 수 있습니다. 이렇게하면 노출 (ISO 및 셔터 속도)을 볼 수 있습니다. 앱이 Tiny Light Meter과 같은 방식입니다. 문제는 일부 장치가 EXIF ​​데이터를 완전히 채우지 않아서이 방법이 실패했기 때문입니다.

+0

내가 틀렸을 경우 댓글이되어야합니다. 그렇지 않으면 그대로 게시하고 답변을 삭제하십시오. –

+0

알고있는 한, 이것은 현재 API 지원이 없지만 일부 사용자는 EXIF ​​데이터를 사용하여 성공한 것입니다. –

+0

나는 안드로이드에 대한 경험이 없다. (나는 그것을 사용한다.)하지만 내가 말할 수있는 한 당신은 당신의 대답에 다른 질문을하고있다. –

0

일부 장치 (최신 안드로이드에만 해당)에서는 스팟 측광이 지원됩니다. AsyncTask와 같은 별도의 타이머 스레드에 의해 트리거 된 JPEG 콜백을 사용하여 선택 지점으로 미터링 할 EXIF ​​정보를 읽을 수 있습니다. 오래된 장치에

//on Event Touch callback on your SurfaceView 
x=event.getX(); 
y=event.getY(); 
params=camera.getParameters(); 
... //check for rotation, calculate focus point (x, y: -1000, 1000) 
if(params.getMaxNumMeteringAreas() > 0){ 
    //draw a meter area, however big you want, 1000 is weight (0-1000) 
    Camera.Area ca=new Area(new Rect(x-25, y-25, x+25, y+25), 1000); 
    List<Camera.Area> areas=new ArrayList<Area>(); 
    areas.add(ca); 
    params.setFocusAreas(areas); 
    params.setMeteringAreas(areas); 
    camera.setParameters(params); 
}else{ 
    //process the Bitmap and do the below... 
} 

(당신은 이전 버전과의 호환성을 원하는 경우), 당신은 여전히 ​​(코드 저장) 포커스 포인트를 설정하고 다음 픽셀의 평균을이 사용할 수 있는지 여부를 확인하려면, 당신은 사용할 수 있습니다 EXIF 값 (어두운 경우 노출을 낮추는 등)과 비교하여 초점 (폭과 높이의 6 % 사용)을 중심으로합니다. 이를 위해 push-to-meter 버튼을 사용하고 싶을 것입니다 (이전 장비는 JPEG 콜백을 할 때 지연되기 때문에). 두 가지 방법으로

average=((r+g+b)/3-128)/256 
myEV=myEV+myEV*average 

, 당신이 읽고있는 이미지가 제대로 (당신이 이미지 뷰에 그것을 넣고 미리보기 비교하여 확인하실 수 있습니다) 회전되어 있는지 확인합니다.

EV에서 당신은 비교적 쉽게 (또는 원하는 측정이 무엇이든) Lux 또는 Foot Candles로 쉽게 변환 할 수 있습니다.