OpenCV显示10bit Raw数据

这篇具有很好参考价值的文章主要介绍了OpenCV显示10bit Raw数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考:10 12 14bit图像存储格式,利用Opencv显示10bit Raw数据,并根据鼠标的移动显示对应位置的灰度值。其他bit位数的Raw数据方法类似。文章来源地址https://www.toymoban.com/news/detail-829120.html

代码实现:

#include<opencv2/opencv.hpp>
#include<iostream>
#include<opencv/highgui.h>
#include"types.h"


using namespace std;
using namespace cv;
#define WIDTH 1920
#define HEIGHT 1080
Mat srcImg, Raw16_Src, Raw8_Src, Raw16_Src_normal;
Point pre_pt(-1,-1);


void MouseHandle(int event, int x, int y, int flags, void* param)
{
	Mat image = *(Mat*)param;
	Mat Gray2color_img = Mat(image.rows, image.cols, CV_8UC3, Scalar(0));
	char temp[50];
	int value;
	if (event == EVENT_MOUSEMOVE)
	{
		cvtColor(image, Gray2color_img,COLOR_GRAY2BGR);
		pre_pt = Point(x, y);
		value = Raw16_Src.at<ushort>(y, x);
		sprintf(temp, "(x:%d,y:%d,value:%d)", x, y, value);
		putText(Gray2color_img, temp, pre_pt, FONT_HERSHEY_COMPLEX, 1.3, Scalar(0, 0, 255), 1, 8);
		imshow("Show Raw Image", Gray2color_img);
		
		
	}
	if (event == EVENT_LBUTTONDOWN)
	{
		pre_pt = Point(x, y);
		cout << "坐标为" << pre_pt << endl;
		imshow("Show Raw Image", Gray2color_img);
		
	}
}
int main(void)
{
	int i;
	int bitdepth = 10;

	T_U8 *Raw_10bit = (T_U8*)malloc(WIDTH*HEIGHT * 10 / 8 * sizeof(T_U8));
	T_U16 *Raw_16bit = (T_U16*)malloc(WIDTH*HEIGHT * 16 / 8 * sizeof(T_U8));
	FILE *in_fp = fopen("RAW_2063_1920X1080_10bit_RGrGbB_2023_09_26,18,56,51.raw", "rb");
	FILE *output = fopen("RAW_2063_1920X1080_16bit.raw", "wb");
	if (Raw_16bit == NULL || Raw_10bit == NULL)
		printf("Can.'t malloc enough memory!\n");
	if (!in_fp)
	{
		cout << "can't open file." << endl;
		return -1;
	}

	memset(Raw_10bit, 0, WIDTH*HEIGHT * 10 / 8 * sizeof(T_U8));
	memset(Raw_16bit, 0, WIDTH*HEIGHT * 16 / 8 * sizeof(T_U8));
	
	Raw16_Src.create(Size(WIDTH, HEIGHT), CV_16UC1);//Opencv Size 定义时是先列后行
	Raw16_Src_normal.create(Size(WIDTH, HEIGHT), CV_16UC1);//Opencv Size 定义时是先列后行
	Raw8_Src.create(Size(WIDTH, HEIGHT), CV_8UC1);
	fread(Raw_10bit, WIDTH*HEIGHT * 10 / 8, 1, in_fp);


	for (i = 0; i < WIDTH*HEIGHT / 4; i++)
	{
#if 0
		Raw_16bit[4 * i] = (Raw_10bit[5 * i] | ((Raw_10bit[5 * i + 1] & 0x03) << 8))<<2;
		Raw_16bit[4 * i + 1] = (((Raw_10bit[5 * i + 1] & 0xfc) >> 2) | ((Raw_10bit[5 * i + 2] & 0x0f) << 6))<<2;
		Raw_16bit[4 * i + 2] = (((Raw_10bit[5 * i + 2] & 0xf0) >> 4) | ((Raw_10bit[5 * i + 3] & 0x3f) << 4))<<2;
		Raw_16bit[4 * i + 3] = (((Raw_10bit[5 * i + 3] & 0xc0) >> 6) | (Raw_10bit[5 * i + 4] << 2))<<2;
#endif
		Raw_16bit[4 * i] = (Raw_10bit[5 * i] | ((Raw_10bit[5 * i + 1] & 0x03) << 8));
		Raw_16bit[4 * i + 1] = (((Raw_10bit[5 * i + 1] & 0xfc) >> 2) | ((Raw_10bit[5 * i + 2] & 0x0f) << 6));
		Raw_16bit[4 * i + 2] = (((Raw_10bit[5 * i + 2] & 0xf0) >> 4) | ((Raw_10bit[5 * i + 3] & 0x3f) << 4));
		Raw_16bit[4 * i + 3] = (((Raw_10bit[5 * i + 3] & 0xc0) >> 6) | (Raw_10bit[5 * i + 4] << 2));
	}

	memcpy(Raw16_Src.data, Raw_16bit, (size_t)WIDTH*HEIGHT*sizeof(T_U16));
	normalize(Raw16_Src, Raw16_Src_normal, 0, 255, NORM_MINMAX);
	Raw16_Src_normal.convertTo(Raw8_Src, CV_8UC1);
	imwrite("Raw16.png", Raw8_Src);
	cvNamedWindow("Show Raw Image", CV_WINDOW_NORMAL);
	setMouseCallback("Show Raw Image", MouseHandle, (void*)(&Raw8_Src));
	imshow("Show Raw Image", Raw8_Src);
	fwrite(Raw_16bit, WIDTH*HEIGHT*sizeof(T_U16), 1, output);

	waitKey(0);
	destroyAllWindows();
	return 0;
}

结果:

7yuv 查看10bit raw,opencv,Raw
红色箭头位置处的灰度值

到了这里,关于OpenCV显示10bit Raw数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RAW图像详解及使用Python读取raw格式图像并显示

    RAW在英文中的解释是未处理的、自然状态的,这也就是RAW文件的真谛。RAW图像就是CMOS或者CCD图像感应器将捕捉到 的光源信号转化为数字信号的原始数据,因此RAW文件也被人们称之为“数码底片”。RAW格式的全称是RAW Image Format,记 录了由相机拍摄所产生的一些元数据,如IS

    2024年02月15日
    浏览(30)
  • YUV 8bit转10bit

    在有些场景中,我们经常会使用到YUV 8 bit转10bit的场景。 比如YUV420p 8bit 转 P010,P010le,YUV420p10le。 首先说ffmpeg 8 bit 转 10bit. 对于ffmpeg的P010le 和P010be 分别代表小端和大端,那么它转化的时候非常简单,就是8 bit再增加 8bit,后面的8bit全为0. 比如: 这是最简单的一种办法,所以如果

    2024年02月12日
    浏览(34)
  • MIPI CSI-2笔记(18) -- 数据格式(RAW图像数据)

            RAW6/7/8/10/12/14/16/20/24被用来传输图像传感器RAW图像数据。RAW图像数据是未经压缩过的图像数据(即Raw Bayer数据),或者是互补色数据,但RAW图像数据不限于这些数据类型。  RAW Image Data Types         6-bit Raw数据传输通过在CSI-2总线上发送像素数据实现。如下图所示(

    2024年02月06日
    浏览(45)
  • 如何将yuv420p图像数据转换为RGB数据并使用opencv保存为jpg图片

    yuv420是用4个byte存储4个Y的信息,用1个Byte存储U的信息,一个Byte存储V的信息, 这4个Y共用这2个U和V ,也就是用6个Byte 存储4个像素信息,也就是一个像素需要12个Bits(6*8/4),也就是12bpp。 注意yuv420p里面的p是指planar,也就是分层存储,先存全部Y的信息,然后是U的信息,最后

    2024年02月16日
    浏览(30)
  • FreeSWITCH使用L16编码通信及raw数据提取

    环境:CentOS 7.6_x64 FreeSWITCH版本 :1.10.9 Python版本:3.9.12 PCM(Pulse Code Modulation,脉冲编码调制)音频数据是未经压缩的音频采样数据,它是由模拟信号经过采样、量化、编码转换成的标准数字音频数据。 在FreeSWITCH中体现为L16编码(switch_pcm.c文件),和网络平台进行音频对接时会

    2024年02月03日
    浏览(27)
  • KITTI数据集raw_data下载(用chrome浏览器)

    KITTI是广泛用于自动驾驶领域评估的数据集之一,但是该数据集的数据很难下载。官方提供的下载方式是下载下图中的scripts,然后运行文件夹中的脚本,但是国内连接不上。科学上网只能在chrome浏览器上(网上教程很多哈),一个一个的去官网地址下载实在太麻烦了,因此写

    2024年02月15日
    浏览(37)
  • 电脑开机就一直自动修复,固态硬盘突然变成RAW格式,怎么数据恢复(未解决)

    联想E490笔记本 Windows 10 专业版 东芝256G固态硬盘 之前电脑死机强制关机后,电脑开机就一直自动修复,PE下进去查看,固态硬盘突然变成RAW格式,怎么数据恢复,使用DG分区软件根本读不到此盘 经常强制关机 1.可能导致硬盘 DBR丢失会导致变成RAW文件格式 2.还有可能MFT错乱导致

    2024年02月16日
    浏览(88)
  • JAVA实现postman form-data和raw方式请求数据的代码

    java raw方式 的实现代码如下: Url url = new Url(\\\"\\\"); HttpURLConnection connection = (HttpURLConnection ) url.oepnConnection(); connection.setDoOutput(true); connection.setDoInput(true); connection.setUseCaches(false); connection.setInstanceFollowRedirects(true); connection.setRequestMethod(\\\"POST\\\"); connection.setRequestProperty(\\\"Accept\\\",\\\"application/

    2023年04月08日
    浏览(34)
  • PS Raw中文增效工具Camera Raw 16

    Camera Raw 16 for mac(PS Raw增效工具)的功能特色包括强大的图像调整工具 。例如,它提供白平衡、曝光、对比度、饱和度等调整选项,帮助用户优化图像的色彩和细节。此外,Camera Raw 16的界面简洁易用,用户可以快速上手。同时,它还提供了丰富的自定义选项,可以根据用户

    2024年02月05日
    浏览(36)
  • OpenCV中的RGB与YUV转换

            YUV 颜色空间从模拟电视时代开始就被广泛应用于彩色图像的转换与处理。其基于一个 3x3 的矩阵,通过线性变换将 RGB 像素转换为一个亮度(Luma)分量 Y 以及两个色度(Chroma)分量 U 和 V。由于模拟电视存在着多种制式,如 NTSC 与 PAL 等等,考虑到具体硬件与技术上的

    2024年02月14日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包