raw 图片读取

 


RAW图像数据到RGB
https://blog.csdn.net/peng864534630/article/details/78177211


是的,raw是每个像素一种颜色,而一个像素(通常)是12位。因此,原始像素共有三种颜色,有些是蓝色,有些是红色,那些计数的2倍是绿色。
然后,原始处理软件(要制作RGB JPG,可以直接在相机中,也可以稍后在外部使用)将原始数据转换为RGB图像,以便我们可以使用它。
这是插值,将其他两种颜色的相邻像素合并到这些RGB像素中的每一个中,但所有像素均变为RGB像素。
https://qastack.cn/photo/86170/raw-files-store-3-colors-per-pixel-or-only-one


细说raw图像格式


 raw读取、不同格式图片差异
https://blog.csdn.net/darlingqiang/article/details/109259505

raw图像(本文是raw8),opencv的imread不支持直接读入,但可以通过c++的ifstream读入。
注意的一点是,读取时,mode要设置成std::ios::binary,即把raw图像当做二进制文件读入。

   // open raw data
    const 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 buffer
    char* buffer = new char [length];
    // read函数读取(拷贝)流中的length各字节到buffer
    fin.read(buffer, length);
 
    // construct opencv mat and show image
    cv::Mat image(cv::Size(1280, 800), CV_8UC1, buffer);
    cv::imshow("test", image);
    cv::waitKey();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值