From 285bae89647acf016b6160f1b8723e588f1159b2 Mon Sep 17 00:00:00 2001 From: Matthew Date: Sun, 12 May 2024 23:14:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=AE=E5=BA=A6=E4=BD=8E=E4=BA=8E6=E7=9A=84?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=B3=BB=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 154bdb52..fc535106 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1254,16 +1254,33 @@ bool CPhoneDevice::OnImageReady(cv::Mat& mat) photoInfo.autoExposure = 0; if (captureResult.avgY == 0) { - photoInfo.exposureTime = 400; - photoInfo.sensitivity = 2000; + photoInfo.exposureTime = 600; + photoInfo.sensitivity = 2500; + } + else if (captureResult.avgY <= 6) + { + photoInfo.exposureTime = captureResult.exposureTime / 1000000 * 150 / captureResult.avgY; + photoInfo.sensitivity = photoInfo.sensitivity * 80 / captureResult.avgY; + if (photoInfo.sensitivity < captureResult.sensitivity) + { + photoInfo.sensitivity = captureResult.sensitivity; + } + else if (photoInfo.sensitivity > 3000) + { + photoInfo.sensitivity = 3000; + } } else { photoInfo.exposureTime = captureResult.exposureTime / 1000000 * 120 / captureResult.avgY; photoInfo.sensitivity = photoInfo.sensitivity * 60 / captureResult.avgY; - if (photoInfo.sensitivity > 2000) + if (photoInfo.sensitivity < captureResult.sensitivity) + { + photoInfo.sensitivity = captureResult.sensitivity; + } + else if (photoInfo.sensitivity > 3000) { - photoInfo.sensitivity = 2000; + photoInfo.sensitivity = 3000; } } @@ -1282,7 +1299,7 @@ bool CPhoneDevice::OnImageReady(cv::Mat& mat) char str[128] = { 0 }; snprintf(str, sizeof(str), "AE=%u EXPS=%u%s(%d) ISO=%d AF=%u LDR=%d(%u) AFS=%u AES=%u SCENE=%d AWB=%u %0.1fx", captureResult.autoExposure, extime, extimeunit, captureResult.compensation, - captureResult.sensitibity, + captureResult.sensitivity, captureResult.autoFocus, // isnan(captureResult.FocusDistance) ? 0 : captureResult.FocusDistance, GpioControl::getLightAdc(), (unsigned int)captureResult.avgY,