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


Posted in Python onJuly 15, 2019

简述

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

使用语言: Python3

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

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

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

使用要求:

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远程监控程序的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
解析Python中的异常处理
Apr 28 Python
win7下python3.6安装配置方法图文教程
Jul 31 Python
python3 读取Excel表格中的数据
Oct 16 Python
Python GUI学习之登录系统界面篇
Aug 21 Python
Pycharm 2019 破解激活方法图文详解
Oct 11 Python
python manage.py runserver流程解析
Nov 08 Python
python列表推导式操作解析
Nov 26 Python
python 微信好友特征数据分析及可视化
Jan 07 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
Python定时任务APScheduler安装及使用解析
Aug 07 Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 Python
Python线程池与GIL全局锁实现抽奖小案例
Apr 13 Python
python监控进程状态,记录重启时间及进程号的实例
Jul 15 #Python
Python 获取windows桌面路径的5种方法小结
Jul 15 #Python
Python识别快递条形码及Tesseract-OCR使用详解
Jul 15 #Python
Python实现Mysql数据统计及numpy统计函数
Jul 15 #Python
通过python改变图片特定区域的颜色详解
Jul 15 #Python
用Python+OpenCV对比图像质量的几种方法
Jul 15 #Python
python3实现斐波那契数列(4种方法)
Jul 15 #Python
You might like
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
国产PHP开发框架myqee新手快速入门教程
2014/07/14 PHP
php常量详细解析
2015/10/27 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
Jquery取得iframe下内容的方法
2013/11/18 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
微信小程序控制台提示warning:Now you can provide attr "wx:key" for a "wx:for" to improve performance解决方法
2019/02/21 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
django项目搭建与Session使用详解
2018/10/10 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
为什么要做架构设计
2015/07/08 面试题
师范生实习自我鉴定
2013/11/01 职场文书
大学毕业生通用自我评价
2014/01/05 职场文书
好家长事迹材料
2014/01/23 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
铁路安全反思材料
2014/12/24 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
婚庆主持词大全
2015/06/30 职场文书
新闻稿件写作范文
2015/07/18 职场文书
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python