亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統(tǒng) 2009 0

簡述

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

使用語言: Python3

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

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

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

使用要求:

Sender代碼必須要在一臺(tái)有攝像頭的電腦上運(yùn)行起來。然后把數(shù)據(jù)編碼,壓縮之后,再傳給另外一個(gè)電腦

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

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

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

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

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

局限性:

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

改進(jìn)思路:

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

而且,上述的方法,如果能找到一臺(tái)肉雞,還可以避免探測到對(duì)應(yīng)的監(jiān)控對(duì)象的ip地址

代碼

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

            
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遠(yuǎn)程監(jiān)控程序的實(shí)現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产一区在线观看免费 | 日本不卡一区二区三区视频 | 国产欧美成人xxx视频 | 欧美日韩精品一区二区三区四区 | 亚洲欧美在线免费 | 亚洲精品区一区二区三区四 | 国产成人一区二区三中文 | 国产视频福利 | 婷婷色吧| 毛片毛片毛片毛片 | 亚洲高清国产一线久久 | 亚洲视频免费在线观看 | 国内成人免费视频 | 热久久亚洲 | 天天射日日射 | 国产在线视频色综合 | 日韩日b| 九九热8| 97在线免费观看 | 视频福利网| 久久久91精品国产一区二区 | 久热精品视频在线观看 | 久久99热久久精品23 | 色欧美亚洲 | 亚洲国产成人久久精品影视 | 午夜国产精品久久影院 | 激情久久婷婷 | 99久久99热精品免费观看国产 | 欧美视频在线观看一区二区 | 国产级a爱做片免费观看 | 色综合久久88一加勒比 | 精品久久久久久中文字幕专区 | 亚洲高清视频在线播放 | 好色婷婷 | 中文字幕天天躁夜夜狠狠综合 | 免费一级毛片在线播放欧美 | 欧美一级欧美三级在线观看 | 国产精品免费一区二区三区 | 精品亚洲一区二区三区在线播放 | 国产精品免费久久久久影院小说 | 一级毛片a女人刺激视频免费 |