1.VINS-Mono:原理深剖+白板从零手推公式+源码逐行精讲!线观
2.2021年最新科研学术海报Poster模板下载
3.海康大华等摄像头RTSP低延迟(小于500毫秒)网页播放完全解决方案!看视
4.pythonå¨çº¿ç½ç«(pythonç½ç«)
5.Gitea源码分析(一)
VINS-Mono:原理深剖+白板从零手推公式+源码逐行精讲!频源
自动驾驶领域在年呈现出快速发展的码线免费态势,各大创业公司纷纷宣布获得大额融资。视频1月日,源码无驱强制源码文远知行完成B轮3.1亿美元融资;1月日,线观滴滴获得3亿美元融资;2月8日,看视小马智行获得1亿美元C+轮融资;3月日,频源Momenta完成C轮总计5亿美元的码线免费融资;4月日,大疆创新推出智能驾驶业务品牌“大疆车载”,视频向汽车企业提供自动驾驶解决方案;4月日,源码小鹏汽车发布搭载激光雷达的线观智能汽车小鹏P5,成为全球第一款量产的看视激光雷达智能汽车;4月日,图森未来在美股上市,频源被称为“全球自动驾驶第一股”;4月日,华为和北汽合作实现上海城区通勤无干预自动驾驶,成为全球唯一城市通勤自动驾驶量产车。
在自动驾驶、无人机、增强现实、机器人导航等技术领域中,定位和建图(SLAM)发挥着至关重要的作用,而视觉惯性里程计(VIO)作为SLAM算法中的一个重要分支,其理论复杂度较高。对VIO的自助源码屋掌握能力将直接影响到SLAM从业者的专业水平。VINS-Mono是由香港科技大学飞行机器人实验室(沈邵劼团队)在年开源的知名单目VIO算法。该算法由第一作者秦通(华为天才少年)提出,并在年获得IEEE Transactions on Robotics期刊的最佳论文奖。VINS-Mono使用单目相机和惯性测量单元(IMU)实现了视觉和惯性联合状态估计,同时能够估计传感器外参、IMU零偏以及传感器时延,是一款经典且优秀的VIO框架。
VINS-Mono在室内、室外大尺度以及高速飞行的无人机场景中均表现出色。在手机AR应用中,该算法优于当前最先进的Google Tango效果。同时,VINS-Mono也是VINS-Fusion算法的基础,应用于汽车SLAM时同样展现出高精度和稳定性。
在自动驾驶、无人机、增强现实、机器人导航等领域的岗位中,掌握VINS-Mono算法成为了关键技能之一。为此,计算机视觉life团队推出了独家课程《VINS-Mono:原理深剖+白板从零手推公式+源码逐行精讲》。该课程通过详细的步骤解读、疑难问题解析、结合作者回复的issue理解,帮助学员深入掌握VINS-Mono背后的dylib提取源码原理。课程内容覆盖从基础理论到复杂公式的推导,通过白板从零开始手推公式的方式,使学员能够理解复杂公式的形成过程,从而真正掌握VINS-Mono的原理。课程价格根据购买时间调整,购买越晚价格越高。如有疑问,学员可加入QQ群()咨询,购买成功后会自动显示内部答疑群。
年最新科研学术海报Poster模板下载
最新科研学术海报Poster模板下载资源名称为“年最新科研学术海报Poster模板下载”,链接为xueshu.fun/。此模板资源可编辑,能帮你节省大量排版时间,内附制作教程。
学术Fun平台xueshu.fun持续更新,提供包括Udemy、Coursera等在线课堂的视频教程。视频内容涉及人工智能、机器学习、编程语言、游戏开发、网络安全、云计算、Linux运维、面试技巧等计算机学科全领域知识。laya源码事件
所有视频教程均提供中英双语字幕、配套练习源码及补充资料,确保学习效率与效果。欢迎访问xueshu.fun获取更多资源,提升专业技能。
海康大华等摄像头RTSP低延迟(小于毫秒)网页播放完全解决方案!
在浏览器中实现播放RTSP实时视频流,需要考虑多种方案以实现低延迟、低成本的多路稳定播放。首先,浏览器插件方案在IE及Chrome 以下版本的浏览器中是主流选择,使用ActiveX播放控件或NPAPI播放插件,可直接调用本地原生程序播放,充分利用硬件解码和硬件加速渲染,实现良好效果。VLC作为开源跨平台多媒体播放器,支持IE、Chrome及Firefox低版本浏览器插件,移动端兼容性也非常好。然而,此方案需要额外安装VLC客户端软件,并对某些场景不适用。
其次,先转码再转流方案需要架设视频流转码服务器,利用ffmpeg转码串流成RTMP,界上山源码然后前端使用VideoJS播放Adobe Flash Player。然而,基于Chromium内核的浏览器自年起全面取消了对Flash Player的支持,VideoJS因此失效。当前方案使用flv.js实现,要求服务端先把RTSP视频流转换为flv,然后通过Web Socket或WebRTC推送到前端,前端再转换为Video所支持的MP4播放。这种方案导致RTSP视频流需要经过两次转码,画面延迟时间大幅增加,且长期使用服务器端转码和转流对CPU、内存、网络带宽压力大,成本高,播放高分辨率视频流时经常出现花屏、卡顿现象。此方案要求浏览器支持流媒体扩展特性(MSE),无法利用本机硬件加速实现解码和渲染播放,适用于移动端网页播放。
第三,先转流再转码方案通过Streamedian公司的免插件播放器Html5 RTSP Player实现。此方案需要架设Web Socket视频流转发服务器,前端连接到服务器后,服务端不断转发RTSP视频流给前端JS处理库,后端库再转换为Video所支持的MP4播放。此方案不支持IE浏览器,画面延迟高达数秒,首屏显示慢,无法利用本机硬件加速,CPU占用高,播放时存在花屏、卡顿现象,体验差。此方案要求浏览器支持流媒体扩展特性(MSE),适用于单源播放,多路播放时服务器压力大,且兼容性较差,不适合作为商业用途。
扩展程序方案,如基于Chrome浏览器的PPAPI插件技术的VXG RTSP Player,不适用于IE、Firefox等浏览器,且谷歌已宣布将在年6月终止对NaCl、PNaCl和PPAPI API的支持,无讨论价值。双内核方案,如采用Chrome扩展程序IETab实现,存在大规模自主可控部署难问题,IE内核环境下播放控件控制困难,IE兼容性差,用户体验差,维护升级麻烦。
最后,Wasm方案采用Chrome等高版本浏览器支持的Wasm标准技术,实现RTSP视频流通过ffmpeg的Wasm版软解码为Video支持的MP4播放。Wasm不支持硬件解码,多路播放时终端电脑的CPU和内存占用高,性能差。此方案适用于需要支持H编码的场景,要求浏览器支持流媒体扩展特性(MSE),实际应用案例较少。
升级方案集中在实现不转码并充分利用终端电脑硬件加速特性的外接系统。这种系统需要在浏览器网页中实现一个内嵌到网页中的播放窗口,前端可控制播放窗口,并随浏览器窗口操作联动。播放窗口为本地原生程序,采用高性能C++语言开发,利用硬件加速,前端通过Web Socket连接播放窗口并发送JSON命令控制播放。市场上已有类似实现的软件,如猿大师中间件,提供全兼容性,包括低版本Chrome和IE浏览器,提供了类似ActiveX控件的安全机制。某视频监控大厂发布的版本采用QT框架,联动效果差,程序包大,未提供前端自动升级和安全调用机制。免插件方案中,外接程序的安全性可通过验证并开放源代码打消顾虑,部署和升级压力小,整体效果优于IE中的ActiveX控件。
综上所述,本文提供了一个稳定可靠、兼容性好、低延迟且可同时稳定播放多路RTSP的低成本半开源技术方案,特别适用于高分辨率RTSP播放。选择技术实施方案时,需考虑满足客户刚性需求、降低总成本、保证兼容性和稳定性,并确保技术方案不会因浏览器升级而失效。此方案适用于机场、地铁站、交管局等场景,实现低延迟、低成本的多路稳定播放。
pythonå¨çº¿ç½ç«(pythonç½ç«)
Pythonå¼åè¿åªäºç¥åç½ç«å游æï¼
è°·æï¼GoogleAppEngineããGoogleearthãè°·æç¬è«ãGoogle广åä¹ä¹æç项ç®é½å¨å¤§é使ç¨Pythonå¼å
CIAï¼ç¾å½ä¸æ å±ç½ç«å°±æ¯ç¨Pythonå¼åç
NASAï¼ç¾å½èªå¤©å±(NASA)大é使ç¨Pythonè¿è¡æ°æ®åæåè¿ç®ãç¾å½å®èªå±ä»å¹´èµ·æpythonä½ä¸ºä¸»è¦å¼åè¯è¨ã
YouTubeï¼ä¸çä¸æ大çè§é¢ç½ç«YouTubeå°±æ¯Pythonå¼åç
Dropboxï¼ç¾å½æ大çå¨çº¿äºåå¨ç½ç«ï¼å ¨é¨ç¨Pythonå®ç°ï¼æ¯å¤©ç½ç«å¤ç亿个æ件çä¸ä¼ åä¸è½½ã
Instagramï¼ç¾å½æ大çå¾çå享社交ç½ç«ï¼æ¯å¤©è¶ è¿3åå²æ©¡ä¸å¼ ç §ç被å享ï¼å ¨é¨ç¨Pythonå¼å
Facebookï¼å¤§éçåºç¡åºåéè¿Pythonå®ç°ç
Redhatï¼ä¸çä¸ææµè¡çLinuxåæ°çæ¬ä¸çyumå 管çå·¥å ·å°±æ¯ç¨é¡·è¡¡Pythonå¼åç
è±ç£ï¼å ¬å¸å ä¹ææçä¸å¡åæ¯éè¿Pythonå¼åç
ç¥ä¹ï¼å½å æ大çé®ç社åºï¼éè¿Pythonå¼å(Quora)
æ¥é¨å»çï¼å½å ç¥åçå¨çº¿å»çç½ç«æ¯ç¨Pythonå¼åç
é¤ä¸é¢ä¹å¤ï¼è¿ææçãéå±±ãè ¾è®¯ãç大ãç½æãç¾åº¦ãé¿éãæ·å®ãåè±ãæ°æµªãæ壳çå ¬å¸é½å¨ä½¿ç¨Pythonå®æåç§åæ ·çä»»å¡ã
æ±æ¯è¾å¥½çPythonç»ä¹ ç½ç«
éåPythonå ¥é¨é¥¥å å¦ä¹ ç5个ç½ç«
1.Pythonå®æ¹ç½ç«
ææå¨çPythonæç¨ã
2.èé¸æç¨Pythonæç¨
åºæ¬å ¥é¨çº§æç¨ï¼è¿æä¸äºç®åçè¿é¶çå³éæç¨ã
3.å»éªå³°çPythonæç¨
å»éªå³°èå¸ç²ççæç¨ç¸å½ä¸éï¼ç±æµ å ¥æ·±ï¼ç®æ¯è¿é¶æç¨ï¼ä¸æ¥æ¥æ·±å ¥ï¼åé¢è¿æä¾äºä¸ä¸ªå®ææç¨ã
4.Pythonä¸æå¦ä¹ 大æ¬è¥
è¿éæFlaskèµæå¤§å ¨ï¼å¦æä½ éè¦ï¼å¯ä»¥æ¾å°
ä½ æ³è¦çå ä¹æææç¨ã
5.github
å¸æ对å¨å¤§å¦éå¦ä¹ Python课ç¨çåå¦ï¼æè æ°æå¦ä¹ Pythonæä¾å¸®å©ã
å¦ä½ç¨Pythonæ建ä¸ä¸ªç½ç«ï¼Pythonæ建ç½ç«ï¼å©ç¨ç°æçæ¡æ¶è¿æ¯æºç®åçãå¨è¿æ»åé举ä¸ä¸ªä¾å-å©ç¨Flaskæ建ä¸ä¸ªç½ç«ã
Flask
Flaskæ¯ä¸ä¸ªä½¿ç¨Pythonç¼åçè½»é级Webåºç¨æ¡æ¶ãå ¶WSGIå·¥å ·ç®±éç¨Werkzeugï¼æ¨¡æ¿å¼æå使ç¨Jinja2ãFlaskå建ä¸ä¸ªåºç¨å¾ç®åï¼åªéè¦ä¸è¡ä»£ç å°±å¯ä»¥å建ä¸ä¸ªåºç¨ãä¸ä¸ªæå°çåºç¨çèµ·æ¥åè¿æ ·:
ç´æ¥æ§è¡pythonhello.pyï¼å°±å¯ä»¥çå°é¡µé¢å°±å¯ä»¥è®¿é®äºï¼è¿åªæ¯å®æ¹ç»åºçä¸ä¸ªç¤ºä¾ï¼æ¹ä¾¿å¦ä¹ ã
åºç¨åå§å
ææFlaskç¨åºé½å¿ é¡»å建ä¸ä¸ªç¨åºå®ä¾ãWebæå¡å¨ä½¿ç¨ä¸ç§å为Webæå¡å¨ç½å ³æ¥å£ï¼WebServerGatewayInterfaceï¼WSGIï¼çåè®®ï¼ææ¥æ¶èªå®¢æ·ç«¯çææ请æ±é½è½¬äº¤ç»è¿ä¸ªå¯¹è±¡å¤çãç¨åºå®ä¾æ¯Flaskç±»ç对象ï¼ç»å¸¸ä½¿ç¨ä¸è¿°ä»£ç å建ï¼
Flaskç±»çæé å½æ°åªæä¸ä¸ªå¿ é¡»æå®çåæ°ï¼å³ç¨åºä¸»æ¨¡åæå çååãå¨å¤§å¤æ°ç¨åºä¸ï¼Pythonç__name__åéå°±æ¯æéçå¼ã
è·¯ç±åè§å¾å½æ°
客æ·ç«¯ï¼ä¾å¦Webæµè§å¨ï¼æ请æ±åéç»Webæå¡å¨ï¼Webæå¡å¨åæ请æ±åéç»Flaskç¨åºå®ä¾ãç¨å¤ä½åºå®ä¾éè¦ç¥é对æ¯ä¸ªURL请æ±è¿è¡åªäºä»£ç ï¼æ以ä¿åäºä¸ä¸ªURLå°Pythonå½æ°çæ å°å ³ç³»ãå¤çURLåå½æ°ä¹é´å ³ç³»çç¨åºç§°ä¸ºè·¯ç±ãå¨Flaskç¨åºä¸å®ä¹ä»¿è®©æ»è·¯ç±çæç®ä¾¿æ¹å¼ï¼æ¯ä½¿ç¨ç¨åºå®ä¾æä¾çapp.route修饰å¨ï¼æ修饰çå½æ°æ³¨å为路ç±ãä¸é¢çä¾å说æäºå¦ä½ä½¿ç¨è¿ä¸ªä¿®é¥°å¨å£°æè·¯ç±ï¼
index()å½æ°æ³¨å为ç¨åºæ ¹å°åçå¤çç¨åºãå¦æé¨ç½²ç¨åºçæå¡å¨åå为ï¼å¨æµè§å¨ä¸è®¿é®p
å¯å¨æå¡å¨
ç¨åºå®ä¾ç¨runæ¹æ³å¯å¨Flaskéæçå¼åWebæå¡å¨ï¼
__name__=='__main__'æ¯Pythonçæ¯å¸¸ç¨æ³ï¼å¨è¿éç¡®ä¿ç´æ¥æ§è¡è¿ä¸ªèæ¬æ¶æå¯å¨å¼åWebæå¡å¨ãå¦æè¿ä¸ªèæ¬ç±å ¶ä»èæ¬å¼å ¥ï¼ç¨åºåå®ç¶çº§èæ¬ä¼å¯å¨ä¸åçæå¡å¨ï¼å æ¤ä¸ä¼æ§è¡app.run()ãæå¡å¨å¯å¨åï¼ä¼è¿å ¥è½®è¯¢ï¼çå¾ å¹¶å¤ç请æ±ã轮询ä¼ä¸ç´è¿è¡ï¼ç´å°ç¨åºåæ¢ï¼æ¯å¦æCtrl-Cé®ã
Flaskå¼åçç½ç«å®ä¾
æ¬ç¤ºä¾ä¸ç½ç«çç»æå¦ä¸
å¯å¨æå¡å¨çé¢
访é®WEB页é¢
æ´ä¸ªæ¯å©ç¨Flaskèªå·±æ建çä¸ä¸ªWEB页é¢ï¼æ°æ®åºè¯è¿mysqlåmongodbé½å¯ä»¥æ£å¸¸è®¿é®ãæ´ä½æè§Flaskçå¦ä¹ ææ¬ä¼æ¯Djangoä½ï¼èä¸ä¹æ¯Djangoæ´çµæ´»ã
pythonå¦ä¹ ç½ç«æ¨èï¼æ°æå ¥é¨1.Python.org
Pythonå®æ¹ç½ç«ãä½ å¯ä»¥ä»è¿éä¸è½½Pythonãéå¢ä½¿ç¨ãå¦ä¹ Pythonãå®æ¹ææ¡£èªç¶æ¯ææå¨çå¦ä¹ èµæï¼åªè¦ä½ è±ææ°´å¹³å¤ï¼å¦ä¹ èµ·æ¥åºè¯¥ä¸é¾ã
2.Pythonæç¨
Pythonæç¨ä»¥åä»¥å ¶ä¸ºä»£é¡·æ¸æ©è¡¨çä¸ç³»åä¸æPythonæç¨ãèèå°å¯è½é¨å人çè±ææ°´å¹³ä¼æ为é 读Pythonå®æ¹ææ¡£çéç¢ï¼æ以ä¸ææç¨ä¹æ¯å¿ é¡»çãç¸å¯¹äºå®æ¹ææ¡£ï¼è¿æ¹æç¨å¯è½æ´å éååå¦è ï¼ä¹æ¯è¾è½å¤å»ºç«ä½ç³»ã
3.StackOverflow
è±è¯ç«ç¹ï¼%çç¨åºåæ¥å¸¸å·¥ä½å°±æ¯ä»åæ°Googleå¤å¶ä»£ç ï¼å©ä¸ç%å°±æ¯ä»è¿ä¸ªç½ç«å¤å¶äºã
4.Django
以åå ¶ä»å¸¸ç¨çæææ¡æ¶çææ¡£ãä¸åçå¦ä¹ æ¹åä¼æä¸åçæ¡æ¶ï¼æ¯å¦tensorflowãFlaskãTornadoãRequestsãScrapyççã
5.CSDN
以CSDN为代表çä¸ä¼å½å å客ç«ï¼è¿æCTOãå¼æºä¸å½ãå客åççã
æ¨èå 个å¦ä¹ Pythonçå è´¹ç½ç«1ãPython@Coursera
è¿ä¸ªæ¸ æ©è¯¾ç¨æ¯ä¸ºä»æ¥æ²¡æ¥è§¦è¿ç¼ç¨ç人åå¤çãä½ åªéè¦å°å¦çæ°å¦æ°´å¹³å°±å¯ä»¥äºã
2ãIntrotoComputerScience@Udacity
Udacityæä¾äºä¸ä¸ªå¾æ£çå 费课ç¨ï¼å¼ä½ è¿å ¥Pythonç¼ç¨çæéåå¦ä¹ å ³äºæç´¢å¼æç许å¤ä¸è¥¿ï¼ä»¥åå¦ä½ç¼åä½ èªå·±çå°åç½ç»ç¬è«ã
3ãPythonspot
Pythonspotæ¯ä¸ä¸ªç»¼åæç¨ï¼ååäºå¾å¤ä¸åç±»å«çç¥è¯æ¿åï¼é¦å ä½ å°æ¥æåå¦è èµæºæ¥å¸®ä½ å¼å§è°¨éµPythonçå¦ä¹ ï¼ç¶åä½ ç»§ç»ä¿æåè¿ä½ è½å¦å°æ´å¤å ³äºä½¿ç¨Pythonå¼åwebçã
å¦ä½æ¾å°Pythonçå®æ¹ç½ç«ï¼ç¾åº¦æç´¢pythonï¼æå®æ¹æ å¿çå°±æ¯ã
å¦ä½æ¾å°Pythonçå®æ¹ç½ç«ï¼å¯ä»¥é 读ç¸å ³ä¹¦ç±ï¼ä¸è¿ï¼è¿ç±»åçé®é¢æ´ç´æ¥çæ¯ç´æ¥æç´¢ãä¸è±ææç´¢é½å¯ä»¥ï¼ç¾åº¦æç´¢å¯ä»¥ä½¿ç¨å ³é®è¯Pythonå®æ¹ç½ç«ï¼å¦ä¸å¾æ示å°å¯çï¼ç¬¬äºæ¡è®°å½å°±æ¯äºï¼è¦æ³¨æçæ¯ï¼å®æ¹ç½ç«æ¯å¸¦âå®æ¹âåæ ·çï¼è¿æ¯ç¾åº¦çä¿¡èªè®¤è¯ï¼è¯¦ç»æ åµå¯éè¿ç¾åº¦å®æ¹äºè§£ã
ç¸å ³æå±
Pythonç±è·å °æ°å¦å计ç®æºç§å¦ç 究å¦ä¼çGuidovanRossumäºå¹´ä»£å设计ï¼ä½ä¸ºä¸é¨å«ä½ABCè¯è¨çæ¿ä»£åãPythonæä¾äºé«æçé«çº§æ°æ®ç»æï¼è¿è½ç®åææå°é¢å对象ç¼ç¨ã
Python解汪桥éå¨æäºæ©å±ï¼å¯ä»¥ä½¿ç¨CæC++ï¼æè å ¶ä»å¯ä»¥éè¿Cè°ç¨çè¯è¨ï¼æ©å±æ°çåè½åæ°æ®ç±»åã?Pythonä¹å¯ç¨äºå¯å®å¶å软件ä¸çæ©å±ç¨åºè¯è¨ãPython丰å¯çæ ååºï¼æä¾äºéç¨äºå个主è¦ç³»ç»å¹³å°çæºç ææºå¨ç 没åã
å¹´æï¼è¯è¨æµè¡ææ°çç¼è¯å¨Tiobeå°Pythonå å为æå欢è¿çç¼ç¨è¯è¨ï¼å¹´æ¥é¦æ¬¡å°å ¶ç½®äºJavaãCåJavaScriptä¹ä¸ã
以ä¸å 容åèç¾åº¦ç¾ç§-Python
Gitea源码分析(一)
Gitea是一个基于Go编写的Git代码托管工具,源自于gogs项目,具有良好的后端框架和前端集成。
前端框架采用Fomantic UI和Vue,路由控制器框架在年4月从macaron切换到chi,形成了gitea项目的结构基础。
在调用接口时,gitea引入了'User','Repo','Org'等内容,简化了接口调用,便于管理。'ctx.User'和'ctx.Repo'内容动态变化,需要用户登录和进入仓库时赋值。
在'routers'下,'handler'相关文件分为'get'和'post'两类,前者涉及前端渲染,后者负责执行操作。
'get'请求通过'templates'中的文件渲染到前端,通过'ctx.Data["name"]'传递需要渲染的数据,获取URL参数使用'c.Query'。
'post'请求接收前端数据,通常通过'form'传值,从'context'生成,可以使用'form.xxx'直接调用,添加内容则需在'form'结构体中定义。
渲染生成网页使用'ctx.Html(,tplName)',根据'context'内容做条件判断。
权限管理功能实现中,数字越大权限越高,便于后续对比。'UnitType'包含多项,如仓库页面导航栏显示。检查权限时,对比AccessModeRead和模块权限,大于则认为具有读权限。
gitea默认运行于单一服务器,伸缩性有限。若需分布式改造,需解决大规模并发访问、存储库分片和数据库支撑等问题。通过ELB负载均衡分散到多个节点,数据库使用集群方案,但存储库分片面临巨大挑战,现有技术难以实现。
官方文档提供了其他开源库的介绍,包括配置文件、容器方式下的轻量仓库与CI使用方案等。深入研究可发现Gitea的配置、路由控制框架chi、权限管理实现及分布式架构改造思路。