之前在写远程桌面共享的时候一直没有思路,直到搜到了这篇文章:
(具体实现原理过程请看原文)
python实现基于UDP的视频直播程序

对我启发很大,但还有两个问题:
1.画质太低,导致连桌面上的文字都难辨认
2.存在色变,画面崩坏

解决办法

import threading
import time
import numpy
import cv2 as cv
from PIL import ImageGrab
from PIL import Image
from io import BytesIO#因为开发需要,我将接收端的IP与端口写进配置文件
ip_inifile=open("ip.ini","r")
ipasport=ip_inifile.read()
ipAndport=ipasport.split(":")#拆分字符串
ip=ipAndport[0]    #接收端IP
port=ipAndport[1]  #接收端端口def jiep_send():while True:ip_adder=(ip,int(port))#截取桌面img=ImageGrab.grab()#传输使用UDP协议,将图片分辨率变小方便传输,将ANTIALIAS作为第二个参数即可一定程度上提高画质out=img.resize((650,400),Image.ANTIALIAS)#申请一块内存块stram_0=BytesIO()#将图片以JPEG格式图片的方式保存至内存块out.save(stram_0,format='JPEG')#将内存块当作图片文件打开,并转为数组jp_array=numpy.array(Image.open(stram_0))stram_0.close()#再申请一个内存块stram_1=BytesIO()pic=Image.fromarray(jp_array)#将图片保存至新申请的内存块,以JPEG图片格式pic.save(stram_1,format='JPEG')#提取内存块中的值jpeg=stram_1.getvalue()stram_1.close()#设置UDP链接socket_0=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#是否正常发送try:socket_0.sendto(jpeg,ip_adder)#断线重连机制,每三秒重拨一次except Exception as e:while True:try:socket_0.sendto(jpeg,ip_adder)except Exception as e:time.sleep(3)else:breakelse:passfinally:socket_0.close()def _winmain()#因为开发需要我这里用了一个新线程来传输画面t1=threading.Thread(target=jiep_send)t1.start()if __name__=='__main__':_winmain()

这里基本上都是https://blog.csdn.net/qq_35488769/article/details/75500755
这位大佬的代码
我对这段代码的改动就是
out=img.resize((650,400),Image.ANTIALIAS)
out=img.resize((650,400),Image.ANTIALIAS)
将ANTIALIAS作为第二个参数,以此尽可能提高画质
(虽然画质还是不高,但是起码能够辨认出汉字字符惹。。。)

接收端代码

#_*_ coding:utf-8 _*_
import pyHook
import pythoncom
import socket
import os
import numpy
import cv2 as cv
from PIL import ImageGrab
from PIL import Image
from PIL import ImageFilter
from io import BytesIO
import threadingdef jiep_recv(ip_port):socket_0=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)socket_0.bind((socket.gethostname(),ip_port))while True:try:img_data,address=socket_0.recvfrom(1024*1024)except Exception as e:cv.destroyAllWindows()else:#申请内存块,并将收到的UDP数据放进内存块buf=BytesIO(img_data)#将收到的UDP数据转为数组img_data=numpy.array(Image.open(buf))#这一步作用重要,image类颜色格式为RGB,cv图片颜色格式为BGR故要将颜色格式进行转化,否则将色变img_data_1=cv.cvtColor(img_data,cv.COLOR_RGB2BGR)img_data_1=cv.resize(img_data_1,(850,500),)#显示图片cv.imshow("Service",img_data_1)buf.close()cv.waitKey(1)def _winmains_():print 20*"*"+"xxxx"+20*"*"port=int(input("请输入接收端口:"))if port>65534:print "端口号过大!"returnelse:t1=threading.Thread(target=jiep_recv,args=(port,))t1.start()
#开发需要,用了一个新线程if __name__=='__main__':_winmains_()

接收端主要利用img_data_1=cv.cvtColor(img_data,cv.COLOR_RGB2BGR)这句代码来将RGB转换为BGR,以此来解决色变的问题

python使用UDP协议进行远程桌面共享相关推荐

  1. linux系统远程工具,分享|Remmina:一个 Linux 下功能丰富的远程桌面共享工具

    Remmina 是一款在 Linux 和其他类 Unix 系统下的自由开源.功能丰富.强大的远程桌面客户端,它用 GTK+ 3 编写而成.它适用于那些需要远程访问及使用许多计算机的系统管理员和在外出行 ...

  2. vnc远程linux命令,用VNC实现远程桌面共享(支持Windows, Linux, …) | 易水博客

    用VNC实现远程桌面共享(支持Windows, Linux, -) VNC,全称为Virtual Network Computing,它是一个桌面共享系统.它的功能,类似于windows中的远程桌面功 ...

  3. Remmina:一个 Linux 下功能丰富的远程桌面共享工具

    转自 https://linux.cn/article-8493-1.html Remmina 是一款在 Linux 和其他类 Unix 系统下的自由开源.功能丰富.强大的远程桌面客户端,它用 GTK ...

  4. 计算机关闭远程桌面 共享功能,win7旗舰版系统优化禁止用远程桌面共享的解决方法...

    ‍ ‍windows7系统优化的时候,禁用远程桌面共享功能,一旦被禁用了用户就不能设置它或使用它来远程控制其计算机,遇上这种问题要怎么处理,那么接下来就一起看看win7旗舰版系统优化禁止用远程桌面共享 ...

  5. windows系统无法远程桌面提示CredSSP 身份验证协议和远程桌面客户端

    引言 微软在2018 年 3 月 13 日初始版本更新了所有受影响平台的 CredSSP 身份验证协议和远程桌面客户端.2018年5月8日将默认设置从"易受攻击"更改为" ...

  6. php qq远程桌面共享,新手学堂:用VNC实现远程桌面共享的方法

    VNC,全称为Virtual Network Computing,它是一个桌面共享系统.它的功能,类似于windows中的远程桌面功能.VNC使用了RFB(Remote FrameBuffer,远程帧 ...

  7. [NUAA]Python用UDP协议建立带有私聊功能的网络聊天室-建立聊天工具

    文章目录 前言 1.网络聊天室的基本架构是什么? 1.1 客户端和服务器的架构 1.2 通信协议的选择以及多线程通信 1.2.1 多线程通信 1.2.2 通信协议选择 1.3 前后端功能设计思路 1. ...

  8. Python使用UDP协议实现局域网内屏幕广播

    3年前推送过一篇使用TCP协议进行局域网内屏幕广播的文章,见 Python实现局域网内屏幕广播的技术要点分析 众所周知,TCP协议尽管有良好的流量控制.拥塞控制等传输质量保证机制,但开销比较大且只能单 ...

  9. xrdp协议_远程桌面协议-阿里云开发者社区

    libgssglue yum -y install libX11-devel 目前常用的协议有VNC/SPICE/RDP三种,就在这里做一个简单的介绍. 三种协议的对比 SPICE VNC RDP B ...

  10. Python使用UDP协议打造在线时间服务器

    代码原理:服务端监听特定的端口,如果收到客户端发来的请求就把服务器上的当前时间发给客户端,而客户端收到时间之后立刻打印输出,当然也可以改成做别的事情,例如调整客户端的系统时间. 服务端代码: impo ...

最新文章

  1. 每天一个linux命令(33):df 命令
  2. 精简易懂,30 分钟学会 SVD 矩阵分解,很强!
  3. 限定filesize的数据泵导入导出操作案例
  4. CTFshow php特性 web111
  5. 图解在emu8086中学习几条汇编语言常用语句
  6. tf.clip_by_value
  7. python经典排序_python实现十大经典排序算法
  8. 不恰当使用read会造成服务器阻塞
  9. C++|Qt中QTreeWidget基本操作及完整代码下载
  10. Sublime Text 3 配置和使用方法
  11. 取出字符串中的数字部分
  12. linux mono环境
  13. 【CCCC】L2-008 最长对称子串 (25分),直接枚举遍历
  14. 使用寻路算法写的一个小项目
  15. java hibernate状态_Hibernate对象的三种状态
  16. 使用VNC远程连接windows2003操作系统
  17. trilateration三边测距算法及C语言实现(适用stm32)
  18. Android Protobuf应用及原理
  19. sql内连接、左连接、右连接以及全连接查询
  20. Python编程基础题(9-求绝对值最大的元素)

热门文章

  1. 计算机小喇叭找不到,Win7电脑右下角的小喇叭不见了
  2. python寻找所有三位数素数_寻找所有的素数的python实现
  3. Vue电影网站构建实战教程
  4. 苍天有眼,我终于搞定了win7使用建行华大智宝U盾的问题了!
  5. 取消Editplus的自动备份
  6. 如果以后找不到工作了,应该干点啥?
  7. 计算机excel保留一位小数,excel表格数据取一位小数-excel保留一位小数
  8. P5708 【深基2.习2】三角形面积
  9. 资料分享:TI AM5708平台特点和典型应用
  10. matlab三角二倍角公式,数学三角函数常用的二倍角公式