直接上代码和效果图,因为用了高德的api接口,无法达到实时性

import sys
import argparse
from yolo_xie import YOLO, detect_video
from PIL import Image
import cv2
import os
import time
import numpy as np
from datetime import datetime
import math
import glob
import urllib.request
import urllib
from urllib.parse import urlparse
import cv2
import jsontimenow = time.strftime('%Y%m%d_%H%M%S')
import socket
os.environ["CUDA_VISIBLE_DEVICES"] = "3"#  python yolo_video_xie.py --input pathimport threadingclass RTSCapture(cv2.VideoCapture):"""Real Time Streaming Capture."""_cur_frame = None_reading = False@staticmethoddef create(url):"""这个类必须使用 RTSCapture.create 方法创建,请不要直接实例化"""rtscap = RTSCapture(url)rtscap.frame_receiver = threading.Thread(target=rtscap.recv_frame, daemon=True)if isinstance(url, str) and url.startswith(("rtsp://", "rtmp://")):rtscap._reading = Truereturn rtscapdef isStarted(self):"""替代 VideoCapture.isOpened() """ok = self.isOpened()if ok and self._reading:ok = self.frame_receiver.is_alive()return okdef recv_frame(self):"""子线程读取最新视频帧方法"""while self._reading and self.isOpened():ok, frame = self.read()if not ok: breakself._cur_frame = frameself._reading = Falsedef read2(self):"""读取最新视频帧返回结果格式与 VideoCapture.read() 一样"""frame = self._cur_frameself._cur_frame = Nonereturn frame is not None, framedef start_read(self):"""启动子线程读取视频帧"""self.frame_receiver.start()self.read_latest_frame = self.read2 if self._reading else self.readdef stop_read(self):"""退出子线程方法"""self._reading = Falseif self.frame_receiver.is_alive(): self.frame_receiver.join()def detect_img(yolo):# 这个是调用USB摄像头的# fourcc = cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')# cap = cv2.VideoCapture(0)# cap.set(6,fourcc)# 调用网络摄像头,有2个ip 180是左边窗口的 175是右边窗口的# 这种调用方法会有卡顿# url = "rtsp://admin:lingtan666@192.168.0.176"# url1 = 'rtsp://admin:lingtan666@192.168.0.176:554/h264/ch1/main/av_stream'#cap = cv2.VideoCapture(url)# 相机参数m_nScreenResolution_l = 1920;m_nScreenResolution_h = 1080;m_dScreenResolution_angle = 72 / 1920m_dPlane_kappa = 0;m_dPlane_phi = 0;m_dPlane_omega = 0;m_dFixed_elevation = 5.5;m_dTarget_elevation = 0;# 32.3927090000,119.4515720000 左边m_dFixed_longitude = 119.4515720000;m_dFixed_latitude = 32.3927090000;m_dCamera_kappa = 199;m_dCamera_phi = 17;PI = math.piimg2 = cv2.imread('/home/huu/Desktop/webwxgetmsgimg.jpeg')rtscap = RTSCapture.create('rtsp://admin:lingtan666@192.168.0.180:554/h264/ch1/main/av_stream')rtscap.start_read()k = 0while rtscap.isStarted():ok, frame = rtscap.read_latest_frame()if not ok:# print('not ok 11111111111111111111111111')if cv2.waitKey(100) & 0xFF == ord('q'): breakcontinuesave_img_path = '/data/drone_detect/keras-yolo3_original/8.13/test/'cv2_img_path = '/data/drone_detect/keras-yolo3_original/8.13/cv2_img/'i_str = str(k).zfill(6) + '.jpg'k += 1# RGB通道转换frame = cv2.cvtColor(frame,cv2.COLOR_RGB2BGR)# frame_crop = frame[799:1471,1566:2334,]# frame_crop = frame[800:1400,1300:2400,]# 简而言之,就是实现array到image的转换image = Image.fromarray(frame)# image = Image.open(cv2_img_path + i_str)a = datetime.now()r_image,person = yolo.detect_image(image, image_name = i_str)# print('person = ', person)if len(person) == 0 :img1 = cv2.cvtColor(np.asarray(r_image), cv2.COLOR_RGB2BGR)img1 = cv2.resize(img1, (960, 640))# img2 = cv2.imread('/home/huu/Desktop/webwxgetmsgimg.jpeg')hebin_img = np.hstack((img1, img2))cv2.namedWindow('1', cv2.WINDOW_NORMAL)cv2.imshow('1', hebin_img)cv2.waitKey(1)else:url = 'https://restapi.amap.com/v3/staticmap?zoom=17&size=960*640&markers=-1,'for j in range(len(person)):m_nPic_x = person[j][0]m_nPic_y = person[j][1]# print(m_nPic_x,m_nPic_y)C30 = (m_nPic_x - m_nScreenResolution_l / 2) * m_dScreenResolution_angle + m_dCamera_kappaC31 = m_dCamera_phi - ((m_nScreenResolution_h / 2) - m_nPic_y) * m_dScreenResolution_angleC32 = math.sqrt((pow(C30, 2) + pow(C31, 2)))C34 = math.atan(C31 / C30) + (PI * m_dPlane_omega / 180)C36 = C32 * math.sin(C34) * abs(C30) / C30C37 = C32 * math.cos(C34) * abs(C30) / C30 + m_dPlane_kappaC38 = C36 - m_dPlane_phiC39 = (m_dFixed_elevation - m_dTarget_elevation) / math.tan(PI * C38 / 180)C41 = C39 * math.sin(PI * C37 / 180)longitude = m_dFixed_longitude + C41 / 111000 / math.cos(PI * m_dFixed_latitude / 180)C40 = C39 * math.cos(PI * C37 / 180)latitude = m_dFixed_latitude + C40 / 111000# print(str(latitude)+','+str(longitude),C30,C31,C32,C34,C36,C37,C38,C40,C41)# fgps.write(cor.strip('\n').split(' ')[0] + ',' + str(longitude) + ',' + str(latitude) + '\n')if j != len(person) - 1:url += 'https://ico.ooopic.com/ajax/iconpng/?id=215808.png,0:' \+ str(longitude) + ',' + str(latitude) + '|-1,'continueelse:# print('进来了!!!')url += 'https://ico.ooopic.com/ajax/iconpng/?id=215808.png,0:' \+ str(longitude) + ',' + str(latitude) \+ '&key=d78d2093105d0cd246e8214d6b7ed34b'print('url = ', url)# 抓取网络资源f = urllib.request.urlopen(url)# print(f)# urlparse模块主要是把url拆分为6部分,并返回元组。result = urlparse(url)# print(result)# 将URL表示的网络对象复制到本地文件。如果URL指向本地文件,则对象将不会被复制,除非提供文件名。urllib.request.urlretrieve(url, "stmap1.jpg")# 用CV读图片img3 = cv2.imread('stmap1.jpg')img1 = cv2.cvtColor(np.asarray(r_image), cv2.COLOR_RGB2BGR)img1 = cv2.resize(img1, (960, 640))hebin_img = np.hstack((img1, img3))cv2.namedWindow('1',cv2.WINDOW_NORMAL)cv2.imshow('1', hebin_img)cv2.waitKey(1)# r_image.save(save_img_path + i_str)# 把pil格式转换成可以给cv2输出的格式# img = cv2.cvtColor(np.asarray(r_image), cv2.COLOR_RGB2BGR)# cv2.imshow('1', img)# cv2.waitKey(1)b = datetime.now()print("检测时间:", (b - a))# cv2.imshow('1',r_image)# cv2.waitKey(0)# r_image.save(save_img_path + i_str)# r_image.show()# show_image = cv2.imread(save_img_path + i_str)# cv2.imshow('1',r_image)# cv2.waitKey(1)# label = []# for i in range(len(person)):#     label.append(person[i][1])# for j in range(len(rubbish)):#     label.append(rubbish[j][1])# print(person,'1111111111111111111111')# print(rubbish,'2222222222222222222222')#instr = str(5).encode()#client.send(instr)FLAGS = Noneif __name__ == '__main__':# class YOLO defines the default value, so suppress any default hereparser = argparse.ArgumentParser(argument_default=argparse.SUPPRESS)'''Command line options'''parser.add_argument('--model', type=str,help='path to model weight file, default ' + YOLO.get_defaults("model_path"))parser.add_argument('--anchors', type=str,help='path to anchor definitions, default ' + YOLO.get_defaults("anchors_path"))parser.add_argument('--classes', type=str,help='path to class definitions, default ' + YOLO.get_defaults("classes_path"))parser.add_argument('--gpu_num', type=int,help='Number of GPU to use, default ' + str(YOLO.get_defaults("gpu_num")))parser.add_argument('--image', default=False, action="store_true",help='Image detection mode, will ignore all positional arguments')'''Command line positional arguments -- for video detection mode'''parser.add_argument("--input", nargs='?', type=str,required=False,default='./path2your_video',help = "Video input path")parser.add_argument("--output", nargs='?', type=str, default="",help = "[Optional] Video output path")# client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)# client.connect("/tmp/test.sock")FLAGS = parser.parse_args()if FLAGS.image:"""Image detection mode, disregard any remaining command line arguments"""print("Image detection mode")print("!!!!!!!!!!!!!!!!!!!!!!!!!!!!")if "input" in FLAGS:print(" Ignoring remaining command line arguments: " + FLAGS.input + "," + FLAGS.output)detect_img(YOLO(**vars(FLAGS)))elif "input" in FLAGS:detect_video(YOLO(**vars(FLAGS)), FLAGS.input, FLAGS.output)else:print("Must specify at least video_input_path.  See usage with --help.")

海康卫视摄像头yolo检测,转换gps,用高德api借口显示点相关推荐

  1. 海康卫视摄像头截图与展示

    由于后期维护做出了写修改,导致编译好的与源代码有所不一致,源代码程序是后期维护而成,若想修改可恢复成编译展示界面 1.编译好的程序,在配置文件配置ip再双击star.bat即可直接运行 1)配置文件: ...

  2. 华康卫视 摄像头接入 流媒体总结

    1.海康卫视摄像头接入 第一个问题,要不要用萤石云:小白,可以自行百度,萤石云: 萤石云,是收费的,一个账号,多个摄像头,测试还行,每次登陆,绑定手机号:需要验证: 而且,从信息安全角度而言,一些公司 ...

  3. 海康网络摄像头忘记密码_不要忘记网络性能

    海康网络摄像头忘记密码 Amazon released a famous statement in the late 2000s stating that every hundred millisec ...

  4. 多路海康网络摄像头数据实时回调(采用软解码方式)

    由于项目中需要访问多路海康摄像头的原始图像进行相关处理,搜索了大量的博客,对于多路海康摄像头回调都没有写的很清楚明白,看到此博客的你,静下心来研读下面的内容,你将会很容易调取多路海康网络摄像头. (1 ...

  5. 海康将摄像头传输过来的rtsp协议转换成rtmp

    本文转自:海康将摄像头传输过来的rtsp协议转换成rtmp 如何将rtsp协议转换成rtmp协议在线直播,其实没有方案.至少目前我还不知道有哪种方案可以实现,但是EasyDrawin这个开源的流媒体服 ...

  6. 海康网络摄像头实时视频预览(流媒体转码推流 red5,nginx-rtmp,ffmpeg)

    海康网络摄像头实时视频预览(流媒体转码推流 red5,nginx-rtmp,ffmpeg) 实现思路 获取摄像头rtsp流→流媒体拉流转码推流成rtmp流(网页具备flash可播放)→根据rtmp流地 ...

  7. [Rtsp]海康网络摄像头基于RTSP协议的windows平台监控

    [Rtsp]海康网络摄像头基于RTSP协议的windows平台监控 基于RTSP协议的windows平台监控. 1.  基于RTSP协议的windows平台监控. 1.1 选取海康网络摄像头(支持RT ...

  8. ubuntu 使用opencv 获取海康网络摄像头视频流

    1. 前言 之前在windows平台下使用opencv获取海康网络摄像头的视频流,但是不管怎么设置都无法登录摄像头,导致无法获取摄像头的视频流,但是换到ubuntu又正常了,主要是设置rtsp的格式, ...

  9. python调用海康相机进行Apriltag检测

    python调用海康相机进行Apriltag检测 第一章:win10下安装Apriltag库 1.安装Apriltag库 打开cmd输入 pip install pupil-apriltags 这个是 ...

  10. 对海康28181摄像头PS流解码的支持(一)

    背景 我们的项目是基于sip的IMS系统,需要添加对海康28181摄像头的支持,所以分为以下几步: 向海康摄像头发起点播请求,基于sip. PS流过来后,剥出h264流. 对h264流进行解码. 一. ...

最新文章

  1. 【图像修复】浅析:图像修复中的TV模型
  2. e0312 不存在用户定义的_VistaPro创建自定义变量
  3. 将 C++ 中的 goto 语句转化为非 goto 语句
  4. windowsCE异常和中断服务程序初探(=)
  5. win10死机频繁怎么解决
  6. 天气预报API接口 : 城市对应码(中国天气网)
  7. centos6重启网络命令_Docker常用命令详解
  8. python常用代码总结-python字典的常用方法总结
  9. 一个简单的定时任务小例子
  10. 神经网络预测地震加速度反应谱曲线,pytorch实现
  11. linux不显示无线网卡驱动安装失败,无线网卡在Linux下安装
  12. 协同编辑中使用的 OT 算法是什么?
  13. python实现最小二乘法进行线性拟合
  14. Javascript 8421
  15. MyBatis系列:mybatis用foreach循环添加多条数据!
  16. 百度APP-Android H5首屏优化实践
  17. AJAX框架衣柜内部结构,衣柜内部结构这样布局,解决你家 90% 的收纳难题
  18. 杰里之升级复位可以选择软复位跳转和绝对地址跳转【篇】
  19. Centos配置JAVA_HOME
  20. 阿里云S级新游上云最佳实践

热门文章

  1. UE4联机多人游戏基本设置
  2. rap开发与rcp开发_使用RAP将RCP应用程序转换为Web应用程序
  3. poj-3295 Tautology
  4. 原生JS写一个首字母排序的通讯录效果
  5. win7音量图标不见了怎么办
  6. ddd linux 调试工具_linux-c/c++调试利器gdb、ddd小试
  7. .Microsoft Visual Studio 2010 Service Pack 1
  8. 合同生效需要哪些要件
  9. 删除后别人的微信号变成wxid_腾讯开放微信号修改,一年一次,方法简单
  10. [BUUCTF]PWN——[BJDCTF 2nd]snake_dyn