方法一(适用于OpenCV3):
-
-
#include <opencv2/opencv.hpp>
-
#include <opencv2/imgproc/imgproc_c.h>
-
#include <iostream>
-
-
char * lpFileBuf = GetFileBuf("girl.bmp");
-
-
CvMat mCvmat = cvMat(512*3, 768*3, CV_8UC1, lpFileBuf);
-
IplImage*IpImg = cvDecodeImage(&mCvmat, 1);
-
-
//opencv 2.0 CvMat->Mat数据转换 //Mat b = Mat(mat,true);
-
//opencv3.0 CvMat->Mat数据转换 //Mat image = cvarrToMat(pp);
-
-
Mat image = cvarrToMat(IpImg).clone();
-
cvReleaseImage(&IpImg);
-
-
imshow("123", image);
方法二(适用于OpenCV4):
-
-
-
#include <opencv2/opencv.hpp>
-
cv::_InputArray pic_arr(bmpFileBuf, nBmpBufSize);
-
cv::Mat src_mat = cv::imdecode(pic_arr, cv::IMREAD_UNCHANGED);
-
cv::imshow("123", src_mat);
opencv从内存中读取图片可以大大减少读取文件所消耗的时间。
CvMat中的data数据只是矩阵数据的首地址,分配的内存大小为行列乘积。对该内存块的操作需要调用函数,也可以使用指针索引。
-
找到了 opencv加载内存中的图片数据的方法,现在记录下来。
//参数分别为 图片宽度,高度,类型,图片数据指针(unsigned char*)
//这个构造函数并没有从新分配内存
CvMat mCvmat = cvMat(w, h, CV_8UC1, mImgData);
IplImage* IpImg = cvDecodeImage(&mCvmat, 1);
//opencv3.0 IplImage到Mat类型的转换的方法
Mat image = cvarrToMat(IpImg);
if (!image.data)
{
return false;
}
cvReleaseImage(&IpImg);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2022-08-22 Windows10/11 三步安装wsl2 Ubuntu20.04(任意盘)
2022-08-22 win10离线安装WSL2 Ubuntu20.04系统
2016-08-22 insmod module_param 模块参数
2013-08-22 C++的四种cast操作符的区别--类型转换
2013-08-22 __stdcall,__cdecl,_cdecl,_stdcall,。__fastcall,_fastcall 区别简介
2013-08-22 cdecl、pascal、stdcall、fastcall
2012-08-22 VC中动态添加控件