1. 首页
  2. Python

一篇搞定!Python3远程监控程序的实现方法

“u003Cdivu003Eu003Cpu003E小编就为大家分享一篇Python3远程监控程序的实现方法,希望能够帮助到大家。u003Cu002Fpu003Eu003Cpu003E谢谢大家一直以来的支持。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002Fdfic-imagehandleru002F7d8cc85c-6d3b-4deb-9cc1-f60906ddef51″ img_width=”1024″ img_height=”685″ alt=”一篇搞定!Python3远程监控程序的实现方法” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E简述u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E一开始觉得这个很有趣,然后就想来做一个来玩一下。u003Cu002Fpu003Eu003Cpu003E使用语言: Python3u003Cu002Fpu003Eu003Cpu003E使用工具:opencv视频监控 + socket数据传输技术u003Cu002Fpu003Eu003Cpu003E程序检验: 这里我考虑了一下,发现还是没有必要实现封装成可执行文件。还是直接就放代码吧。(先放代码,以后再做解释)u003Cu002Fpu003Eu003Cpu003E本程序,经过本人修改,保证可以使用。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E使用要求:u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003ESender代码必须要在一台有摄像头的电脑上运行起来。然后把数据编码,压缩之后,再传给另外一个电脑。u003Cu002Fpu003Eu003Cpu003EReciever作为接受端,没什么特别的要求。u003Cu002Fpu003Eu003Cpu003E两个电脑都必须要按转好numpy + opencv (安装方法的话,在我的opencv文集中有一篇就是写这个的)。u003Cu002Fpu003Eu003Cpu003E对了,我的接受端关闭操作是(输入键盘中的 Esc)这样就可以退出监控。u003Cu002Fpu003Eu003Cpu003E发送端是关闭不了这个监控的。u003Cu002Fpu003Eu003Cpu003E至于这个IP地址的设置:我写的都是接受端的地址。端口随便设置的。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E局限性:u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E本程序目前只能在局域网内进行实时监控。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E改进思路:u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E如果想扩展成一个广域网上的。(就可以用一个广域网上的服务器做中转站)u003Cu002Fpu003Eu003Cpu003E而且,上述的方法,如果能找到一台肉鸡,还可以避免探测到对应的监控对象的ip地址。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fdfic-imagehandleru002Fc67933cc-c96c-4a55-ba6f-3eeccbcd2b59″ img_width=”1200″ img_height=”798″ alt=”一篇搞定!Python3远程监控程序的实现方法” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E完整代码u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003ESender(发送端代码)u003Cu002Fpu003Eu003Cpreu003Eimport socketu003Cbru003Eimport structu003Cbru003Eimport timeu003Cbru003Eimport cv2u003Cbru003Eimport numpyu003Cbru003Eclass Config(object):u003Cbru003E def __init__(self):u003Cbru003E self.TargetIP = (‘192.168.199.121’, 6666)u003Cbru003E self.resolution = (640, 480) # 分辨率u003Cbru003E self.img_fps = 15 # each second send picturesu003Cbru003E self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)u003Cbru003E self.server.connect(self.TargetIP)u003Cbru003E self.img = ”u003Cbru003E self.img_data = ”u003Cbru003E u003Cbru003E def RT_Image(self):u003Cbru003E camera = cv2.VideoCapture(0)u003Cbru003E img_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.img_fps]u003Cbru003E u003Cbru003E while True:u003Cbru003E time.sleep(0.1) # sleep for 0.1 secondsu003Cbru003E _, self.img = camera.read()u003Cbru003E u003Cbru003E self.img = cv2.resize(self.img, self.resolution)u003Cbru003E u003Cbru003E _, img_encode = cv2.imencode(‘.jpg’, self.img, img_param)u003Cbru003E img_code = numpy.array(img_encode)u003Cbru003E self.img_data = img_code.tostring() # bytes datau003Cbru003E try:u003Cbru003E u003Cbru003E packet = struct.pack(b’lhh’, len(self.img_data), self.resolution[0],u003Cbru003E self.resolution[1])u003Cbru003E self.server.send(packet)u003Cbru003E self.server.send(self.img_data)u003Cbru003E u003Cbru003E except Exception as e:u003Cbru003E print(e.args)u003Cbru003E camera.release()u003Cbru003E returnu003Cbru003E u003Cbru003E u003Cbru003Eif __name__ == ‘__main__’:u003Cbru003E config = Config()u003Cbru003E config.RT_Image()u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cstrongu003EReciever 接受端代码:u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpreu003Eimport socketu003Cbru003Eimport cv2u003Cbru003Eimport structu003Cbru003Eimport numpyu003Cbru003Eimport threadingu003Cbru003E class Camera_Connect_Object(object):u003Cbru003E def __init__(self, TargetIP=(”, 6666)):u003Cbru003E self.TargetIP = TargetIPu003Cbru003E self.resolution = (640, 480)u003Cbru003E self.src = 888 + 15u003Cbru003E self.interval = 0u003Cbru003E self.img_fps = 15u003Cbru003E u003Cbru003E self.Server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)u003Cbru003E self.Server.bind(self.TargetIP)u003Cbru003E self.Server.listen(5)u003Cbru003E u003Cbru003E def RT_Image(self):u003Cbru003E self.client, self.addr = self.Server.accept()u003Cbru003E self.name = self.addr[0] + ” Camera”u003Cbru003E print(self.name)u003Cbru003E while True:u003Cbru003E # time.sleep(0.3) # sleep for 0.3 secondsu003Cbru003E tempdata = self.client.recv(8)u003Cbru003E if len(tempdata) == 0:u003Cbru003E print(“+1″)u003Cbru003E continueu003Cbru003E info = struct.unpack(‘lhh’, tempdata)u003Cbru003E buf_size = int(info[0])u003Cbru003E u003Cbru003E if buf_size:u003Cbru003E try:u003Cbru003E self.buf = b””u003Cbru003E self.temp_buf = self.bufu003Cbru003E while buf_size:u003Cbru003E self.temp_buf = self.client.recv(buf_size)u003Cbru003E buf_size -= len(self.temp_buf)u003Cbru003E self.buf += self.temp_bufu003Cbru003E data = numpy.fromstring(self.buf, dtype=’uint8′)u003Cbru003E u003Cbru003E self.image = cv2.imdecode(data, 1)u003Cbru003E cv2.imshow(self.name, self.image)u003Cbru003E except Exception as e:u003Cbru003E print(e.args)u003Cbru003E passu003Cbru003E finally:u003Cbru003E if cv2.waitKey(10) == 27:u003Cbru003E self.client.close()u003Cbru003E cv2.destroyAllWindows()u003Cbru003E breaku003Cbru003E u003Cbru003E def Get_data(self):u003Cbru003E showThread = threading.Thread(target=self.RT_Image)u003Cbru003E showThread.start()u003Cbru003E showThread.join()u003Cbru003E u003Cbru003E u003Cbru003Eif __name__ == ‘__main__’:u003Cbru003E camera = Camera_Connect_Object()u003Cbru003E camera.Get_data()u003Cbru003Eu003Cu002Fpreu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fdfic-imagehandleru002F2b9ce97b-9715-4f3d-9c3a-08dadec69c88″ img_width=”1200″ img_height=”901″ alt=”一篇搞定!Python3远程监控程序的实现方法” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以在后台私信小编:“01”即可领取。u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:一篇搞定!Python3远程监控程序的实现方法

主题测试文章,只做测试使用。发布者:逗乐男神i,转转请注明出处:http://www.cxybcw.com/12830.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code