简述

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

  • 使用语言: 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远程监控程序实现相关推荐

  1. python对局域网电脑监控_Python3远程监控程序的实现方法

    小编就为大家分享一篇Python3远程监控程序的实现方法,希望能够帮助到大家 简述 一开始觉得这个很有趣,然后就想来做一个来玩一下 使用语言: Python3 使用工具:opencv视频监控 + so ...

  2. 用java实现一个简单远程监控软件_利用java实现一个简单的远程监控程序

    一般的远程监控软件都是用c或者c++等语言开发的,而使用java如何来实现相同的功能呢. 首先我们先介绍一下一个简单的远程监控程序的实现原理. 功能一,远程屏幕监视 (1) 必须要有监控端与被监控端, ...

  3. 上网监控程序java_利用java实现一个简单的远程监控程序

    一般的远程监控软件都是用c或者c++等语言开发的,而使用java如何来实现相同的功能呢. 首先我们先介绍一下一个简单的远程监控程序的实现原理. 功能一,远程屏幕监视 (1) 必须要有监控端与被监控端, ...

  4. python3远程连接MySQL

    使用python3连接至远程的mysql服务器 python3连接mysql使用pymysql,首先要去下载对应版本的. pip3 install pymysql 1.导入模块: import pym ...

  5. python3远程连接_Python3 SSH远程连接服务器的方法示例

    下载paramiko 首先,我的windows系统上有python2和python3.使用下面命令切换到python3: activate py3 接着使用下面命令下载相关模块: pip instal ...

  6. opencv imencode跟imdecode函数jpg(python)

    经典用法 _, img_encode = cv2.imencode('.jpg', img, img_param) img是一张图片文件(在opencv中就是一个numpy的多维矩阵而已) img_p ...

  7. 使用.net技术实现一个简易远程监控软件(后端.net core,前端winform)

    前端实现技术:Winform 后端实现技术:asp.net core 3.1 一.前端实现 采用winform实现一个简易的后台任务程序,其功能主要是定时截屏,然后发送给服务器,并且程序在任务管理器隐 ...

  8. ABB机器人二次开发:使用Web网页读取机器人系统信息的操作方法

    本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注! 概述 对于ABB机器人进行远程监控,除了使用PC SDK二次开发后生成远程监控程序以外,还可以使用ABB机 ...

  9. Linux操作系统打印机配置全攻略(一)(转)

    一.Linux打印系统发展路线图 在Unix世界里,PostScript语言是主要用于打印的接口.所有主要的应用程序都会输出通用的PostScript页面,而这些PostScript经过打印系统处理后 ...

最新文章

  1. ORACLE导入Excel数据
  2. muduo之Atomic
  3. 给指定服务器加路由,无线路由器如何给终端分配指定的IP地址?
  4. envi导出jpg文件_保存技巧,完美解决PS导出文件过大的问题
  5. 逆水寒服务器更新响应超时,逆水寒patcher.zip文件更新失败怎么办 更新文件异常问题解决方法...
  6. python输出格式控制_Python3.x那些事儿:[50]多种多样的输出格式
  7. Python: names, values, assignment and mutability
  8. My thoughts after NOIP 2018(2)
  9. android矢量地图画法_Android 矢量室内地图开发实例
  10. 【设计】松本行弘的程序世界
  11. 高速PCB设计之“20H ”原则
  12. ROS二维码识别以及OKR使用
  13. Gensim库的使用——Doc2Vec模型(一)介绍与使用
  14. 台式计算机怎么关闭无线网络,台式机无线网卡如何关闭
  15. SpringBoot:用腾讯企业微信邮箱发送邮件
  16. 怎样设置txt的默认打开方式(比如用nodePad++)
  17. 中国双离合器变速器市场趋势报告、技术动态创新及市场预测
  18. 2022年天梯赛题目记录
  19. 【mysql的下载和使用】
  20. vulnhub靶机-FIRSTBLOOD: 1

热门文章

  1. python 编译器重构_Python之父考虑重构Python解释器
  2. LeetCode 题解汇总
  3. 关于32bit与4Gib的问题
  4. Notepad++添加右键菜单
  5. IE, FireFox, Opera 浏览器支持CSS实现Alpha半透明的方法
  6. FireFox and IE CSS兼容要点
  7. 可怕又可笑的看病经历
  8. [Caffe]:关于*** Aborted at 1479432790 (unix time) try date -d @1479432790 错误的另一种原因
  9. 论文阅读:Joint Learning of Single-image and Cross-image Representations for Person Re-identification
  10. 【Python-ML】神经网络-多层感知器增加梯度检验