日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python3远程监控程序实现

發(fā)布時間:2025/4/16 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python3远程监控程序实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡述

一開始覺得這個很有趣,然后就想來做一個來玩一下

  • 使用語言: Python3
  • 使用工具:opencv視頻監(jiān)控 + socket數(shù)據(jù)傳輸技術(shù)

程序檢驗: 這里我考慮了一下,發(fā)現(xiàn)還是沒有必要實現(xiàn)封裝成可執(zhí)行文件。還是直接就放代碼吧。(先放代碼,以后再做解釋)
本程序,經(jīng)過本人修改,保證可以使用


使用要求:

  • Sender代碼必須要在一臺有攝像頭的電腦上運行起來。然后把數(shù)據(jù)編碼,壓縮之后,再傳給另外一個電腦
  • Reciever作為接受端,沒什么特別的要求。
  • 兩個電腦都必須要按轉(zhuǎn)好numpy + opencv (安裝方法的話,在我的opencv文集中有一篇就是寫這個的)
  • 對了,我的接受端關(guān)閉操作是(輸入鍵盤中的 Esc)這樣就可以退出監(jiān)控。
  • 發(fā)送端是關(guān)閉不了這個監(jiān)控的
  • 至于這個IP地址的設(shè)置:我寫的都是接受端的地址。端口隨便設(shè)置的

局限性:

  • 本程序目前只能在局域網(wǎng)內(nèi)進行實時監(jiān)控。

改進思路:

  • 如果想擴展成一個廣域網(wǎng)上的。(就可以用一個廣域網(wǎng)上的服務(wù)器做中轉(zhuǎn)站)
  • 而且,上述的方法,如果能找到一臺肉雞,還可以避免探測到對應(yīng)的監(jiān)控對象的ip地址

代碼

Sender(發(fā)送端代碼)

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()

總結(jié)

以上是生活随笔為你收集整理的Python3远程监控程序实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。