|
|
|
@ -1614,49 +1614,51 @@ bool CPhoneDevice::OnImageReady(cv::Mat& mat)
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_WARNING, "Channel AI Disabled");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#ifdef OUTPUT_CAMERA_DBG_INFO
|
|
|
|
|
// #ifdef OUTPUT_CAMERA_DBG_INFO
|
|
|
|
|
if (mPhotoInfo.outputDbgInfo != 0)
|
|
|
|
|
{
|
|
|
|
|
cv::Scalar scalarRed(0, 0, 255); // red
|
|
|
|
|
|
|
|
|
|
cv::Scalar scalarRed(0, 0, 255); // red
|
|
|
|
|
NdkCamera::CAPTURE_RESULT captureResult = mCamera->getCaptureResult();
|
|
|
|
|
|
|
|
|
|
NdkCamera::CAPTURE_RESULT captureResult = mCamera->getCaptureResult();
|
|
|
|
|
char extimeunit[4] = { 0 };
|
|
|
|
|
unsigned int extime = (captureResult.exposureTime >= 1000000) ? ((unsigned int)(captureResult.exposureTime / 1000000)) : ((unsigned int)(captureResult.exposureTime / 1000));
|
|
|
|
|
strcpy(extimeunit, (captureResult.exposureTime >= 1000000) ? "ms" : "μs");
|
|
|
|
|
char str[128] = { 0 };
|
|
|
|
|
snprintf(str, sizeof(str), "AE=%u AF=%u EXPS=%u%s(%d) ISO=%d AFS=%u AES=%u AWBS=%u SCENE=%d LDR=%d(%u) %0.1fx T=%u FD=%lld",
|
|
|
|
|
captureResult.autoExposure, captureResult.autoFocus,
|
|
|
|
|
extime, extimeunit, captureResult.compensation, captureResult.sensitivity,
|
|
|
|
|
// isnan(captureResult.FocusDistance) ? 0 : captureResult.FocusDistance,
|
|
|
|
|
(unsigned int)captureResult.afState, (unsigned int)captureResult.aeState, captureResult.awbState,
|
|
|
|
|
captureResult.sceneMode, GpioControl::getLightAdc(), (unsigned int)captureResult.avgY, captureResult.zoomRatio,
|
|
|
|
|
(uint32_t)captureResult.duration, captureResult.frameDuration);
|
|
|
|
|
// cv::putText(mat, str, cv::Point(0, mat.rows - 20), cv::FONT_HERSHEY_COMPLEX, fontScale, scalarWhite, thickness1, cv::LINE_AA);
|
|
|
|
|
|
|
|
|
|
char extimeunit[4] = { 0 };
|
|
|
|
|
unsigned int extime = (captureResult.exposureTime >= 1000000) ? ((unsigned int)(captureResult.exposureTime / 1000000)) : ((unsigned int)(captureResult.exposureTime / 1000));
|
|
|
|
|
strcpy(extimeunit, (captureResult.exposureTime >= 1000000) ? "ms" : "μs");
|
|
|
|
|
char str[128] = { 0 };
|
|
|
|
|
snprintf(str, sizeof(str), "AE=%u AF=%u EXPS=%u%s(%d) ISO=%d AFS=%u AES=%u AWBS=%u SCENE=%d LDR=%d(%u) %0.1fx T=%u FD=%lld",
|
|
|
|
|
captureResult.autoExposure, captureResult.autoFocus,
|
|
|
|
|
extime, extimeunit, captureResult.compensation, captureResult.sensitivity,
|
|
|
|
|
// isnan(captureResult.FocusDistance) ? 0 : captureResult.FocusDistance,
|
|
|
|
|
(unsigned int)captureResult.afState, (unsigned int)captureResult.aeState, captureResult.awbState,
|
|
|
|
|
captureResult.sceneMode, GpioControl::getLightAdc(), (unsigned int)captureResult.avgY, captureResult.zoomRatio,
|
|
|
|
|
(uint32_t)captureResult.duration, captureResult.frameDuration);
|
|
|
|
|
// cv::putText(mat, str, cv::Point(0, mat.rows - 20), cv::FONT_HERSHEY_COMPLEX, fontScale, scalarWhite, thickness1, cv::LINE_AA);
|
|
|
|
|
int fs = fontSize * 2 / 3;
|
|
|
|
|
textSize = ft2->getTextSize(str, fs, -1, &baseline);
|
|
|
|
|
cv::Point lt(0, mat.rows - fs - 20 * ratio);
|
|
|
|
|
cv::Point lt2(0, lt.y - 2 * ratio);
|
|
|
|
|
cv::Point rb(0 + textSize.width + 2 * ratio, lt2.y + textSize.height + 8 * ratio);
|
|
|
|
|
|
|
|
|
|
int fs = fontSize * 2 / 3;
|
|
|
|
|
textSize = ft2->getTextSize(str, fs, -1, &baseline);
|
|
|
|
|
cv::Point lt(0, mat.rows - fs - 20 * ratio);
|
|
|
|
|
cv::Point lt2(0, lt.y - 2 * ratio);
|
|
|
|
|
cv::Point rb(0 + textSize.width + 2 * ratio, lt2.y + textSize.height + 8 * ratio);
|
|
|
|
|
if (rb.x > (int)width - 1)
|
|
|
|
|
{
|
|
|
|
|
rb.x = (int)width - 1;
|
|
|
|
|
}
|
|
|
|
|
if (rb.y > (int)height - 1)
|
|
|
|
|
{
|
|
|
|
|
rb.y = (int)height - 1;
|
|
|
|
|
}
|
|
|
|
|
cv::Mat roi = mat(cv::Rect(lt2, rb));
|
|
|
|
|
cv::Mat clrMat(roi.size(), CV_8UC3, scalarWhite);
|
|
|
|
|
double alpha = 0.5;
|
|
|
|
|
cv::addWeighted(clrMat, alpha, roi, 1.0 - alpha, 0.0, roi);
|
|
|
|
|
|
|
|
|
|
if (rb.x > (int)width - 1)
|
|
|
|
|
{
|
|
|
|
|
rb.x = (int)width - 1;
|
|
|
|
|
}
|
|
|
|
|
if (rb.y > (int)height - 1)
|
|
|
|
|
{
|
|
|
|
|
rb.y = (int)height - 1;
|
|
|
|
|
// cv::rectangle(mat, lt2, rb,cv::Scalar(255, 255, 255), -1);
|
|
|
|
|
ft2->putText(mat, str, lt, fs, scalarRed, -1, cv::LINE_AA, false);
|
|
|
|
|
// DrawOutlineText(ft2, mat, str, cv::Point(0, mat.rows - fs - 20 * ratio), fs, scalarWhite, 1);
|
|
|
|
|
}
|
|
|
|
|
cv::Mat roi = mat(cv::Rect(lt2, rb));
|
|
|
|
|
cv::Mat clrMat(roi.size(), CV_8UC3, scalarWhite);
|
|
|
|
|
double alpha = 0.5;
|
|
|
|
|
cv::addWeighted(clrMat, alpha, roi, 1.0 - alpha, 0.0, roi);
|
|
|
|
|
|
|
|
|
|
// cv::rectangle(mat, lt2, rb,cv::Scalar(255, 255, 255), -1);
|
|
|
|
|
ft2->putText(mat, str, lt, fs, scalarRed, -1, cv::LINE_AA, false);
|
|
|
|
|
// DrawOutlineText(ft2, mat, str, cv::Point(0, mat.rows - fs - 20 * ratio), fs, scalarWhite, 1);
|
|
|
|
|
|
|
|
|
|
#endif // OUTPUT_CAMERA_DBG_INFO
|
|
|
|
|
// #endif // OUTPUT_CAMERA_DBG_INFO
|
|
|
|
|
|
|
|
|
|
for (vector<OSD_INFO>::const_iterator it = mOsds.cbegin(); it != mOsds.cend(); ++it)
|
|
|
|
|
{
|
|
|
|
|