话不多说,直接上代码:

这是服务端代码:

import socket
import cv2
import numpy as npsk = socket.socket()
# sk.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)  # 确保下次启动是端口保留
sk.bind(('10.40.129.105', 1))  # 这里也是写本服务机的ip,端口随便写
sk.listen(5)
conn, address = sk.accept()while True:try:data = conn.recv(88888)  # 88888为接受的最大字节数(默认分辨率情况下图片也就3、4万字节)nparr = np.fromstring(data, dtype='uint8', sep='')  # 化为数组img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)  # 解码为彩色图cv2.imshow('dabo', img)if cv2.waitKey(1) >= 0:  # 每1秒呈现一帧图片,按键盘任何键结束breakexcept Exception as e:  # 打印出特定错误(个人习惯)print(e)conn.close()
sk.close()

这是客户端代码:

import socket
import cv2
import numpy as npip_port = ('10.40.129.105', 1) # 这里填服务端的ip,端口要和服务端一致
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 创建套接字
s.connect(ip_port)  # 连接服务器cap = cv2.VideoCapture(0)  # 打开摄像头,0为默认摄像头
# cap.set(cv2.CAP_PROP_FRAME_WIDTH, 352)  # 设置每帧图片的宽
# cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 288)  # 设置每帧图片的高while True:ret, frame = cap.read()  # 获取视频的开启状态和每一帧图片img_encode = cv2.imencode('.jpg', frame)[1]  # 对每一帧图片进行编码data = np.array(img_encode)  # 转化为矩阵byte_encode = data.tobytes()  # 编码格式转为字节格式data_len = str(len(byte_encode))  # 获取每一帧图片的大小(字节数)print('每帧图片大小: %s' % data_len)s.send(byte_encode)  # 发送给客户端呈现

1、过程理解

通过客户端调用摄像头进行获取每一帧图象,再传输到服务端呈现实时视频。

cap = cv2.VideoCapture(0)  # 打开摄像头,0为默认摄像头
# cap.set(cv2.CAP_PROP_FRAME_WIDTH, 352)  # 设置每帧图片的宽
# cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 288)  # 设置每帧图片的高

这里为什么要设置图片的宽和高呢,主要是默认情况下,我这边显示出的图象内容会发生错误,具体为什么我没有深入研究。现在已经知道了在图片传输过程中,会受网络或传输受损的影响,可以更换网络或者更换编码图片格式(不易受损的格式),如果各位有知道可以在评论区留言。

如果有更好的方法可在评论区告知,这是我第二次学习的结果,第一次socket的学习是C#与python对图片的传输,可参考:https://blog.csdn.net/dabo_520/article/details/129718198?spm=1001.2014.3001.5502

python 通过socket通讯实现实时摄像头视频传输相关推荐

  1. QOS FEC NACK 实时音视频传输库测试报告(声网、腾讯实时音视频测试)

                        目录 QOS-FEC-NACK传输库简介 实验环境 测试DEMO说明 测试项说明 测试结果 竞品分析 总结                     QOS FE ...

  2. 计算机视觉——利用openCV与Socket结合进行远程摄像头实时视频传输并保存图片数据

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.TCP协议通信步骤 二.代码实现 1.客户端 2.服务端 三.IP设置方法 四.效果演示 前言 本文的内容是利用o ...

  3. IoT 设备高质量的实时音视频传输解决方案

    12月10日,实时互动云服务开创者及引领者声网Agora在北京举办了媒体沟通会,发布了首款定义轻互动直播场景的"极速直播"与可降低50%直播带宽成本的"低码高清" ...

  4. Android设备实时音视频传输有效方案

    /   今日科技快讯   / 6月2日晚上8点,鸿蒙线上发布会在万众瞩目中准时开始.华为正式发布了HarmonyOS 2(以下简称鸿蒙系统),以及多款新的硬件产品,包括HUAWEI Mate 40系列 ...

  5. RTSP实时音视频传输介绍

    <RTP协议封装H264/H265/AAC> <rtsp采用MD5加密摘要认证的交互过程> 目录 一.前言 二.RTSP的信令格式 三.RTSP的通信过程 四.RTSP服务器设 ...

  6. 移植摄像头视频传输JPEG格式代码学习过程

    目录 理解厂家的源代码 ov2640.c文件 DCMI.c文件 SCCB.c文件 main.c文件 总结 理解厂家的源代码 这里我使用的是普中的ov2640模块 ov2640.c文件 返回值:0,成功 ...

  7. 树莓派+android things+实时音视频传输demo之遥控小车

    做了个测试小车,上面安装了摄像头,通过外网进行视频传输: https://www.bilibili.com/video/av23817880/ 转载于:https://www.cnblogs.com/ ...

  8. 挑战一个人搭建一套完整直播系统4: 实现网络摄像头视频传输

    摄像头采购的是海康卫视的网络摄像头: 支持通过rtsp传输视频流,网络摄像头的配置如下: ffmpeg可以直接通过rtsp获取摄像头视频数据并推流到我们之前搭建好的Nginx服务,具体指令如下: ff ...

  9. Python OpenCV高速公路道路汽车车辆摄像头视频侦测检测识别统计数量

    Python OpenCV高速公路道路汽车车辆侦测检测识别统计数量 如需安装运行环境或远程调试,可加QQ905733049由专业技术人员远程协助! 运行结果如下: 运行主要代码如下: import c ...

最新文章

  1. 基于TestNG 与Selenium 的自动化测试设计与实施
  2. 用CSS写出一个下拉菜单小箭头
  3. FreeRTOS 中断优先级嵌套错误引发HardFault异常解决
  4. java怎么获取文本里的值_怎么获取到text中的文本,或者title中的值
  5. Linux ps指令
  6. Zookeeper集群搭建(配置详解)
  7. [js] axios拦截器原理是什么?
  8. junit、spring浅析、ssm框架、json格式
  9. java从入门到精通_Java大数据:数据库开发从入门到精通
  10. php修改学生信息代码_论导师和学生关于论文写作最大的信息不对称(一):从初稿到定稿到底要修改几遍?...
  11. 活动目录管理之批量创建域用户
  12. Android -- Looper.prepare()和Looper.loop() —深入版
  13. Windows XP下Dynamips模拟器的安装与使用
  14. 用计算机给plc编程,plc编程用什么电脑?plc编程用什么配置电脑
  15. HCDA学习笔记(二)
  16. 2022姓氏头像在线制作小程序源码+头像模块
  17. 易基因综述:表观遗传学和表观育种在作物品种改良的重要作用(水稻+玉米+番茄+大豆+油菜)
  18. c++判断某一天是这一年的第几天
  19. 阿里 P10 是怎样的存在?
  20. Java面向对象原谅帽

热门文章

  1. XP系统计算机小游戏,删除XP系统附件中的小游戏方法
  2. 关于AI视觉——目标检测与物体分类(基于FZ5C)
  3. 一篇文章带你走进Qlik,由浅入深了解商业智能BI明星产品
  4. 解锁永久会员!特殊版爱剪辑APP【Android】
  5. 机器学习入门--手写体识别
  6. JQuery 图片循环播放抽奖
  7. Vue中props用法
  8. dfs和bfs的总结
  9. qc中的流程图怎么画_QC控制流程图
  10. java面向对象最全入门笔记(通俗易懂,适合初学者)