opencv imencode和imdecode使用,用于网络传输图片

2023-05-16

这是C++版本的。程序首先读入一个图片。然后encode,之后把encode后的内容写入文件(实际应用可以发送到网络)。
第二步,从文件读取encode的内容。然后解码decode。转换为mat格式,显示出来。

#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
#include <iostream>
#include <sstream>
#include <string>
#include <opencv2/opencv.hpp>
#include <vector>

using namespace boost::filesystem;
namespace newfs = boost::filesystem;
using namespace cv;

int main(int argc, char ** argv)
{
    cv::Mat img_encode;
    img_encode = imread("../res/test.png", CV_LOAD_IMAGE_COLOR);

    //encode image and save to file
    std::vector<uchar> data_encode;
    imencode(".png", img_encode, data_encode);
    std::string str_encode(data_encode.begin(), data_encode.end());

    path p("../res/imgencode_cplus.txt");
    newfs::ofstream ofs(p);
    assert(ofs.is_open());
    ofs << str_encode;
    ofs.flush();
    ofs.close();

    //read image encode file and display
    newfs::fstream ifs(p);
    assert(ifs.is_open());
    std::stringstream sstr;
    while(ifs >> sstr.rdbuf());
    ifs.close();

    Mat img_decode;
    std::string str_tmp = sstr.str();
    std::vector<uchar> data(str_tmp.begin(), str_tmp.end());
    img_decode = imdecode(data, CV_LOAD_IMAGE_COLOR);
    imshow("pic",img_decode);
    cvWaitKey(10000);

    return 0;
}


使用python的例子。

import sys
import cv2    
import numpy as np
def img_endecode( img):
    #type img: cv::mat
    #encode image from cv::mat
    img_encode = cv2.imencode('.png', img)[1]
    data_encode = np.array(img_encode)
    str_encode = data_encode.tostring()
    
    #save to file
    fw = open('img_encode.txt', 'w')
    fw.write(str_encode)
    fw.flush
    fw.close   
    
    #decode and display
    nparr = np.fromstring(str_encode, np.uint8)
    img_decode = cv2.imdecode(nparr, 1)
    cv2.imshow("img_decode", img_decode)
    cv2.waitKey(10000)


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

opencv imencode和imdecode使用,用于网络传输图片 的相关文章

  • Vscode+MinGW配置C++开发环境(解决版本过老和在线下载极慢问题)

    文章目录 准备电脑MinGW的编译器环境安装注意 配置Path环境路径VScode 安装C C 43 43 拓展配置运行 xff08 多数配置直接被VSCODE自动生成 xff09 准备电脑MinGW的编译器环境 为什么选择MinGW xf
  • Python——alembic数据库ORM模型的迁移与映射

    Python alembic数据库ORM模型的迁移与映射 alembic 作用 xff1a 方便数据库与ORM模型的迁移与映射 alembic 安装 xff1a pip install alembic alembic 用法 xff1a 1
  • 解决VNC远程连接树莓派,窗口显示不全的问题,亲测可行!!

    哇 xff0c 就在刚刚才百度到解决VNC远程连接树莓派 xff0c 窗口显示不全的问题 xff0c 昨晚上查了一晚上都没搞定 xff0c xff0c xff0c 首先说下问题吧 xff0c 就是用VNC远程连接树莓派后 xff0c 会出现
  • Kotlin Parameter specified as non-null is null

    报错信息如下 span class hljs label java lang IllegalArgumentException span Parameter specified as non null is null method kotl
  • 如何获取维普免费账号--应对大家工作后在校外下载维普万方等全文

    马上就要工作了 xff0c 觉得学校里面图书馆资料很多 xff0c 并且很有用 xff0c 都可以在CNKI 万方维普等中文数据库 xff0c 和SD EBSCO SpringerLink等西文数据库中下载全文 xff0c 但是仅仅限于校内
  • Ubuntu下搭建samba服务

    Samba服务器和NFS差不多 xff0c Samba是在Windows操作系统下访问Linux主机 xff0c NFS可以让Linux客户端访问NFS服务器 xff0c NFS服务器可以使用Windows搭建也可以使用Linux搭建 xf
  • VsCode打不开终端

    VsCode打不开终端 问题现象解决办法 问题现象 解决办法 打开设置 输入 integrated 并打开 settin json 插入对于终端路径设置 代码如下 xff1a 34 terminal integrated shell win
  • VMware虚拟机中的Ubuntu图形界面蓝屏问题

    VMware虚拟机中的Ubuntu图形界面蓝屏问题 因为某次暴力关机后 xff0c 进入Ubuntu时发现蓝屏 xff0c 界面显示不正常 xff0c 但Ctrl 43 alt 43 F4后可以进入命令行 xff0c 说明系统正常只是图形界
  • GD32F205在IAR上移植FreeRTOS

    目录 简述 xff1a 第一步 xff1a 准备最简工程与系统第二步 xff1a 拷贝源码第三步 xff1a 编译器IAR配置第四步 xff1a 工程代码修改第五步 xff1a 编译工程 简述 xff1a 1 主芯片 xff1a GD32F
  • vscode之C/C++代码自动补全

    目录 准备 xff1a 步骤 xff1a 安装插件重启加载更改配置选项找到 设置 打开json配置添加配置json保存并重新打开vscode即可自动补全 准备 xff1a IDE xff1a vscode 安装就不展开啦 步骤 xff1a
  • git生成公钥

    平台 xff1a Windows 打开git bash 随便在一个目录下右键 xff0c 选择 Git Bash Here 生成公钥命令 ssh keygen t rsa C your email 64 example com 备注 xff
  • CentOS安装arm-linux-gcc交叉编译器

    xff08 注 xff1a 首先需要明确需要安装centos系统的位数 xff0c 即是32位的还是64位的 xff09 1 下载并解压文件 xff1a 下载arm linux gcc 4 4 3 tgz到任意的目录下 xff0c 进入这个
  • STM32F107之CAN配置

    STM32F107属于STMF10x系列的互联型产品 xff0c 所以配有2个CAN模块即CAN1和CAN2 CAN模块正常工作模式和测试模式 xff0c 且测试模式又分为环回模式 静默模式和环回静默模式 xff0c 但一般都使用正常工作模
  • 元学习基本概念笔记

    元学习是深度学习领域最活跃的研究领域之一 人工智能 xff08 AI xff09 社区中的一些思想流派赞成这样的论点 xff0c 即元学习是解锁人工智能 xff08 AGI xff09 的垫脚石之一 近年来 xff0c 我们已经看到了元学习
  • 【数据库】联合索引的最左匹配原则理解

    索引是基于B 43 树实现 xff0c 所以这个最左匹配原则肯定要站在B 43 树的角度上来思考 首先我们看一下单个索引的B 43 树 xff1a 如上图 xff0c 一颗B 43 树根据一个值来构建 xff0c 很容易理解索引的使用 假如
  • debian非正常关机进不了图形界面的解决方法

    昨天调试一个程序的时候 xff0c 把界面设置成了POPUP方式 xff0c 结果触发断点的时候 xff0c 界面不能最小化 xff0c 程序就死到那了 xff0c 动不了 xff0c 没办法只好按电源了 xff0c 结果启动的时候提示 A
  • CVPR18读文笔记:SINT++:Robust Visual Tracking via Adversarial Postive Instance Generation

    CVPR18一共出现了3篇将Adersarial概念应用于tracking xff0c 解决正样本弱的问题 VITAL是用了GAN xff0c 惊为天人 本文国产 xff0c 索然性能不是最优 xff0c 但是VAE 43 DRL 43 S
  • 甲方乙方

    甲方乙方 个人而言 xff0c 2011年的基调是创业 5月 xff0c 一行十人 xff0c 有的刚刚完婚 xff0c 有的即将成为父亲 xff0c 部分人拿出资金 xff0c 大伙儿领着糊口的生活费 xff0c 怀揣莫可名状的热情 xf
  • vnc远程使用教程图解,vnc远程使用教程图解使用流程(经验之谈)

    vnc远程控制不知道大家听说过没有 xff0c 它的中文名叫虚拟网络控制台 xff0c 这是一款优秀的远程控制工具软件 相信大家看到远程控制软件应该已经猜出来了这款软件到底是干嘛的了吧 大家找到过很好用过的vnc远程控制吗 xff1f 今天
  • 云技术是什么_三分钟了解云技术的原理与发展

    什么是云技术 定义 云技术 xff08 Cloud technology xff09 基于云计算商业模式应用的网络技术 信息技术 整合技术 管理平台技术 应用技术等的总称 xff0c 可以组成资源池 xff0c 按需所用 xff0c 灵活便

随机推荐

  • 怎么在vscode上面使用git仓库管理工具

    如何在vscdoe中使用git仓库管理工具 为什么我们要用vscode上面操作git仓库管理工具呢 xff1f 因为我们安装了git后 xff0c 会在命令窗口 xff08 就是windows 43 r gt 输入cmd运行的命令窗口 xf
  • VMware安装linux镜像

    安装Linux详细教程 一 VMware安装linux镜像二 创建快照三 克隆镜像 一 VMware安装linux镜像 点击创建虚拟机 2 有两种安装方式 xff0c 典型有很多东西会自动配置好所以我们选择自定义安装 3 选择安装版本 4
  • 实施CMMI时必须解决的认识问题

    在基于 CMMI 实施软件过程改善时 xff0c 有些根本的思想认识问题解决不了 xff0c 往往会使实施的周期比较长 xff0c 效果不好 xff0c 甚至导致过程改善的失败或中止 软件企业的高层领导 企业的过程改进主管 项目经理及一般的
  • 使用 OpenCV与 HAAR 级联算法进行人脸检测和人脸识别

    AI人脸识别是一种从数字图像或视频帧中识别或验证人脸的技术 人类可以毫不费力地快速识别面部 这对我们来说是一项轻松的任务 xff0c 但对计算机来说却是一项艰巨的任务 因为存在各种复杂性 xff0c 例如低分辨率 遮挡 光照变化等 这些因素
  • Ubuntu 18.04扩展磁盘容量到单独分区

    vmvare下 扩展原有磁盘容量时 xff0c 一般情况下需要删除分区重新划分 xff0c 这样就删除了原有的数据 xff0c 为了保留原有数据 xff0c 把扩展的分区额外划分到一个分区 xff0c 自动挂载到一个目录 xff0c 减少风
  • Ubuntu 15.10使用vnc工具开启远程桌面

    1 在Ubuntu上首先需要安装vnc4server apt get install vnc4server 2 第一次执行vncserver的时候需要为客户端连接设置8位的密码 3 打开服务后 xff0c 根据客户端号连接 也可以指定客户端
  • n模块管理多个版本的node.js

    安装 homebrew方式 brew span class token function install span n github方式 span class token function curl span L https git io
  • 11.23总结

    今天除了上数学课和心里考试全部坐在电脑前刷题 启航oj 4 xff0c 菜鸟杯 oj3 因为我是一个入门比较晚的菜鸟所以我唯一能做的就是挤出所有的时间全部用来补别人已经明白的东西 今天主要的收获就是 字符串三个函数的应用 字符与二维数组的混
  • 11.24总结

    1 jsua oj 0 打算明后两天集中搞菜鸟杯题组 2 启航oj 5 今天上午满课下午都在敲代码 这真的是大一吗 有了昨天的刷题经验今天自己刷题快多了就是被那些提交语言折磨到窒息白白浪费了好多时间 主要学习了蛇形矩阵的算法根据题意判断从那
  • 11.25总结

    博客被吞了一遍 我吐了想一点前上床睡觉有这么难吗 虽然今天一天满课但是我还是学到了很多知识 今天启航oj 1 菜鸟杯补题 4 写了一篇关于党的19届六中全会的文章 主要学习了汉诺塔的数据变化原理 xff0c 递归 加深我对递归的理解 xff
  • 12.1日总结

    刷题数0 真的是挺无语的因为感觉指针链表栈的知识混成一团了 xff0c 只能各种百度 xff0c 最后发现书本里面的才是最香的 虽然没有做出来栈的题目但是大体的基本概念已经理清了 先从链表讲起 一说到结构体 xff0c 指针 xff0c 链
  • 12.2总结(纵使结局不如意,放弃实属下下签。)

    刷题数三 xff0c 菜鸟杯补题2 xff1b 启航栈1 xff1b 终于知道这两天为什么这么痛苦了 我一度难受到窒息因为我看的是链栈我看了两天硬是对这些题目无从下手 xff0c 因为他吧指针 结构体 链表 栈一起结合起来使用 我去搜各种博
  • 12.3日总结 单调栈

    今天就刷了两个题 xff0c 尝试了一个题 xff0c 主要看了单调栈 xff0c 单调栈分为两种一中是栈中元素从栈顶到栈顶呈从小到大的排序的栈这样的栈称为单调递增栈 另一种从栈顶到栈底数据从大到小称为单调递减栈 单调栈的应用一般可以用来求
  • 12.5总结

    开始着手于项目的编写 其实所有事情都是开头难 xff0c 项目也一样 xff0c 第一次写项目必定要接触到很多新东西 xff0c 今天主要遇到了两个新的头文件里面包含了写项目必备的几个函数 stdlib h里面定义了五种类型 一些宏和通用工
  • 搬运! Windbg调试命令详解

    转载注明 gt gt 作者 xff1a 张佩 原文 xff1a http www yiiyee cn Blog 1 概述 用户成功安装微软Windows调试工具集后 xff0c 能够在安装目录下发现四个调试器程序 xff0c 分别是 xff
  • 使用光盘安装Microsoft media foundation

    一 准备 系统 xff1a widnows server 2012 R2 Datacenter 准备文件 xff1a 安装光盘或iso 双击iso文件 xff0c windows server会自动虚拟出一个光驱 假如光驱或虚拟光驱的盘符为
  • 如何用MindManager将导图导出为HTML5交互式导图?

    最新版MindManager 2017中新增了一种导出方式 HTML5交互式导图 xff0c 相信很多人在了解MindManager 2017新功能的时候就已经知道了 本文 xff0c 小编将给大家演示 xff0c 如何将做好的思维导图导出
  • 判断两个IP是否属于同一个子网

    例如 xff1a 192 168 1 1 24和192 168 1 33 27 192 168 1 1 24的ip地址为192 168 1 1 xff0c 子网掩码为255 255 255 0 转化为二进制 xff1a IP地址为 xff1
  • 记录一次K8s-Flannel插件的坑

    版本 xff1a K8s版本1 17 6 部署方式 xff1a ansible 43 kubeadm部署 架构 xff1a master1 43 node2 43 registry私有仓库 执行kubectl apply f kube fl
  • opencv imencode和imdecode使用,用于网络传输图片

    这是C 43 43 版本的 程序首先读入一个图片 然后encode xff0c 之后把encode后的内容写入文件 xff08 实际应用可以发送到网络 xff09 第二步 xff0c 从文件读取encode的内容 然后解码decode 转换