opencv从磁盘加载一张图片非常简单,通过cv::imread即可,代码如下:

 cv::Mat src_mat = cv::imread("1.jpg"); //读取图片1.jpg,imread会将图片内容解码成yuv或rgb存放到Mat对象cv::Mat dst_mat = src_mat(cv::Rect(100, 100, 1600, 900)); //获取图片固定区域的内容std::vector<uchar> jpg_buff;bool ret = cv::imencode(".jpg", dst_mat, jpg_buff);//对固定区域的内容重新进行jpg编码,生成jpg图片,存入jpg_buffFILE *file = fopen("2.jpg", "wb");if (file != nullptr) {fwrite(jpg_buff.data(), 1, jpg_buff.size(), file); //将jpg图片写入内存fclose(file);}

然而,很多情况,程序需要从内存中加载图片,例如通过网络上传的图片。很显然,这样的图片不能写入磁盘,然后再通过cv::imread读取,效率太低了。因此,需要从内存直接加载。然后通过cv::imdecode将图片解码成cv::Mat,代码如下:

 FILE *file = fopen("1.jpg", "rb");uchar *mem_pic = nullptr;long size = 0;if (file != nullptr) {fseek(file, 0, SEEK_END);size = ftell(file);fseek(file, 0, SEEK_SET);mem_pic = new uchar[size];fread(mem_pic, 1, size, file);fclose(file);}cv::_InputArray pic_arr(mem_pic, size);cv::Mat src_mat = cv::imdecode(pic_arr, CV_LOAD_IMAGE_COLOR);cv::Mat dst_src = src_mat(cv::Rect(100, 100, 1600, 900));std::vector<uchar> pic_buff;bool ret = cv::imencode(".jpg", dst_src, pic_buff);file = fopen("3.jpg", "wb");if (file != nullptr) {fwrite(pic_buff.data(), 1, pic_buff.size(), file);fclose(file);}

cv::_Array还可以使用std::vector代替,代码如下:

 FILE *file = fopen("1.jpg", "rb");uchar *mem_pic = nullptr;long size = 0;if (file != nullptr) {fseek(file, 0, SEEK_END);size = ftell(file);fseek(file, 0, SEEK_SET);mem_pic = new uchar[size];fread(mem_pic, 1, size, file);fclose(file);}//cv::_InputArray pic_arr(mem_pic, size);std::vector<uchar> pic_vec(mem_pic, mem_pic + size);cv::Mat src_mat = cv::imdecode(pic_vec, CV_LOAD_IMAGE_COLOR);cv::Mat dst_src = src_mat(cv::Rect(200, 200, 400, 225));std::vector<uchar> pic_buff;bool ret = cv::imencode(".jpg", dst_src, pic_buff);file = fopen("3.jpg", "wb");if (file != nullptr) {fwrite(pic_buff.data(), 1, pic_buff.size(), file);fclose(file);}

opencv加载内存中图片相关推荐

  1. win7(旗舰版)下,OleLoadPicture 加载内存中的图片(MagickGetImageBlob),返回值 0

    昨天去三哥家,想把拍好的照片缩小一下,我用很久前写的一个软件进行缩小,然后进行一次效果预览,这个时候弹出: Call OleLoadPicture Fail - loadPictureFromMW 奇 ...

  2. 【java】springboot项目启动数据加载内存中的三种方法

    文章目录 一.前言 二.加载方式 2.1. 第一种:使用@PostConstruct注解(properties/yaml文件). 2.2. 第二种:使用@Order注解和CommandLineRunn ...

  3. iOS 如何计算图片加载内存中所占的大小

    首先图片自动缩放到2的n次方大小,例如200 * 300像素 会变成256 * 512大小. 图片内存大小的计算公式 宽度 * 高度 * bytesPerPixel/8. bytesPerPixel ...

  4. UGUI中动态加载图集中的图片(转)

    前言 图集打包的好处都有啥?不管你是新手还是大神,要是项目中ui图片很多,特别是小图很多,需要运行时动态加载或切换Image中的sprite的时候,基本上都会选择打包成图集这种解决方案. 图集的好处有 ...

  5. 完美解决SDWebImage加载多个图片内存崩溃的问题

    SDWebImage大家肯定都恨熟悉了,国内外太多的App使用其进行图片加载. 但是最近在使用过程中发现,我用SDWebImage加载多个图片,类似微博动态那种,在加载的过程中.我发现当图片分辨率比较 ...

  6. 使用SDWebImage加载多个图片内存崩溃的问题

    使用SDWebImage加载多个图片时,在加载的过程中,当图片分辨率比较大的时候,加载几张图片就崩溃了.需要对图片进行处理,避免内存崩溃问题. 一.预加载图片URL数组 预加载URL数组 [[SDWe ...

  7. iOS原生如何加载HTML中img标签的图片

    原文出自:iOS原生如何加载HTML中img标签的图片 前言 最近iOS App项目中使用Webview加载H5页面比较多,也有不少朋友经常问到这个问题,在这里我也学习学习如何通过iOS原生的方式来加 ...

  8. python使用openCV加载图像、并将BGR格式转换成HSV格式、定义HSV格式中需要分离颜色的掩码(掩模)区间(mask)、并使用mask信息进行颜色分离、BGR格式的图像转化为RGB、并可视化

    python使用openCV加载图像.并将BGR格式转换成HSV格式.定义HSV格式中需要分离颜色的掩码(掩模)区间(mask).并使用mask信息进行颜色分离.将BGR格式的图像转化为RGB.可视化 ...

  9. python制作图片数据集_Pytorch自己加载单通道图片用作数据集训练的实例

    pytorch 在torchvision包里面有很多的的打包好的数据集,例如minist,Imagenet-12,CIFAR10 和CIFAR100.在torchvision的dataset包里面,用 ...

  10. VC下加载多种格式图片的方法总结

    From: http://www.cnblogs.com/Daywei/archive/2011/03/19/1988848.html 尽管VC有提供相应的API和类来操作bmp位图.图标和(增强)元 ...

最新文章

  1. iOS crash日志分析
  2. 思维dp ---- Codeforces Round #722 (Div. 1) B. Kavi on Pairing Duty [思维dp + 数学]
  3. 傲腾内存 可以用ghost系统_玩机小贴士:Intel傲腾内存你用过没有?
  4. linux驱动大小,为什么在Linux字符驱动程序读取调用中大小总是= 4096?
  5. HDU2612(BFS算法)
  6. Windows Phone开发(11):常用控件(下) 转:http://blog.csdn.net/tcjiaan/article/details/7300085...
  7. java多线程编码实现_Java多线程编码
  8. 开源的全面胜利背后,那些被遗忘的人性问题
  9. 代理模式 委派模式 策略模式_设计模式 - 委派模式
  10. Golang中unsafe.Sizeof()的问题
  11. JAVA实时运算_Java 实时运算簿页面
  12. java下拉刷新上拉加载_使用PullToRefresh实现下拉刷新和上拉加载
  13. 手扶电梯缺陷检测图像数据集(VOC标签)
  14. python绘画海贼王_Python入门之生成海贼王云图
  15. 如何读取csv文件并将其转化为tsv文件
  16. 史上最全的CSS基础知识大全!
  17. 微信公众号开发笔记(八)发送图片消息
  18. vpwm的控制变频_变频器调速控制方式和PWM脉宽调整技术有什么不同
  19. ajax传递数组.net,ajax传递数组问题
  20. 211大学中哪几所计算机专业好,北京哪些211大学计算机专业比较好考研

热门文章

  1. 第四方支付 java代码_第三方支付平台 API聚合支付系统 云支付源码 PHP第四方pi支付...
  2. 前端面试宝典总结(一)(搬自牛客)
  3. linux下keytool生成证书_keytool生成JKS证书的详细步骤及截图
  4. 【海康威视】前端开发:【1】弹框内容被视频画面遮挡,弹框提示如何覆盖视频画面?【已解决】
  5. 后勤管理系统-在线报修系统
  6. windows游戏编程 (一) 了解WinMain函数,创建一个信息框
  7. 基于springboot的医院门诊管理系统
  8. HeadFirstJava——5_编写程序
  9. 2011—2018年软考中级数据库系统工程师历年真题
  10. 三种常用的BIOS升级方法