Python3遠程監(jiān)控程序的實現(xiàn)方法

小編就為大家分享一篇Python3遠程監(jiān)控程序的實現(xiàn)方法捣炬,希望能夠幫助到大家

簡述

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

使用語言: Python3

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

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

本程序搂抒,經(jīng)過本人修改,保證可以使用

使用要求:

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

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

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

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

發(fā)送端是關閉不了這個監(jiān)控的

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

局限性:

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

改進思路:

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

而且烁峭,上述的方法容客,如果能找到一臺肉雞,還可以避免探測到對應的監(jiān)控對象的ip地址

完整代碼

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

import socket
import struct
import time
import cv2
import numpy

 -小編推薦一個學python的學習**qun 766约郁,5459缩挑,07**
無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習鬓梅!裙內有開發(fā)工具供置,很多干貨和技術資料分享!-
 
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
 
  -小編推薦一個學python的學習**qun 766绽快,5459芥丧,07**
無論你是大牛還是小白紧阔,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發(fā)工具续担,很多干貨和技術資料分享擅耽!-

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

分享結束,希望能夠幫助到大家

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末赤拒,一起剝皮案震驚了整個濱河市秫筏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挎挖,老刑警劉巖这敬,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蕉朵,居然都是意外死亡崔涂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門始衅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冷蚂,“玉大人,你說我怎么就攤上這事汛闸◎瑁” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵诸老,是天一觀的道長隆夯。 經(jīng)常有香客問我,道長别伏,這世上最難降的妖魔是什么蹄衷? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮厘肮,結果婚禮上愧口,老公的妹妹穿的比我還像新娘。我一直安慰自己类茂,他們只是感情好耍属,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著巩检,像睡著了一般恬涧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碴巾,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天溯捆,我揣著相機與錄音,去河邊找鬼。 笑死提揍,一個胖子當著我的面吹牛啤月,可吹牛的內容都是我干的。 我是一名探鬼主播劳跃,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼谎仲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了刨仑?” 一聲冷哼從身側響起郑诺,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎杉武,沒想到半個月后辙诞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡轻抱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年飞涂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祈搜。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡较店,死狀恐怖,靈堂內的尸體忽然破棺而出容燕,到底是詐尸還是另有隱情梁呈,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布蘸秘,位于F島的核電站官卡,受9級特大地震影響,放射性物質發(fā)生泄漏秘血。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一评甜、第九天 我趴在偏房一處隱蔽的房頂上張望灰粮。 院中可真熱鬧,春花似錦忍坷、人聲如沸粘舟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柑肴。三九已至,卻和暖如春旬薯,著一層夾襖步出監(jiān)牢的瞬間晰骑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工绊序, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留硕舆,地道東北人秽荞。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像抚官,于是被迫代替她去往敵國和親扬跋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內容