DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

方法一(适用于OpenCV3):

 
 
  1.  
     
    1.  
      #include <opencv2/opencv.hpp>
    2.  
      #include <opencv2/imgproc/imgproc_c.h>
    3.  
      #include <iostream>
    4.  
       
    5.  
      char * lpFileBuf = GetFileBuf("girl.bmp");
    6.  
       
    7.  
      CvMat mCvmat = cvMat(512*3, 768*3, CV_8UC1, lpFileBuf);
    8.  
      IplImage*IpImg = cvDecodeImage(&mCvmat, 1);
    9.  
       
    10.  
      //opencv 2.0 CvMat->Mat数据转换 //Mat b = Mat(mat,true);
    11.  
      //opencv3.0 CvMat->Mat数据转换 //Mat image = cvarrToMat(pp);
    12.  
       
    13.  
      Mat image = cvarrToMat(IpImg).clone();
    14.  
      cvReleaseImage(&IpImg);
    15.  
       
    16.  
      imshow("123", image);
     
     

    方法二(适用于OpenCV4):

  2.  
    1.  
      #include <opencv2/opencv.hpp>
    2.  
      cv::_InputArray pic_arr(bmpFileBuf, nBmpBufSize);
    3.  
      cv::Mat src_mat = cv::imdecode(pic_arr, cv::IMREAD_UNCHANGED);
    4.  
      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);
 
 

 

 
posted on   DoubleLi  阅读(428)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源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中动态添加控件
点击右上角即可分享
微信分享提示