日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

【Smart_Point】unique_ptr中独占指针使用MakeFrame

發布時間:2023/11/27 生活经验 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Smart_Point】unique_ptr中独占指针使用MakeFrame 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. DFrame使用方法

std::unique_ptr<deptrum::Frame> MakeFrame(deptrum::FrameType frame_type,int width,int height,int bytes_per_pixel,void* data,uint64_t timestamp,int index,float temperature) {std::unique_ptr<deptrum::Frame> frame{std::make_unique<deptrum::Frame>()};
?frame->index = index;frame->size = width * height * bytes_per_pixel;frame->data = data;frame->timestamp = timestamp;frame->frame_type = frame_type;frame->temperature = temperature;frame->rows = height;frame->cols = width;frame->bytes_per_pixel = bytes_per_pixel;return frame;
}

std::unique_ptr<deptrum::Frame> MakeFrame(deptrum::FrameType frame_type,int width,int height,int bytes_per_pixel,void* data,uint64_t timestamp = 0,int index = 0,float temperature = 0);
?
}  // namespace depth

struct DFrame : public Frame {DFrame(){};DFrame(int rows, int cols, int bytes_per_pixel, FrameType frame_type, void* data) {this->index = 0;this->size = rows * cols * bytes_per_pixel;this->cols = cols;this->rows = rows;this->bytes_per_pixel = bytes_per_pixel;this->temperature = 0;this->frame_type = frame_type;this->timestamp = 0;this->data = data;}DFrame(int rows, int cols, int bytes_per_pixel, FrameType frame_type) {this->index = 0;this->size = rows * cols * bytes_per_pixel;this->cols = cols;this->rows = rows;this->bytes_per_pixel = bytes_per_pixel;this->temperature = 0;this->frame_type = frame_type;this->timestamp = 0;this->data = new uint8_t[size];}void FreeData() {if (data) {delete[](uint8_t*) data;data = nullptr;}}~DFrame() {
//    if (data&&flag) {
//        delete[](uint8_t*) data;
//        data = nullptr;
//    }
// private flag;
};
void MainWindow::on_pushButton_clicked(bool checked)
{int32_t  status=0;
?//1.初始化深度庫DepthMagic* deptrum_depth = nullptr;deptrum_depth = DepthMagic::Create(DepthInputFormat::kUint8);
?DeviceType device_type = DeviceType::kAurora300;if (deptrum_depth->Initialize(FLAGS_config, device_type, 2) != 0) {if(deptrum_depth)DepthMagic::Destroy(deptrum_depth);return;}
?//2.讀圖cv::Mat speckle_image = cv::imread(path_speckle, cv::IMREAD_ANYDEPTH);cv::Mat ir_image=cv::imread(path_ir, cv::IMREAD_ANYDEPTH);cv::transpose(ir_image, ir_image);cv::flip(ir_image, ir_image, 0);cv::resize(ir_image, ir_image, cv::Size(image_output_width_, image_output_height_));
?//3.預處理uint8_t* blurred = new uint8_t[image_input_width_ * image_input_height_];uint8_t* flagged = new uint8_t[image_input_width_ * image_input_height_];Frame *blurred_frame=new Frame; ? blurred_frame->data=blurred;Frame* flagged_frame=new Frame; ? flagged_frame->data=flagged;
?std::shared_ptr<deptrum::Frame> blu_share(blurred_frame,[blurred](deptrum::Frame* blurred_frame) {delete[] blurred;delete blurred_frame;});std::shared_ptr<deptrum::Frame> flg_share(flagged_frame,[flagged](deptrum::Frame* flagged_frame) {delete[] flagged;delete flagged_frame;});status = deptrum_depth->Preprocess(blu_share.get(),flg_share.get(),MakeFrame(deptrum::FrameType::kSpeckleFrame,1280,800,1,speckle_image.data).get());std::cout << "Preprocess status :" << status << std::endl;
?
?//4.深度重建uint16_t depth_roi_mean = 0;uint16_t* depth_image = new uint16_t[400 * 640];status = deptrum_depth->GenerateDepthMap(depth_image,depth_roi_mean,blu_share.get(),MakeFrame(deptrum::FrameType::kIrFrame,400,640,1,ir_image.data).get(),flg_share.get(),1);
?std::cout << "GenerateDepthMap status" << status << std::endl;cv::Mat raw_depth(640, 400, CV_16UC1, depth_image);cv::imwrite("D:\\depthrun\\untitled1\\release\\depth.png", raw_depth * 100);delete[] depth_image;speckle_image.release();ir_image.release();if(deptrum_depth)DepthMagic::Destroy(deptrum_depth);
?
}

總結

以上是生活随笔為你收集整理的【Smart_Point】unique_ptr中独占指针使用MakeFrame的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。