温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用Python3怎么远程监控程序

发布时间:2021-05-20 17:44:32 来源:亿速云 阅读:215 作者:Leah 栏目:开发技术

这期内容当中小编将会给大家带来有关使用Python3怎么远程监控程序,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

使用要求:

Sender代码必须要在一台有摄像头的电脑上运行起来。然后把数据编码,压缩之后,再传给另外一个电脑

Reciever作为接受端,没什么特别的要求。

两个电脑都必须要按转好numpy + opencv (安装方法的话,在我的opencv文集中有一篇就是写这个的)

对了,我的接受端关闭操作是(输入键盘中的 Esc)这样就可以退出监控。

发送端是关闭不了这个监控的

至于这个IP地址的设置:我写的都是接受端的地址。端口随便设置的

局限性:

本程序目前只能在局域网内进行实时监控。

改进思路:

如果想扩展成一个广域网上的。(就可以用一个广域网上的服务器做中转站)

而且,上述的方法,如果能找到一台肉鸡,还可以避免探测到对应的监控对象的ip地址

代码

Sender(发送端代码)

import socket import struct import time import cv2 import numpy class Config(object):   def __init__(self):     self.TargetIP = ('192.168.199.121', 6666)     self.resolution = (640, 480) # 分辨率     self.img_fps = 15 # each second send pictures     self.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 data       try:         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()         return if __name__ == '__main__':   config = Config()   config.RT_Image()

Reciever 接受端代码:

import socket import cv2 import struct import numpy import threading class Camera_Connect_Object(object):   def __init__(self, TargetIP=('', 6666)):     self.TargetIP = TargetIP     self.resolution = (640, 480)     self.src = 888 + 15     self.interval = 0     self.img_fps = 15     self.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 seconds       tempdata = self.client.recv(8)       if len(tempdata) == 0:         print("+1")         continue       info = struct.unpack('lhh', tempdata)       buf_size = int(info[0])       if buf_size:         try:           self.buf = b""           self.temp_buf = self.buf           while buf_size:             self.temp_buf = self.client.recv(buf_size)             buf_size -= len(self.temp_buf)             self.buf += self.temp_buf           data = 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)           pass         finally:           if cv2.waitKey(10) == 27:             self.client.close()             cv2.destroyAllWindows()             break   def 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怎么远程监控程序了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI