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

在工程应用中,通常有需要用网络传输图片的需求,考虑网络带宽的限制,无法直接将原始图片进行传输。使用opencv中的imencode与imdecode函数进行图像压缩与解压

    string fname = "D:/image.jpg";
    //! 以二进制流方式读取图片到内存
    FILE* pFile = fopen(fname.c_str(), "rb");
    fseek(pFile, 0, SEEK_END);
    long lSize = ftell(pFile);
    rewind(pFile);
    char* pData = new char[lSize];
    fread(pData, sizeof(char), lSize, pFile);
    fclose(pFile);

    //! 解码内存数据,变成cv::Mat数据
    cv::Mat img_decode;
    vector<uchar> data;
    for (int i = 0; i < lSize; ++i){
        data.push_back(pData[i]);
    }
    img_decode = cv::imdecode(data, CV_LOAD_IMAGE_COLOR);
    cv::flip(img_decode, img_decode, -1);
    img_decode.channels();

    //! 将cv::Mat数据编码成数据流
    vector<unsigned char> img_encode;
    cv::imencode(".jpg", img_decode, img_encode);
    unsigned char *encode_data = new unsigned char[lSize];
    for (int i = 0; i<lSize; i++){
        encode_data[i] = img_encode[i];
    }
posted on   DoubleLi  阅读(1113)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2022-08-30 CMake及交叉工具编译链的安装使用
2022-08-30 【C++】C++的工具库
2017-08-30 C++笔试题目大全(笔试宝典)(不断完善中)
2013-08-30 访问动态链接库中的C++类和资源
2013-08-30 如何使用动态链接库中的资源
2013-08-30 VS2005设置Release模式可调试
2013-08-30 __declspec(dllimport)的作用
点击右上角即可分享
微信分享提示