• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

openCV显示RGB888图像

武飞扬头像
CTDL
帮助1

前一段时间,由于项目需要,将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;
}
学新通

这篇好文章是转载于:编程之路

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 编程之路
  • 本文地址: /boutique/detail/tanhgheibh
系列文章
更多 icon
同类精品
更多 icon
继续加载