实现放大功能

serial
Matthew 1 year ago
parent 5f92215356
commit 5052f3a755

@ -1200,7 +1200,7 @@ bool CPhoneDevice::OnImageReady(cv::Mat& mat)
unsigned int extime = (captureResult.exposureTime >= 1000000) ? ((unsigned int)(captureResult.exposureTime / 1000000)) : ((unsigned int)(captureResult.exposureTime / 1000));
strcpy(extimeunit, (captureResult.exposureTime >= 1000000) ? "ms" : "ns");
char str[128] = { 0 };
snprintf(str, sizeof(str), "AE=%u EXPS=%u%s ISO=%d AF=%u LDR=%d AFS=%u AES=%u SCENE=%d AWB=%u", captureResult.autoExposure,
snprintf(str, sizeof(str), "AE=%u EXPS=%u%s ISO=%d AF=%u LDR=%d AFS=%u AES=%u SCENE=%d AWB=%u %0.1fx", captureResult.autoExposure,
extime, extimeunit,
captureResult.sensitibity,
captureResult.autoFocus,
@ -1209,12 +1209,13 @@ bool CPhoneDevice::OnImageReady(cv::Mat& mat)
(unsigned int)captureResult.afState,
(unsigned int)captureResult.aeState,
captureResult.sceneMode,
captureResult.awbState);
captureResult.awbState, captureResult.zoomRatio);
// cv::putText(mat, str, cv::Point(0, mat.rows - 20), cv::FONT_HERSHEY_COMPLEX, fontScale, scalar, thickness1, cv::LINE_AA);
textSize = ft2->getTextSize(str, fontSize, -1, &baseline);
ft2->putText(mat, str, cv::Point(0, mat.rows - fontSize - 20 * ratio),
fontSize, scalarRed, -1, cv::LINE_AA, false);
int fs = fontSize * 2 / 3;
textSize = ft2->getTextSize(str, fs, -1, &baseline);
ft2->putText(mat, str, cv::Point(0, mat.rows - fs - 20 * ratio),
fs, scalarRed, -1, cv::LINE_AA, false);
#endif
for (vector<OSD_INFO>::const_iterator it = mOsds.cbegin(); it != mOsds.cend(); ++it)

@ -421,13 +421,6 @@ int NdkCamera::open(const std::string& cameraId) {
m_imagesCaptured = 0;
if (m_params.zoom)
{
float zoomRatio = m_params.zoomRatio;
// uint8_t afMode = ACAMERA_CONTROL_AF_MODE_AUTO;
status = ACaptureRequest_setEntry_float(capture_request, ACAMERA_CONTROL_ZOOM_RATIO, 1, &zoomRatio);
}
if (afSupported && m_params.autoFocus) {
// uint8_t afMode = ACAMERA_CONTROL_AF_MODE_CONTINUOUS_VIDEO;
@ -435,8 +428,11 @@ int NdkCamera::open(const std::string& cameraId) {
// uint8_t afMode = ACAMERA_CONTROL_AF_MODE_AUTO;
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AF_MODE, 1, &afMode);
if (!m_params.zoom)
{
uint8_t trig = ACAMERA_CONTROL_AF_TRIGGER_START;
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AF_TRIGGER, 1, &trig);
}
if (status == ACAMERA_OK)
{
m_imagesCaptured = ~0;
@ -500,6 +496,19 @@ int NdkCamera::open(const std::string& cameraId) {
status = ACaptureRequest_addTarget(capture_request, image_reader_target);
}
if (m_params.zoom)
{
float zoomRatio = m_params.zoomRatio;
// uint8_t afMode = ACAMERA_CONTROL_AF_MODE_AUTO;
status = ACaptureRequest_setEntry_float(capture_request, ACAMERA_CONTROL_ZOOM_RATIO, 1, &zoomRatio);
if (status != ACAMERA_OK)
{
#ifdef _DEBUG
int aa = 0;
#endif
}
}
// capture session
{
ACameraCaptureSession_stateCallbacks camera_capture_session_state_callbacks;
@ -998,6 +1007,13 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
}
mResult.FocusDistance = focusDistance;
val = { 0 };
status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_ZOOM_RATIO, &val);
if (status == ACAMERA_OK)
{
mResult.zoomRatio = *val.data.f;
}
val = { 0 };
status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AF_STATE, &val);
mResult.afState = *(val.data.u8);

@ -92,6 +92,7 @@ public:
float FocusDistance;
int32_t sensitibity;
uint8_t sceneMode;
float zoomRatio;
};

Loading…
Cancel
Save