Python3远程监控程序实现
简述
一开始觉得这个很有趣,然后就想来做一个来玩一下
- 使用语言: Python3
- 使用工具:opencv视频监控 + socket数据传输技术
程序检验: 这里我考虑了一下,发现还是没有必要实现封装成可执行文件。还是直接就放代码吧。(先放代码,以后再做解释)
本程序,经过本人修改,保证可以使用
使用要求:
- Sender代码必须要在一台有摄像头的电脑上运行起来。然后把数据编码,压缩之后,再传给另外一个电脑
- Reciever作为接受端,没什么特别的要求。
- 两个电脑都必须要按转好numpy + opencv (安装方法的话,在我的opencv文集中有一篇就是写这个的)
- 对了,我的接受端关闭操作是(输入键盘中的 Esc)这样就可以退出监控。
- 发送端是关闭不了这个监控的
- 至于这个IP地址的设置:我写的都是接受端的地址。端口随便设置的
局限性:
- 本程序目前只能在局域网内进行实时监控。
改进思路:
- 如果想扩展成一个广域网上的。(就可以用一个广域网上的服务器做中转站)
- 而且,上述的方法,如果能找到一台肉鸡,还可以避免探测到对应的监控对象的ip地址
代码
Sender(发送端代码)
import socket
import struct
import time
import cv2
import numpyclass Config(object):def __init__(self):self.TargetIP = ('192.168.199.121', 6666)self.resolution = (640, 480) # 分辨率self.img_fps = 15 # each second send picturesself.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)self.server.connect(self.TargetIP)self.img = ''self.img_data = ''def RT_Image(self):camera = cv2.VideoCapture(0)img_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.img_fps]while True:time.sleep(0.1) # sleep for 0.1 seconds_, self.img = camera.read()self.img = cv2.resize(self.img, self.resolution)_, img_encode = cv2.imencode('.jpg', self.img, img_param)img_code = numpy.array(img_encode)self.img_data = img_code.tostring() # bytes datatry:packet = struct.pack(b'lhh', len(self.img_data), self.resolution[0],self.resolution[1])self.server.send(packet)self.server.send(self.img_data)except Exception as e:print(e.args)camera.release()returnif __name__ == '__main__':config = Config()config.RT_Image()
Reciever 接受端代码:
import socket
import cv2
import struct
import numpy
import threadingclass Camera_Connect_Object(object):def __init__(self, TargetIP=('', 6666)):self.TargetIP = TargetIPself.resolution = (640, 480)self.src = 888 + 15self.interval = 0self.img_fps = 15self.Server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)self.Server.bind(self.TargetIP)self.Server.listen(5)def RT_Image(self):self.client, self.addr = self.Server.accept()self.name = self.addr[0] + " Camera"print(self.name)while True:# time.sleep(0.3) # sleep for 0.3 secondstempdata = self.client.recv(8)if len(tempdata) == 0:print("+1")continueinfo = struct.unpack('lhh', tempdata)buf_size = int(info[0])if buf_size:try:self.buf = b""self.temp_buf = self.bufwhile buf_size:self.temp_buf = self.client.recv(buf_size)buf_size -= len(self.temp_buf)self.buf += self.temp_bufdata = numpy.fromstring(self.buf, dtype='uint8')self.image = cv2.imdecode(data, 1)cv2.imshow(self.name, self.image)except Exception as e:print(e.args)passfinally:if cv2.waitKey(10) == 27:self.client.close()cv2.destroyAllWindows()breakdef Get_data(self):showThread = threading.Thread(target=self.RT_Image)showThread.start()showThread.join()if __name__ == '__main__':camera = Camera_Connect_Object()camera.Get_data()
Python3远程监控程序实现相关推荐
- python对局域网电脑监控_Python3远程监控程序的实现方法
小编就为大家分享一篇Python3远程监控程序的实现方法,希望能够帮助到大家 简述 一开始觉得这个很有趣,然后就想来做一个来玩一下 使用语言: Python3 使用工具:opencv视频监控 + so ...
- 用java实现一个简单远程监控软件_利用java实现一个简单的远程监控程序
一般的远程监控软件都是用c或者c++等语言开发的,而使用java如何来实现相同的功能呢. 首先我们先介绍一下一个简单的远程监控程序的实现原理. 功能一,远程屏幕监视 (1) 必须要有监控端与被监控端, ...
- 上网监控程序java_利用java实现一个简单的远程监控程序
一般的远程监控软件都是用c或者c++等语言开发的,而使用java如何来实现相同的功能呢. 首先我们先介绍一下一个简单的远程监控程序的实现原理. 功能一,远程屏幕监视 (1) 必须要有监控端与被监控端, ...
- python3远程连接MySQL
使用python3连接至远程的mysql服务器 python3连接mysql使用pymysql,首先要去下载对应版本的. pip3 install pymysql 1.导入模块: import pym ...
- python3远程连接_Python3 SSH远程连接服务器的方法示例
下载paramiko 首先,我的windows系统上有python2和python3.使用下面命令切换到python3: activate py3 接着使用下面命令下载相关模块: pip instal ...
- opencv imencode跟imdecode函数jpg(python)
经典用法 _, img_encode = cv2.imencode('.jpg', img, img_param) img是一张图片文件(在opencv中就是一个numpy的多维矩阵而已) img_p ...
- 使用.net技术实现一个简易远程监控软件(后端.net core,前端winform)
前端实现技术:Winform 后端实现技术:asp.net core 3.1 一.前端实现 采用winform实现一个简易的后台任务程序,其功能主要是定时截屏,然后发送给服务器,并且程序在任务管理器隐 ...
- ABB机器人二次开发:使用Web网页读取机器人系统信息的操作方法
本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注! 概述 对于ABB机器人进行远程监控,除了使用PC SDK二次开发后生成远程监控程序以外,还可以使用ABB机 ...
- Linux操作系统打印机配置全攻略(一)(转)
一.Linux打印系统发展路线图 在Unix世界里,PostScript语言是主要用于打印的接口.所有主要的应用程序都会输出通用的PostScript页面,而这些PostScript经过打印系统处理后 ...
最新文章
- ORACLE导入Excel数据
- muduo之Atomic
- 给指定服务器加路由,无线路由器如何给终端分配指定的IP地址?
- envi导出jpg文件_保存技巧,完美解决PS导出文件过大的问题
- 逆水寒服务器更新响应超时,逆水寒patcher.zip文件更新失败怎么办 更新文件异常问题解决方法...
- python输出格式控制_Python3.x那些事儿:[50]多种多样的输出格式
- Python: names, values, assignment and mutability
- My thoughts after NOIP 2018(2)
- android矢量地图画法_Android 矢量室内地图开发实例
- 【设计】松本行弘的程序世界
- 高速PCB设计之“20H ”原则
- ROS二维码识别以及OKR使用
- Gensim库的使用——Doc2Vec模型(一)介绍与使用
- 台式计算机怎么关闭无线网络,台式机无线网卡如何关闭
- SpringBoot:用腾讯企业微信邮箱发送邮件
- 怎样设置txt的默认打开方式(比如用nodePad++)
- 中国双离合器变速器市场趋势报告、技术动态创新及市场预测
- 2022年天梯赛题目记录
- 【mysql的下载和使用】
- vulnhub靶机-FIRSTBLOOD: 1
热门文章
- python 编译器重构_Python之父考虑重构Python解释器
- LeetCode 题解汇总
- 关于32bit与4Gib的问题
- Notepad++添加右键菜单
- IE, FireFox, Opera 浏览器支持CSS实现Alpha半透明的方法
- FireFox and IE CSS兼容要点
- 可怕又可笑的看病经历
- [Caffe]:关于*** Aborted at 1479432790 (unix time) try date -d @1479432790 错误的另一种原因
- 论文阅读:Joint Learning of Single-image and Cross-image Representations for Person Re-identification
- 【Python-ML】神经网络-多层感知器增加梯度检验