美文网首页挨踢(IT)
Python3远程监控程序的实现方法

Python3远程监控程序的实现方法

作者: python兜兜 | 来源:发表于2019-09-27 15:15 被阅读0次

小编就为大家分享一篇Python3远程监控程序的实现方法,希望能够帮助到大家

简述

一开始觉得这个很有趣,然后就想来做一个来玩一下

使用语言: Python3

使用工具:opencv视频监控 + socket数据传输技术

程序检验: 这里我考虑了一下,发现还是没有必要实现封装成可执行文件。还是直接就放代码吧。(先放代码,以后再做解释)

本程序,经过本人修改,保证可以使用

使用要求:

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

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

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

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

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

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

局限性:

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

改进思路:

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

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

完整代码

Sender(发送端代码)

import socket
import struct
import time
import cv2
import numpy

 -小编推荐一个学python的学习**qun 766,5459,07**
无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!-
 
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
 
  -小编推荐一个学python的学习**qun 766,5459,07**
无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!-

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远程监控程序的实现方法

    小编就为大家分享一篇Python3远程监控程序的实现方法,希望能够帮助到大家 简述 一开始觉得这个很有趣,然后就想...

  • rsync+inotify实现远程同步

    简介: rsync可以实现文件或目录的远程同步。 inotify可以实现对远程目录的监控(删除,创建,修改等),可...

  • Python3 趣味系列题4 ------非递归解决

      人们通常利用递归的方法求解汉诺塔问题。递归程序的实现比较简单,但是难于理解。下面给出python3的递归程序:...

  • 通过XML-RPC实现简单的远程调用

    问题 你想找到一个简单的方式去执行运行在远程机器上面的Python程序中的函数或方法。 解决方案 实现一个远程方法...

  • iOS远程推送和本地推送(三)

    远程推送代码实现 在iOS7下 注册远程通知 实现注册远程通知返回deviceToken的回调方法 实现注册远程通...

  • 机房智能管控

    为了进一步加强对机房的智能化管理,本次对机房投入了一些智能小硬件,可实现对机房的远程视频监控,远程温湿度监控,远程...

  • 远程视频监控的实现

    远程视频监控,也称远程网络监控,是指监控者不在监控摄像头或其他摄像采集设备周围,通过网络远距离查看现场监控视频的场...

  • 监控主机及联网状态

    监控主机及联网状态监控目的监控方法监控思路监控实现一、监控目的掌握在线业务机器及联网的状态 二、监控方法通过采用I...

  • 运维平台参考

    相关文档 Flask 实现远程日志实时监控[https://github.com/frostming/flask-...

  • 如何在Java中实现远程方法调用

    如何在Java中实现远程方法调用 一、Java中的远程方法调用 JAVA教程远程方法调用(Remote Metho...

网友评论

    本文标题:Python3远程监控程序的实现方法

    本文链接:https://www.haomeiwen.com/subject/wsozectx.html