10_OpenCV读取原始raw(raw10和raw8),转换成rgb和灰度图,并显示
void ReadRaw8(){std::string strFilename = "raw8.raw";int nWidth = 1456;int nHeight = 1096;uint8_t* pRawbuf = new uint8_t[(size_t)nWidth * nHeight];if (!pRawbuf) {std::cout << "ERROR: 开辟内存失败!" << std::endl;return;}FILE* pfile = nullptr;errno_t err_code = fopen_s(&pfile, strFilename.c_str(), "rb");if (!pfile){std::cout << "ERROR: 打开文件失败!" << std::endl;return;}fread(pRawbuf, 1, ((size_t)nWidth * nHeight), pfile);fclose(pfile);pfile = nullptr;cv::Mat img(nHeight, nWidth, CV_8UC1, pRawbuf);cv::namedWindow(strFilename, cv::WINDOW_NORMAL);cv::imshow(strFilename, img);cv::waitKey(0);cv::Mat rgb;cv::Mat gray;cv::cvtColor(img, rgb, cv::COLOR_BayerRG2RGB);cv::imshow(strFilename, rgb);cv::waitKey(0);cv::cvtColor(rgb, gray, cv::COLOR_RGB2GRAY);cv::imshow(strFilename, gray);cv::waitKey(0);
}void ReadRaw10(){// 读取raw10图片std::string strFilename = "raw10.raw";int nWidth = 4208;int nHeight = 3120;short* pRaw10buf = new short[(size_t)nWidth * nHeight];if (!pRaw10buf){std::cout << "ERROR: 开辟内存失败!" << std::endl;return;}FILE* pfile = nullptr;errno_t err_code = fopen_s(&pfile, strFilename.c_str(), "rb");if (!pfile) {std::cout << "ERROR: 打开文件失败!" << std::endl;return;}fread(pRaw10buf, sizeof(pRaw10buf[0]), (size_t)nWidth * nHeight, pfile);fclose(pfile);pfile = nullptr;cv::Mat raw10Img(nHeight, nWidth, CV_16SC1, pRaw10buf);cv::namedWindow(strFilename, cv::WINDOW_NORMAL);cv::imshow(strFilename, raw10Img);cv::waitKey(0);// 以下运行会崩溃,因为rgb和gray都是8U类型的数据,而raw10Img是16S,数据溢出,因此需要转换位raw8之后再转成RGB或BGR图像cv::Mat img_raw8;cv::convertScaleAbs(img, img_raw8, 0.25);cv::imshow(strFilename, img_raw8);cv::waitKey(0);cv::Mat rgb;cv::Mat gray;cv::cvtColor(img_raw8, rgb, cv::COLOR_BayerRG2RGB);cv::imshow(strFilename, rgb);cv::waitKey(0);cv::cvtColor(rgb, gray, cv::COLOR_RGB2GRAY);cv::imshow(strFilename, gray);cv::waitKey(0);
}
需要注意的是:
1. 在debug下运行可能会崩溃,改成release可以正常运行;
2. raw转rgb24时应该选择*2RGB,否则转换后的图片会偏色;
3. 读取raw10图片后如果要转成RGB或BGR图像,需要先转成raw8格式,即保证每个像素的值在0~255之间,否则会抛出异常。
10_OpenCV读取原始raw(raw10和raw8),转换成rgb和灰度图,并显示相关推荐
- php读取mht,php解析mht文件转换成html的实例
php解析mht文件转换成html的实例 发布于 2017-08-07 07:27:31 | 116 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertex ...
- php实现wav转mp3,php实现将wav文件转换成图像文件并在页面中显示的方法
本文实例讲述了php实现将wav文件转换成图像文件并在页面中显示的方法.分享给大家供大家参考.具体分析如下: 需求:将wav文件转换成png文件并且显示出来. Wav_To_Png.php: func ...
- Java黑皮书课后题第5章:5.4(将英里转换成千米)编写程序,显示下面的表格(注意:1英里为1.609千米)
5.4(将英里转换成千米)编写程序,显示下面的表格(注意:1英里为1.609千米) 题目 题目概述 破题 代码 题目 题目概述 5.4(将英里转换成千米)编写程序,显示下面的表格(注意:1英里为1.6 ...
- 海康威视IPCamera图像捕获方法:捕获实时流,将实时流解码成YV12,然后转换成RGB
将他的MFC工程相关的代码抠出来,重组.于是实现了捕获YV12格式的视频流的功能,光有YV12还是不行的,需要将YV12转成YUV4:4:4的,然后再将YUV色度空间转换成RGB色度空间,这个过程是在 ...
- Java黑皮书课后题第5章:5.3(将千克转换成磅)编写程序,显示下面的表格(注意:1kg为2.2磅)
5.3(将千克转换成磅)编写程序,显示下面的表格(注意:1kg为2.2磅 题目 题目概述 破题 代码 感谢 题目 题目概述 5.3(将千克转换成磅)编写程序,显示下面的表格(注意:1kg为2.2磅) ...
- 1、编写一个程序,将一个小写字母(如a)转换成相应的大写字母并显示输出。
import java.util.Scanner; public class Zuoye1 { /** * 编写一个程序,将一个小写字母(如a) * 转换成相应的大写字母并显示输出. * * * * ...
- 颜色的整数值转换成RGB值
最近在研究使用Python操作Excel自动化的过程中,我遇到了一个小问题.为了弄清楚Excel在设置单元格条件格式时候所用的颜色,我使用VBA录制了宏命令,但是单元格和字体的颜色都是使用整数值进行标 ...
- Android 将一张CMYK模式的图片转换成RGB模式的图片
Android系统是不能够显示打印模式(CMYK)的图片的.所以要在Andorid设备下显示CMYK模式的图片我得做法是将其转换成RGB模式的图片,但是通过转换颜色丢失比较大,如果大家有好的办法欢迎指 ...
- 十六进制颜色码转换成RGB颜色值
十六进制颜色码转换成RGB颜色值 相关知识点 0xFF 十六进制 如果转成二进制位:11111111 int值是32位,0的二进制: 00000000000000000000000000000000 ...
最新文章
- 医学影像阅读/分析软件FSLeyes安装避坑+核磁共振影像数据处理
- 示波器上mode选择开关上的norm和auto是什么意思?
- 03-SpringMVC-获得用户请求数据
- C++学习总结(函数、类与对象)
- 东南亚的IT公司,我劝你善良!
- Oracle EBS数据定义移植工具:FNDLOAD
- 微信开发者平台如何编写代码_编写超级清晰易读的代码的初级开发者指南
- 解决(springboot项目)mysql表名大写,造成jpa Table doesn't exist问题
- python安装多久_(一)安装Python
- http.client.ResponseNotReady: Request-sent
- java xml转html_如何在Java中将XML文档转换成HTML文档.pdf
- 8. 吴恩达机器学习课程-作业8-异常检测和推荐系统
- 装饰器python详解_python装饰器详解
- TransE算法原理与代码解析(2021-06-22)
- Matlab实现均值滤波与FPGA进行对比,并采用modelsim波形仿真
- 组态王JAVA,组态王肿么实现点击按钮以后可以实现画面的运行
- 关于UI三色配色的心得
- 如何上色?怎样才能配出好看的颜色?
- Fresco判断是否缓存
- 四、RocketMQ的控制台安装
热门文章
- Perl-Can't locate Time/HiRes.pm 错误
- 解决MAC OS X不识别Kindle Fire
- 马云控股“中国文化”什么暗藏玄机?
- 数据结构:单链表——带头结点与不带头结点步骤详解
- 合并带附件的电子邮件
- 主板有电无法启动_主板灯亮,主板电池有电,但无法开机
- [XJTUSE]计算机图形学第二章作业,使用OpenGL编程实现DDA、中点画线和Bresenham算法和中点画圆法
- 小海龟画图(小猪佩奇)
- 华硕笔记本电脑开机进入bios
- matlab趣味程序,小学生C++趣味编程 PDF 全资料版