openCV显示RGB888图像

前一段时间,由于项目需要,将RGB888格式图像直接使用opencv显示出来,由于本人opencv新手,在网上查阅相关资料并结合自己的实际测试及使用情况做了如下记录,由于对opencv不了解,因此也不知道是否还有其他更简单的方法,如果有简单的办法,还望不吝赐教。

解决思路大致如下:
1、任选一张 *.bmp或 *.jpg等opencv能直接支持打开的图片,==注意,图片属性,比如分辨率、颜色通道这些需与待操作的RGB888一致。==使用imread()函数将这些图片属性信息填入到Mat类中。
2、使用文件操作方式读取待操作的RGB888图像数据,并存入提前申请好的临时内存中。
3、使用memcpy将读取到RGB888数据拷贝纸Mat.data当中,就可以正常显示了。

废话不多说,直接上代码:

#include <opencv2/opencv.hpp>
 
using namespace cv;

int main()
{
	size_t f_size = 0;
	size_t ret = 0;
	uchar* imgPtr = NULL;
	FILE* fp;

	// 要读入整个文件,必须采用二进制打开 
	fp = fopen("rgb1920", "rb");

	// 获取文件大小 
	fseek(fp, 0, SEEK_END);
	f_size = ftell(fp);
	rewind(fp);

	// 分配内存空间
	imgPtr = new uchar[f_size];

	// 获取文件内容
	ret = fread(imgPtr, 1, f_size, fp);
	if (ret != f_size)
	{
		fputs("Reading error", stderr);
		exit(3);
	}

	//Mat test(1920, 1080, CV_8UC3);
	Mat test = imread("test.bmp", IMREAD_COLOR); //载入图像到test
	memcpy(test.data, imgPtr, f_size);

	imshow("test", test);
	waitKey(0);

	delete[]imgPtr;
	return 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值