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

歡迎訪問 生活随笔!

生活随笔

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

生活经验

ISP【三】———— raw读取、不同格式图片差异

發布時間:2023/11/27 生活经验 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ISP【三】———— raw读取、不同格式图片差异 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

part zero:

如何處理.raw格式數據,讀取和轉化

matlab讀取raw圖 (mark讀取圖片尺寸和位數均可設置,圖片尺寸M,N,圖片數據類型8bit,16bit改成uint16)

clear;
clc;
close all;
%?
% rotpath = imread('D:\matlab\ncc_ive_pc_diff\ncc_diff\nv21_test_dst_rotate90.raw'); %%1280*800 8bit?
% mesh(nv_rot);
% path= imread('C:\Users\Administrator\Desktop\nv21_test_dst_rotate90.raw'); %%1280*800 8bit?[filename, pathname] = uigetfile('D:\matlab\ncc_ive_pc_diff\ncc_diff\nv21_test_dst_rotate90.raw', '讀入圖像');
f1 = fopen([pathname, filename], 'r');
data = fread(f1, 'uint8');
fclose(f1);
len = length(data);
k = len/(1280*800);
image = reshape(data, 800, 1280, k);
mesh(image);[filename2, pathname2] = uigetfile('D:\matlab\ncc_ive_pc_diff\ncc_diff\nv21_test_src.raw', '讀入圖像');
f2 = fopen([pathname2, filename2], 'r');
data2 = fread(f2, 'uint8');
fclose(f2);
len2 = length(data2);
k2 = len2/(1280*800);
image2 = reshape(data, 800, 1280, k2);
figure(2);
mesh(image2);image_diff = image2-image;
figure(3);
mesh(image_diff);

raw圖像(本文是raw8),opencv的imread不支持直接讀入,但可以通過c++的ifstream讀入。

注意的一點是,讀取時,mode要設置成std::ios::binary,即把raw圖像當做二進制文件讀入。

讀取后,構造opencv mat,并顯示出來,代碼如下:

   // open raw dataconst std::string file_path = "/home/zhangshan/image/image.raw";std::ifstream fin;// 注意,這里要指定binary讀取模式fin.open(file_path,  std::ios::binary);if (!fin) {std::cerr << "open failed: " << file_path << std::endl;}// seek函數會把標記移動到輸入流的結尾fin.seekg(0, fin.end);// tell會告知整個輸入流(從開頭到標記)的字節數量int length = fin.tellg();// 再把標記移動到流的開始位置fin.seekg(0, fin.beg);std::cout << "file length: " << length << std::endl;// load bufferchar* buffer = new char [length];// read函數讀取(拷貝)流中的length各字節到bufferfin.read(buffer, length);// construct opencv mat and show imagecv::Mat image(cv::Size(1280, 800), CV_8UC1, buffer);cv::imshow("test", image);cv::waitKey();

part one:

raw格式圖片是相機拍攝并記錄下來的帶有原始信息的視頻或者圖片,包含傳感器元數據、傳感器尺寸、顏色屬性、配置文件等等信息,以方便后期對視頻及圖片做更大幅度的處理。幾乎未經壓縮,也完全沒進行各種處理,與記錄拍攝時“用戶的相機設置信息”數據被一同保存下來。既然是原始文件,一定很大,對傳輸帶寬、存儲空間都有特別的要求,而且每個攝像機、照相機廠家對自己的原始文件(RAW)開放程度、記錄方式等要求都不一樣。

?

參考:https://zhuanlan.zhihu.com/p/129055040

part two:

不同圖片格式的區別?

part three:

mipi raw與raw區別

part four:?

  uint8_t* speckle;cv::Mat speckle_image;if (speckle_file_extern == ".raw") {speckle = new uint8_t[kInWidth_g * kInHeight_g];ASSERT_NE(speckle, nullptr);FILE* fp = fopen(imagesPath.speckle_Path_.c_str(), "rb");ASSERT_NE(fp, nullptr);fread(speckle, 1, kInWidth_g * kInHeight_g, fp);fclose(fp);} else if (speckle_file_extern == ".bmp") {cv::Mat speckle_image_t = cv::imread(imagesPath.speckle_Path_, cv::IMREAD_ANYDEPTH);ASSERT_FALSE(speckle_image_t.empty());speckle_image = speckle_image_t.clone();speckle = speckle_image.data;}delete[] out_depth;if (ir_file_extern == ".raw")delete[] ir;if (speckle_file_extern == ".raw")delete[] speckle;

part five:

raw 參考blog:

[1]https://blog.csdn.net/qq_42261630/article/details/102922737

總結

以上是生活随笔為你收集整理的ISP【三】———— raw读取、不同格式图片差异的全部內容,希望文章能夠幫你解決所遇到的問題。

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