首页 > 系统相关 >OpenCV 读取内存图片

OpenCV 读取内存图片

时间:2023-08-22 14:46:54浏览次数:44  
标签:CvMat Mat image cv OpenCV 内存 IpImg 读取

方法一(适用于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);
 
 

 

 

标签:CvMat,Mat,image,cv,OpenCV,内存,IpImg,读取
From: https://www.cnblogs.com/lidabo/p/17648485.html

相关文章

  • Lnton羚通云算力平台OpenCV Python颜色空间转换与抠图教程
    在OpenCVPython中,颜色空间转换和图像抠图是常见的图像处理任务。下面我将为你介绍如何进行颜色空间转换和图像抠图。颜色空间转换:在OpenCVPython中,可以使用 cv2.cvtColor() 函数将图像从一个颜色空间转换为另一个颜色空间。常用的颜色空间转换包括RGB、BGR、灰度(GRAY)、HS......
  • Redis系列19:LRU内存淘汰算法分析
    Redis系列1:深刻理解高性能Redis的本质Redis系列2:数据持久化提高可用性Redis系列3:高可用之主从架构Redis系列4:高可用之Sentinel(哨兵模式)Redis系列5:深入分析Cluster集群模式追求性能极致:Redis6.0的多线程模型追求性能极致:客户端缓存带来的革命Redis系列8:Bitmap实现亿万级......
  • 查看cpu或内存占用最多的进程
    通过ps命令查找,并对指定参数进行排序,然后取前10命令如下:ps-aux|sort-k3nr|head-10或者ps-aux|sort-k4nr|head-10ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可......
  • Windows 使用vscode 下载编译opencv
    1.下载opencv源码.下载地址:https://opencv.org/releases/2.下载mingw这里的安装版本需要注意下,需要安装posix线程版本,不然opencv编译的时候会报错x86_64-12.2.0-release-posix-seh-rt_v10-rev1解压后配置环境变量就行下载地址如下:https://github.com/niXman/mingw-builds-b......
  • Lnton羚通云算力平台如何在OpenCV-Python 中,来进行图像算术运算?
    在OpenCV-Python中,可以使用函数cv2.add()、cv2.subtract()、cv2.multiply()和cv2.divide()来进行图像算术运算。这些函数接受两个输入图像,并对其进行逐像素的运算。1.图像加法:OpenCV 是饱和运算(大于255算255),NumPy 是模运算(大于255会与256进行求模)。importnumpyasnpimpo......
  • java 读取各种类型的文件 (一)
    Java可以用不同的库来读取各种格式的文档。下面是一些常见的文档格式以及相应的Java库:CSV文件:使用ApacheCommonsCSV库来读取和写入CSV文件。该库提供了一个简单易用的API。Excel文件(xls和xlsx):可以使用ApachePOI库来读取和写入Excel文件。该库支持旧版的xls文件和新版的xl......
  • Java_读取xml文件;
    功能:java读取xml文件源码;=>person.xml<?xmlversion="1.0"encoding="UTF-8"?><book> <persona='av'b='bv'> <first>wang</first> <last>laohu</last> <age>25</a......
  • 使用Pytorch和OpenCV实现视频人脸替换
    DeepFaceLab”项目已经发布了很长时间了,作为研究的目的,本文将介绍他的原理,并使用Pytorch和OpenCV创建一个简化版本。本文将分成3个部分,第一部分从两个视频中提取人脸并构建标准人脸数据集。第二部分使用数据集与神经网络一起学习如何在潜在空间中表示人脸,并从该表示中重建人脸图......
  • 轻松掌握图像处理技能,Python OpenCV库带你飞
    所有代码需要在安装了OpenCV库的Python环境中运行。1图像基础操作importcv2ascvimg=cv.imread("./img/run.png",flags=cv.IMREAD_COLOR)print(img)[[[255255255][255255255][255255255]...[255255255][255255255][255255255]]......
  • Q:查看服务器内存和cpu占用排名
    pid表示进程ID,cmd表示进程命令行,%mem表示进程占用内存百分比,%cpu表示进程占用CPU百分比,--sort=-%mem表示按照内存占用率从高到低排序。1、内存占比排序ps-eopid,cmd,%mem,%cpu--sort=-%mem2、cpu占比排序ps-eopid,cmd,%mem,%cpu--sort=-%cpu如果展示......