opencv操作raw文件

举报
风吹稻花香 发表于 2022/06/08 00:48:06 2022/06/08
【摘要】 python版: import numpy as npimport cv2height=480width=640channels=3# img = cv2.imread('data/04/04(1).bmp')# # 这里需要我们在当前目录下放一张名为cat.jpg的文件# img.tofile('04(1).raw')# #利...

python版:


  
  1. import numpy as np
  2. import cv2
  3. height=480
  4. width=640
  5. channels=3
  6. # img = cv2.imread('data/04/04(1).bmp')
  7. # # 这里需要我们在当前目录下放一张名为cat.jpg的文件
  8. # img.tofile('04(1).raw')
  9. # #利用numpy中array的函数tofile将数据写入文件
  10. # #这时我们发现当前目录下新增了一个文件,名为cat.raw
  11. # # 我们先确定原图片的数据格式和大小,通道数,否者无法进行下一步转换
  12. # type = img.dtype#得到数据格式,如uint8和uint16等
  13. # height,width, channels = img.shape# 得到图像大小和通道数
  14. # 利用numpydefromfile函数读取raw文件,并指定数据格式
  15. imgData = np.fromfile(r'C:\Users\Administrator\Documents\tmp\ceshia\ceshia\1648629378140_0.7237443_rgb.raw', dtype=np.uint8)
  16. # 利用numpy中array的reshape函数将读取到的数据进行重新排列。
  17. imgData = imgData.reshape(height,width,channels)
  18. imgData=cv2.cvtColor(imgData,cv2.COLOR_BGR2RGB)
  19. to_dir=r'C:\Users\Administrator\Documents\tmp\ceshia\ceshia'
  20. cv2.imwrite(to_dir+"jia.jpg",imgData)
  21. # 展示图像
  22. cv2.imshow('img',imgData)
  23. # 注意到这个函数只能显示uint8类型的数据,如果是uint16的数据请先转成uint8。否则图片显示会出现问题。**
  24. cv2.waitKey()

c++版:


  
  1. #include<iostream>
  2. #include<opencv2/opencv.hpp>
  3. #include<fstream>
  4. using namespace std;
  5. using namespace cv;
  6. int main()
  7. {
  8. // open raw data
  9. const std::string file_path = "D:/E_Dragon/OPENCV/testpictures/1.raw";
  10. std::ifstream fin;
  11. // 注意,这里要指定binary读取模式
  12. fin.open(file_path, std::ios::binary);
  13. if (!fin) {
  14. std::cerr << "open failed: " << file_path << std::endl;
  15. }
  16. // seek函数会把标记移动到输入流的结尾
  17. fin.seekg(0, fin.end);
  18. // tell会告知整个输入流(从开头到标记)的字节数量
  19. int length = fin.tellg();
  20. // 再把标记移动到流的开始位置
  21. fin.seekg(0, fin.beg);
  22. std::cout << "file length: " << length << std::endl;
  23. // load buffer
  24. char* buffer = new char[length];
  25. // read函数读取(拷贝)流中的length各字节到buffer
  26. fin.read(buffer, length);
  27. // construct opencv mat and show image
  28. cv::Mat image(cv::Size(720, 540), CV_8UC1, buffer);
  29. cv::imshow("test", image);
  30. cv::waitKey();
  31. }


原文链接:https://blog.csdn.net/weixin_51229250/article/details/119789057

文章来源: blog.csdn.net,作者:AI视觉网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/125160062

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。