简述
一开始觉得这个很有趣,然后就想来做一个来玩一下
使用语言: 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远程监控程序的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
Python3,远程,监控
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 黑鸭子2010-再度重相逢[首版][WAV+CUE]
- 【原神手游】5.2版本圣遗物优化详情
- 方季惟.1989-一生只爱一次【蓝与白】【WAV+CUE】
- 群星.1997-强力舞曲总动员【金点】【WAV+CUE】
- 盘尼西林.2024-岛与黎明【智慧大狗】【FLAC分轨】
- 刀郎《柔情经典》 2CD[WAV分轨][3.8G]
- 群星2024《民谣精选》原音母版1:1直刻[低速原抓WAV+CUE][1.1G]
- 经典《泰坦尼克号原声大碟》[WAV+DSF+FLAC多版][5.2G]
- 魔兽世界兽王猎输出宏代码是什么 兽王猎翻页输出宏命令代码分享
- 魔兽世界wlk野德一键输出宏是什么 wlk野德一键输出宏介绍
- wlk鸟德一键输出宏是什么 wlk鸟德一键输出宏介绍
- 《明末:渊虚之羽》外网新宣传:有勇气面对障碍吗?
- 视觉盛宴!V社公布《看火人》团队新作水面物理效果演示
- 张艺谋呼吁观众走进影院看电影:对解说短视频很无语
- 车载音乐最强享受 《车载极致女声精选》[WAV分轨][1G]