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;
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgheibh
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13