diff --git a/map/Cesium/templates/index.html b/map/Cesium/templates/index.html index aeb88a5..4f6800f 100644 --- a/map/Cesium/templates/index.html +++ b/map/Cesium/templates/index.html @@ -128,10 +128,10 @@ // 设置相机位置到瓦片区域 viewer.camera.setView({ destination: Cesium.Rectangle.fromDegrees( - 109.398422, - 40.873026, - 109.398422, - 40.873026, + 109.484940, + 40.877180, + 109.484940, + 40.877180, ), orientation: { diff --git a/stitch/src/Arith_UnderStitch.cpp b/stitch/src/Arith_UnderStitch.cpp index 64bf662..3d1fce8 100644 --- a/stitch/src/Arith_UnderStitch.cpp +++ b/stitch/src/Arith_UnderStitch.cpp @@ -437,7 +437,7 @@ bool UnderStitch::FilterFrame(FrameInfo para) } // 扫描角过大,跳过 - if (ABS(para.servoInfo.fServoPt) > 40) + if (ABS(para.servoInfo.fServoPt) > 45) { return false; } diff --git a/stitch/src/Version.h b/stitch/src/Version.h index b378154..3701568 100644 --- a/stitch/src/Version.h +++ b/stitch/src/Version.h @@ -2,5 +2,5 @@ #pragma once #include -std::string BUILD_TIME = "BUILD_TIME 2025_11_04-22.46.56"; +std::string BUILD_TIME = "BUILD_TIME 2025_11_05-10.10.32"; std::string VERSION = "BUILD_VERSION 1.0.1"; diff --git a/tests/stitch_S732.cpp b/tests/stitch_S732.cpp index 3a4d574..cf84268 100644 --- a/tests/stitch_S732.cpp +++ b/tests/stitch_S732.cpp @@ -33,6 +33,15 @@ void ProcessVL(string filePath) SINT32 nVLFrameSize = 1.5 * (S732_VL_W * S732_VL_H + S732_VL_W * PARA_VL_LINE_S732); unsigned char* pFrameVL = new unsigned char[nVLFrameSize]; + + bool stitchInit = false; + + std::deque infoBuffer; + const int delayFrames = 5; // 假设延迟3帧 + + std::deque MatBuffer; + const int matdelayFrames = 2; // 假设延迟3帧 + while (!feof(file)) { fread(pFrameVL, 1, nVLFrameSize, file); @@ -40,59 +49,81 @@ void ProcessVL(string filePath) STD_DTArith_Record732 Paras_VL = { 0 }; memcpy(&Paras_VL, (unsigned char*)(pFrameVL + int(1.5 * S732_VL_W * S732_VL_H)), sizeof(STD_DTArith_Record732)); - FrameInfo info = { 0 }; - info.nFrmID = i; + FrameInfo info_rev = { 0 }; + info_rev.nFrmID = i; - info.camInfo.fPixelSize = Paras_VL.trackInputPara.stCameraInfo.fPixelSize; + info_rev.camInfo.fPixelSize = Paras_VL.trackInputPara.stCameraInfo.fPixelSize; - info.camInfo.nFocus = Paras_VL.trackInputPara.stCameraInfo.nFocus; + info_rev.camInfo.nFocus = Paras_VL.trackInputPara.stCameraInfo.nFocus; - info.craft.stAtt.fYaw = Paras_VL.trackInputPara.stAirCraftInfo.stAtt.fYaw; - info.craft.stAtt.fPitch = Paras_VL.trackInputPara.stAirCraftInfo.stAtt.fPitch; - info.craft.stAtt.fRoll = Paras_VL.trackInputPara.stAirCraftInfo.stAtt.fRoll; + info_rev.craft.stAtt.fYaw = Paras_VL.trackInputPara.stAirCraftInfo.stAtt.fYaw; + info_rev.craft.stAtt.fPitch = Paras_VL.trackInputPara.stAirCraftInfo.stAtt.fPitch; + info_rev.craft.stAtt.fRoll = Paras_VL.trackInputPara.stAirCraftInfo.stAtt.fRoll; - info.craft.stPos.B = Paras_VL.trackInputPara.stAirCraftInfo.stPos.B; - info.craft.stPos.L = Paras_VL.trackInputPara.stAirCraftInfo.stPos.L; - info.craft.stPos.H = Paras_VL.trackInputPara.stAirCraftInfo.stPos.H; + info_rev.craft.stPos.B = Paras_VL.trackInputPara.stAirCraftInfo.stPos.B; + info_rev.craft.stPos.L = Paras_VL.trackInputPara.stAirCraftInfo.stPos.L; + info_rev.craft.stPos.H = Paras_VL.trackInputPara.stAirCraftInfo.stPos.H; + info_rev.nEvHeight = info_rev.craft.stPos.H - 1360; - info.nEvHeight = info.craft.stPos.H - 1360; + info_rev.servoInfo.fServoAz = Paras_VL.trackInputPara.stServoInfo.fServoAz; + info_rev.servoInfo.fServoPt = Paras_VL.trackInputPara.stServoInfo.fServoPt; - info.servoInfo.fServoAz = Paras_VL.trackInputPara.stServoInfo.fServoAz; - info.servoInfo.fServoPt = Paras_VL.trackInputPara.stServoInfo.fServoPt; + info_rev.nWidth = S732_VL_W; + info_rev.nHeight = S732_VL_H; - info.nWidth = S732_VL_W; - info.nHeight = S732_VL_H; + FrameInfo info = info_rev; - //info.craft.stAtt.fYaw += gr.generate(); - //info.craft.stAtt.fPitch += gr.generate(); - //info.craft.stAtt.fRoll += gr.generate(); cv::Mat mat_src(S732_VL_H * 1.5, S732_VL_W, CV_8UC1, pFrameVL); cv::Mat IMG; - cv::cvtColor(mat_src, IMG, cv::COLOR_YUV2BGR_NV12); + cv::cvtColor(mat_src, IMG, cv::COLOR_YUV2GRAY_NV21); + + cv::Mat f; + IMG.convertTo(f, CV_32F, 1.0 / 255.0); + cv::pow(f, 0.8, f); // gamma < 1 => 变亮 + cv::Mat bright; + f.convertTo(bright, CV_8U, 255.0); + + cv::cvtColor(bright, bright, cv::COLOR_GRAY2BGR); cv::Mat IMG_show; cv::resize(IMG, IMG_show, cv::Size(IMG.cols / 4, IMG.rows / 4)); imshow("IMG_show", IMG_show); - frame.enPixelFormat = GD_PIXEL_FORMAT_NV12; + + + MatBuffer.push_back(bright.clone()); + + if (MatBuffer.size() < matdelayFrames) + { + continue; + } + + cv::Mat matuse = MatBuffer.front(); + + MatBuffer.pop_front(); + + + frame.enPixelFormat = GD_PIXEL_FORMAT_RGB_PACKED; frame.u32Width = S732_VL_W; frame.u32Height = S732_VL_H; - frame.u64VirAddr[0] = pFrameVL; + frame.u64VirAddr[0] = matuse.data; //imwrite("D:/imgVL_u.jpg", IMG); - if (i == 0 /*|| i == 200*/) + if (!stitchInit) { + stitchInit = true; stitcher->Init(info); UPanConfig cfg = { 0 }; cfg.bOutGoogleTile = 1; cfg.bOutFrameTile = 0; + cfg.bUseBA = 1; stitcher->SetConfig(cfg); stitcher->SetOutput("baotou","E:/google_tiles"); @@ -102,7 +133,7 @@ void ProcessVL(string filePath) mat_pan = cv::Mat(pan.u32Height, pan.u32Width, CV_8UC4, pan.u64VirAddr[0]); - output.open("E:/output.mp4", VideoWriter::fourcc('H', '2', '6', '4'), 5, Size(pan.u32Width / 8, pan.u32Height / 8), true); + output.open("E:/output.mp4", VideoWriter::fourcc('M', 'P', '4', 'V'), 25, Size(pan.u32Width / 8, pan.u32Height / 8), true); if (!output.isOpened()) { cout << "打开视频失败" << endl; @@ -126,41 +157,38 @@ void ProcessVL(string filePath) cout << "time:" << tm.getTimeMilli() << endl; } - Mat pan_rgb, pan_rgb_ds; - cv::cvtColor(mat_pan, pan_rgb, cv::COLOR_BGRA2BGR); + Mat pan_ds; + Mat pan_rgb_ds(cv::Size(mat_pan.cols / 8, mat_pan.rows / 8),CV_8UC3); + cv::resize(mat_pan, pan_ds, cv::Size(mat_pan.cols / 8, mat_pan.rows / 8)); + + cv::cvtColor(pan_ds, pan_rgb_ds, cv::COLOR_BGRA2BGR); + - cv::resize(pan_rgb, pan_rgb_ds, cv::Size(pan_rgb.cols / 8, pan_rgb.rows / 8)); output.write(pan_rgb_ds); imshow("pan_opt", pan_rgb_ds); - waitKey(1); + if (cv::waitKey(1) == 27) + { + break; + } i = i + 1; } - cv::TickMeter tm; - tm.start(); - // 处理帧 - stitcher->OptAndOutCurrPan(); + //cv::TickMeter tm; + //tm.start(); + //// 处理帧 + //stitcher->OptAndOutCurrPan(); - tm.stop(); + //tm.stop(); - cout << "time opt:" << tm.getTimeMilli() << endl; + //cout << "time opt:" << tm.getTimeMilli() << endl; - Mat pan_rgb, pan_rgb_ds; - cv::cvtColor(mat_pan, pan_rgb, cv::COLOR_BGRA2BGR); - cv::resize(pan_rgb, pan_rgb_ds, cv::Size(pan_rgb.cols / 8, pan_rgb.rows / 8)); - - for (int i = 0; i < 25; i++) - { - cv::putText(pan_rgb_ds, "BA opt", cv::Point(100, 40), 0, 1, cv::Scalar(255, 0, 0)); - output.write(pan_rgb_ds); - } waitKey(1); @@ -170,17 +198,8 @@ void ProcessVL(string filePath) } - - - - - - - - - int main() { - ProcessVL("D:/S732挂飞1101/20251101_091550742_2.yuv"); + ProcessVL("D:/S732挂飞1101/20251101_092143724_3.yuv"); return 0; } \ No newline at end of file diff --git a/tests/stitch_udp.cpp b/tests/stitch_udp.cpp index 7b1bd95..4daa66d 100644 --- a/tests/stitch_udp.cpp +++ b/tests/stitch_udp.cpp @@ -5,7 +5,7 @@ int main(int argc, char* argv[]) { DecodeData* m_DecodeData = new DecodeData(); - std::string filestr = "C:/Users/75929/Desktop/S732/1101VL.dat"; + std::string filestr = "C:/Users/75929/Desktop/S732/1105.dat"; //std::string filestr = "E:/03855jcw/S732/H265data/1080ir2.dat";