OpenCV内存方式,将rgb数据压缩成jpg数据
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>#include "opencv2/opencv.hpp"using namespace std;
using namespace cv;// opencv 内存方式将rgb数据,压缩成jpeg数据
int rgb_to_jpg_memory(cv::Mat rgb, char *out_buf, int out_buf_max_len, int *out_buf_len)
{if(!out_buf || out_buf_max_len <= 0 || !out_buf_len)return -1;std::vector<uchar> data_encode;vector<int> param = vector<int>(2);// 设置压缩数据的格式,以及压缩的质量param[0]=CV_IMWRITE_JPEG_QUALITY;param[1]=60;//default(95) 0-100// 将rgb数据压缩成jpg数据bool err = cv::imencode(".jpg", rgb, data_encode, param);if(!err)return -2;if(out_buf_max_len < data_encode.size())return -3;// 将压缩的jpg数据,放到输出buf中std::copy(data_encode.begin(), data_encode.end(), out_buf);*out_buf_len = data_encode.size();return 0;
}int rgb_to_jpg(char *pRgb, int width, int height, char *pJpeg, int in_jpeg_len, int *out_jpeg_len)
{if(!pRgb || width <= 0 || height <= 0|| !pJpeg || in_jpeg_len <= 0 || !out_jpeg_len)return -1;cv::Mat frame;int ret = -1;frame.create(height, width, CV_8UC3);memcpy(frame.data, pRgb, width*height*3);// 缩放//cv::resize(frame, frame, cv::Size(resize_width, resize_height), (0, 0), (0, 0), cv::INTER_LINEAR);// 将rgb数据转换为jpeg数据ret = rgb_to_jpg_memory(frame, pJpeg, in_jpeg_len, out_jpeg_len);if(ret < 0){printf("err = %d\n", ret);frame.release();return -2;}else{//if(*out_jpeg_buff_len > 0)// write_file(pJpegBuff, *out_jpeg_buff_len);}frame.release();return 0;
}
主要使用的是,OpenCV图像编码和解码 imencode和imdecode
参考网址:
https://blog.csdn.net/nn1997729/article/details/111936505
OpenCV内存方式,将rgb数据压缩成jpg数据相关推荐
- openCV内存释放问题
转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7586847 前一天把系统整个重写了一遍,脉络清晰了很多,也终于解决了以前很多崩溃, ...
- 以通信方式共享内存,不要以共享内存方式通信(2)
继续以"以通信方式共享内存,不要以共享内存方式通信"这句话展开. 从云原生开始. 云原生是面向微服务的架构,而消息传递是微服务交互的媒介,每个工人都接触过关于消息队列的概念,正是消 ...
- 【Linux 内核 内存管理】Linux 内核堆内存管理 ② ( 动态分配堆内存方式 | brk 系统调用 | mmap 系统调用 | brk 系统调用源码介绍 )
文章目录 一.Linux 系统 动态分配堆内存 方式 二.brk 系统调用 动态分配堆内存 一.Linux 系统 动态分配堆内存 方式 Linux 系统中 , 提供了 222 种方式 进行 " ...
- 【学习 OpenCV】—— 色彩空间(RGB、HSV、rgb2hsv、rgb2gray 的实现)
RGB 色彩空间的基础是对叠加型三原色(红绿蓝)的应用.之所以选择它们,是因为把它们组合起来后可以产生色域很宽(256*256*256)的各种颜色.实际上,人类的视觉系统( Human visual ...
- 官方指定Jmeter配置JVM堆内存方式
官方指定Jmeter配置JVM堆内存方式 文章目录 官方指定Jmeter配置JVM堆内存方式 1.概述 2.调整Jmeter堆内存 2.1.介绍官方推荐堆内存调整方法(jmeter在windows环境 ...
- win7下使用共享内存方式CreateFileMapping失败错误码5的解决方法
在普通应用程序中使用共享内存方式创建内存共享对象时,CreateFileMapping函数总是返回句柄为NULL,通过GetLastError得到返回错误码 0x5, 问题解决: 使用Local 代替 ...
- hyperv动态内存Linux,Linux 之动态分配内存方式
(1)malloc/free 函数 malloc()函数和free()函数是在堆中申请或释放内存空间的,其函数声明如下: #include extern void* malloc(size_t _si ...
- opencv、matplotlib、pillow和pytorch读取数据的通道顺序
文章目录: 1 opencv读取数据的通道顺序 1.1 opencv读取数据相关说明 1.2 显示opencv读取的数据 1.3 把opencv读取的BGR转换RGB的三种方式 2 matplotli ...
- 深入理解数据压缩与重复数据删除
原文地址:http://blog.csdn.net/liuaigui/article/details/6324133 [导读] 数据压缩与重复数据删除两种技术有何区别与联系呢?实际中又该如何正确应用呢 ...
最新文章
- 4G EPS 中建立 UE 和 MME 之间的 NAS(非接入服务)信令连接
- 济南python工资一般多少钱-济南python编程培训班价格
- access建立两个字段唯一索引_关于MongoDB唯一索引(Unique)的那些事
- 【英语学习】【WOTD】scrumptious 释义/词源/示例
- 【leetcode】726. Number of Atoms
- Windows Server 2008R2配置ISCS存储
- mysql在windows配置多节点_Windows环境配置MySQL集群
- 协方差矩阵的计算方法
- 动词变名词的变化规则_高中英语动词变名词的变化规则
- 深圳哈工大计算机系的课表,学在哈深|哈工大(深圳)学子课表大比拼,今天你满课了吗?...
- 【20220318】执行脚本提示killed
- QQ群关于C#和php的讨论
- MAC vscode 编译多个文件失败(已解决)
- php 除法,php中如何除法取整
- casewhen多条件查询_Mybatis(三)- MyBatis 多条件查询和模糊查询实例
- 简单实用的ajax脚本
- 弹钢琴flash游戏
- Java学习_Day 03(学习内容:狂神说JAVA零基础P17-P29)
- [USACO Oct08] 挖水井题解
- 关于征订2009年“注册电气工程师执业资格考试(供配电专业)
热门文章
- Another app is currently holding the yum lock解决方法
- c++生成随机数详解(包含可执行代码)
- VS2015 更换序列号
- Python:实现Julia集算法(附完整源码)
- 韩国驾驶照换中国驾驶照
- IP地址(配置),MAC地址,DNS,电脑无法上网解决解决步骤
- 干货课堂丨分享一种LCD驱动电路方案【飞凌嵌入式】
- 使用Retrofit的过程中遇到 type xxx.xxx.xxxdoes not have type parameters
- 恭贺新春-杨建荣敬祝
- 苹果cms怎么更换模板logo详细教程