diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 99c828ae..4cc3c4a2 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1770,8 +1770,10 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< IDevice::PHOTO_INFO localPhotoInfo = mPhotoInfo; IDevice::SerialsPhotoParam param = { "", 0, 0 }; GetPhotoSerialsParamCb(param); + vector osds; + osds.swap(mOsds); - std::thread t([localPhotoInfo, param, pThis,wid_serial]() mutable + std::thread t([localPhotoInfo, param, pThis, osds, wid_serial]() mutable { if (localPhotoInfo.preset != 0 && localPhotoInfo.preset != 0xFF) { @@ -1785,7 +1787,27 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< } CameraPhotoCmd(ts, localPhotoInfo.channel, 0, localPhotoInfo.resolution, 0, param.serfile, param.baud, param.addr); XYLOG(XYLOG_SEVERITY_INFO, "Taking photo over"); - pThis->TakePTZPhotoCb(3, localPhotoInfo); + + IMAGE_DEF photo = { 0 }; + std::vector objects; + GetImage(0, &photo); + if(photo.state == 5){ + XYLOG(XYLOG_SEVERITY_INFO,"Get Serials Photo, PhotoID = %s", photo.photoname); + + cv::Mat img = cv::imread(photo.photoname, cv::IMREAD_COLOR); + if (!img.empty()) + { + int result = std::remove(photo.photoname); + pThis->TakePhotoCb(1, localPhotoInfo, "", photo.phototime - 28800, objects); + pThis->PostProcessPhoto(localPhotoInfo, osds, photo.photoname, "", img); + } + + }else + { + XYLOG(XYLOG_SEVERITY_WARNING,"Get Serials Photo Failed"); + pThis->TakePhotoCb(0, localPhotoInfo, photo.photoname, photo.phototime - 28800, objects); + } +// pThis->TakePTZPhotoCb(3, localPhotoInfo); pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); GpioControl::setCam3V3Enable(false, localPhotoInfo.closeDelayTime); pThis->ReleaseWakelock(wid_serial);