国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Python > 正文

Python3遠程監控程序的實現方法

2024-09-09 19:03:09
字體:
來源:轉載
供稿:網友

簡述

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

使用語言: Python3

使用工具:opencv視頻監控 + socket數據傳輸技術

程序檢驗: 這里我考慮了一下,發現還是沒有必要實現封裝成可執行文件。還是直接就放代碼吧。(先放代碼,以后再做解釋)

本程序,經過本人修改,保證可以使用

使用要求:

Sender代碼必須要在一臺有攝像頭的電腦上運行起來。然后把數據編碼,壓縮之后,再傳給另外一個電腦

Reciever作為接受端,沒什么特別的要求。

兩個電腦都必須要按轉好numpy + opencv (安裝方法的話,在我的opencv文集中有一篇就是寫這個的)

對了,我的接受端關閉操作是(輸入鍵盤中的 Esc)這樣就可以退出監控。

發送端是關閉不了這個監控的

至于這個IP地址的設置:我寫的都是接受端的地址。端口隨便設置的

局限性:

本程序目前只能在局域網內進行實時監控。

改進思路:

如果想擴展成一個廣域網上的。(就可以用一個廣域網上的服務器做中轉站)

而且,上述的方法,如果能找到一臺肉雞,還可以避免探測到對應的監控對象的ip地址

代碼

Sender(發送端代碼)

import socketimport structimport timeimport cv2import numpyclass 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()        returnif __name__ == '__main__':  config = Config()  config.RT_Image()

Reciever 接受端代碼:

import socketimport cv2import structimport numpyimport threadingclass 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()
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屏边| 巫山县| 肥东县| 报价| 东宁县| 佛教| 郴州市| 深泽县| 西华县| 岗巴县| 秀山| 祁连县| 海原县| 克什克腾旗| 新巴尔虎右旗| 汕尾市| 自治县| 嘉峪关市| 宜州市| 东乡县| 北宁市| 新野县| 阳高县| 西昌市| 庄河市| 北票市| 泊头市| 嵩明县| 前郭尔| 唐山市| 宁强县| 民和| 琼中| 富源县| 广昌县| 沙湾县| 泸溪县| 富川| 察隅县| 拉萨市| 油尖旺区|