opencv-imencode把Mat转换成vector

 

复制代码
#include<opencv2/opencv.hpp>
#include<iostream>
#include  <vector>
#include "opencv2/imgcodecs/legacy/constants_c.h" 


int main(int argc, char** argv) {

    cv::Mat src(5, 4, CV_8UC3, cv::Scalar(10, 20, 30));
    std::vector<unsigned char> vec;
    cv::imencode(".jpg", src, vec);//把Mat转换成vector
    //参数1:按什么图片格式编码

    
    cv::waitKey(0);
    return 0;
}
复制代码

 

复制代码
#include<opencv2/opencv.hpp>
#include<iostream>
#include  <vector>
#include "opencv2/imgcodecs/legacy/constants_c.h" 


int main(int argc, char** argv) {

    cv::Mat src(5, 4, CV_8UC3, cv::Scalar(10, 20, 30));
    std::vector<unsigned char> vec;

    int quality = 50; //压缩比率0~100

    std::vector<int> cp;  //创建vector对象,用来存储质量压缩信息
    cp.push_back(cv::IMWRITE_JPEG_QUALITY);
    //cv::IMWRITE_JPEG_QUALITY     jpg格式
    //其它格式:看 https://www.cnblogs.com/liming19680104/p/15388462.html   

    cp.push_back(quality);


    cv::imencode(".jpg", src, vec,cp);//把Mat转换成vector
    //参数1:按什么图片格式编码
    //参数2:Mat矩阵
    //参数3:vector对象
    //参数4:质量压缩信息[可选]

    std::cerr << vec.size() << std::endl;

    
    cv::waitKey(0);
    return 0;
}
复制代码

 

 

 

 

posted @   天子骄龙  阅读(303)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2020-11-27 photoshop--图像大小(分辨率和宽高)
点击右上角即可分享
微信分享提示

目录导航