摘要:視覺組接觸的軟件進行視覺開發會用到各種各樣的軟件開發環境輔助工具等,所以很有必要了解一些相關的快捷鍵命令使用技巧。沒有這樣保姆級的,并不存在一款能夠自動為你生成的軟件。一款錄制屏幕的軟件。
--NeoZng【neozng1@hnu.edu.cn】
進行視覺開發會用到各種各樣的軟件、開發環境、輔助工具等,所以很有必要了解一些相關的快捷鍵、命令、使用技巧。選擇一款適合自己的IDE能夠提高開發效率,方便版本管理。
為什么使用Ubuntu?
Ubuntu是一個Debian系分支的第一大系統,是用戶量最大的linux發行版。因此,遇到任何問題一般都能夠在用戶社區askubuntu中得到解答。它的安裝也非常的方便,并且在更新到20.04后,ubuntu的桌面美觀性也有提升。同時,ROS是在Ubutnu之下開發的。如果要使用ROS,Ubuntu是你的不二之選。
ubuntu的21.04已經發布了
Linux的內核和系統比Windows更加精簡,故在運行時占用的各類資源都要小于Windows。在不打開任何應用的情況下,筆者的電腦在運行Windows10時占用的內存為4.2G,cpu占用率在10-20%左右,而運行Ubuntu20.04LTS的時候,只使用了2.2G的內存,cpu占用率只有10%不到。這樣,在運行我們的視覺算法程序時,可以更充分地利用系統資源,最大程度壓榨電腦的性能。(甚至可以在測試結束后實際運行時關閉圖形界面,只保留終端!這樣,系統內核作為唯一需要運行的基礎程序,大概能將cpu占用率縮小到1-2%)
Linux對于深度學習的支持比Widnows更加友好,經常有sh腳本能夠一鍵配置開發環境。此外Linux對一些設備驅動的支持也更完善,我們可以選擇掛載自己需要的驅動和IO,并且精簡屬于自己的內核。
想要安裝Ubutnu,可以參閱這篇教程:Ubutnu的安裝-排除各種問題!-NeoZng
提到Linux就不得不提到命令行的使用,在Linux上進行開發常會使用到命令行,有些軟件甚至只有命令行界面的版本。在一些時候,直接在命令行中用鍵盤操作可能要比數不清的鼠標點擊快得多。你需要學習:
cd、ls 、pwd、mv、cp、touch、diff、rm、cat、mkdir、rmdir、echo、tar等文件系統的基本操作,grep、find 查找文件和目錄
幫助手冊man和-help參數。
sudo、su、chmod等權限相關的操作。
ping、ifconfig、wget等網絡相關的操作。
一定要親手熟悉命令行的基本命令,切忌只看不動手!學習以上命令,戳這里Linux Commands.
至少掌握一個無GUI的文本編輯器的基本使用,如vi,vim,nano等。這能夠幫助你在系統出現問題的時候快速修改一些配置文件,或是在使用ssh連接的時候簡單地編寫一些程序。當然,筆者不推薦你將這些文本編輯器作為主力IDE使用(即使是安裝了各種各樣的插件!)例如,雖然一個熟練使用vim的程序員和一個熟練使用eclipse的程序員擁有相同的開發效率,但是vim的學習成本可不知道比eclipse高多少!
Linux的設計哲學是“一切皆文件”。它將所有的IO設備如網絡接口、usb接口、顯示屏、相機、鍵盤鼠標、應用都視為文件,和這些“文件”的交互就是以規定的方式進行讀寫。因此,有必要了解Linux的基本目錄,目錄結構請參考:Linux文件目錄結構一覽表
在使用系統的時候,建議大家有良好的文件分類習慣,把代碼庫、軟件、開發環境分開存放,避免出現home目錄亂糟糟的情況。
?這篇文章就是在Ubutnu下使用markdown編輯器完成的
?
想要編寫代碼,光靠文本編輯器+gcc+gdb可不行,我們要充分利用技術進步帶來的便利,誰不喜歡做懶人呢。這里推薦幾款Linux下編寫C++程序使用的IDE:
VSCode:微軟的小兒子,啥系統都能用。豐富的插件生態只有你想不到沒有你找不到,配置完之后使用起來非常方便,比如C++就有一個C++ extensions pack,關鍵是好看啊!在使用了snippets和Visual Sutdio Intellicode這兩個插件之后,智能提示也很智能。想要寫其他的語言也能夠一條龍配齊,總之,上手容易且可定制化程度極高。
Qt:Qt也是一款跨平臺的C/C++ IDE,在Qt上編寫的GUI程序能夠在所有平臺上運行。用Qt可以方便地編寫一些圖形化的程序,比如串口調試助手、調參助手等。他的整體界面也算是比較清爽。
這里需要特別提及的是CMakeLists的編寫。Linux沒有Visual Studio這樣保姆級的IDE,并不存在一款能夠自動為你生成makefile的軟件。所以至少要學習qmake和cmake中的一種工具。這里推薦cmake,雖然比qmake的語法稍微復雜一些,但是cmake的功能非常強大,擁有非常優良的跨平臺支持。學習cmake還能幫助你進一步了解程序的編譯、鏈接過程。關于程序是怎么從源代碼到機器代碼最后在電腦上運行起來和cmake的基本使用,請參考《程序的生前死后-Cmake-noob-in》-NeoZng這篇文章。
雖然IDE把工具鏈都集成在了一起,極大地方便了我們的使用,筆者還是推薦你學習一下GNU工具鏈的使用,至少熟悉編譯、匯編、鏈接的過程。這樣可以更深入的了解軟件的運行,以便在開發過程中出現問題的時候,快速定位問題所在并找到解決方法。
團隊協作開發需要一款優秀的代碼管理工具,那Git就是不二之選,大家肯定都聽過GitHub這個最大的同性交友平臺,它便是一個基于Git的代碼托管平臺。這里有個小故事,Git是Linux的元老Linus因為Linux社區被禁止使用BitKeepter這款版本控制軟件后,一怒之下在一周之內用C寫出來的程序哦。
我們實驗室開始的時候都是用u盤拷貝程序,有時候在某個人的電腦上寫一點有時候又在minipc上寫一點,雖然在文件夾上標準了時間和版本號,然而這并沒有什么用,這導致一次合并代碼的時候有十多個版本的代碼,根本不知道哪個能用哪個不能用,那時候又還不知道diff這個工具,弄得眼睛都快無了。
要學習Git,推薦這幾個網站:廖雪峰的git教程 git簡易指南-no deep shits! GitHub Guides
在學習Git的時候,一定要動手跟著一起實踐,切忌光看不動!
?
git的標志性圖標,分岔的icon表示強大的分支功能
?
Microsofot Edge DEV for Linux :Edge瀏覽器Linux版,可以方便同步windows下的收藏夾、設置、插件等。集錦的功能非常好用。
SimpleScreenRecorder :一款錄制屏幕的軟件。
qv4l2:linux下相機驅動的圖形界面,在Ubuntu軟件商店可以找到,方便調節相機參數。
Meld:一款diff軟件的圖形界面,方便對比文件的不同,在Git使用merge或pull的時候可能會用上,在Ubuntu軟件商店可以找到。
Fsearch:和Windows下的everything類似,提供超快速的文件搜索功能。
Typora:好看好用的markdown編輯器,本文就是使用typora編寫的。使用markdown編寫代碼的說明文檔是一個很好的習慣,這可以降低其他人閱讀你編寫的代碼的難度,也有利于代碼分享和代碼的傳承。同時,你的也可以使用markdown來記錄自己的學習歷程、一次艱難的問題解決之路。使用markdown可以提高你的記錄效率。vscode內也有相關插件提供對markdown支持。
TigerVNC:一款局域網內可用的遠程桌面軟件,VNCViewer也可以作為替代。強烈推薦使用遠程桌面調車!電控都有無線調試器,我們怎么能跪在地上呢(氣抖冷)。在把運算平臺安裝到機器人上之后,我也曾經拿著一塊小屏幕和鍵鼠,蹲在地上和機器人進行親密交流,這不僅加深了我和機器人的感情,也加重了我的頸椎病和腰椎鍵盤突出。(最恐怖的是車車的云臺或者底盤瘋了的時候,線全部纏到機器人上!!機器人甚至有可能對你造成傷害!!都是電控的鍋,你云臺怎么又瘋了)使用了vnc后,只要將minipc和你的筆記本連接到同一個局域網,你就可以優雅地拿著筆記本調車了。如果校園網的帶寬不夠,建議買一個路由器,或者和搭建裁判系統的路由器公用也可以。
上交的同學更是把這件事做到了極致,他們直接通過網頁來修改機器人的各種參數并得到反饋信息,能做到不需要任何遠程桌面就能實時調參,此想法以為妙絕!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/121755.html
摘要:十開放模式識別項目開放模式識別項目,致力于開發出一套包含圖像處理計算機視覺自然語言處理模式識別機器學習和相關領域算法的函數庫。 一、開源生物特征識別庫 OpenBROpenBR 是一個用來從照片中識別人臉的工具。還支持推算性別與年齡。使用方法:$ br -algorithm FaceRecognition -compare me.jpg you.jpg二、計算機視覺庫 OpenCVOpenC...
摘要:本文由網易跨境電商部產品經理曹宏授權發表。根據交易鏈路的環節,分工可以進一步簡單細化為商詳頁產品導購頁產品,購物車產品,訂單產品,支付產品。那么購物車的產品都在做什么為了避免假大空,就以購物車改版這個項目介紹一下電商購物車產品的工作。 本文由網易跨境電商部產品經理曹宏授權發表。 作為電商交易鏈路的產品,很多人會問,你們都在做什么? 關于電商產品的工作分類,從流量角度我簡單分為以下幾類(...
摘要:但無論是用于何種用途,這些圖像都需要進行處理。圖像處理中的常見任務包括顯示圖像,基本操作如裁剪翻轉旋轉等,圖像分割,分類和特征提取,圖像恢復和圖像識別。圖像處理系統有時被稱為圖像處理的瑞士軍刀。 showImg(https://segmentfault.com/img/remote/1460000019631626); 原文標題:10 Python image manipulation...
摘要:與繪制順序密切相關的概念是層疊上下文。把正常也算上的話,現在網頁里可用的混合模式一共種。因此,正片疊底是一個變暗的混合模式。需要注意的是,其中這個位于最下層的背景該元素無背景色,它的混合模式其實是沒有作用的,可以認為就是默認值。 圖層 在Photoshop等圖像編輯軟件里,圖層是最基礎的概念之一。我們平時看一張照片,就可能想到遠處的背景、近處的人物這樣的描述,這其實就是在劃分圖層。多個...
閱讀 1625·2021-10-25 09:46
閱讀 3208·2021-10-08 10:04
閱讀 2353·2021-09-06 15:00
閱讀 2766·2021-08-19 10:57
閱讀 2075·2019-08-30 11:03
閱讀 968·2019-08-30 11:00
閱讀 2368·2019-08-26 17:10
閱讀 3543·2019-08-26 13:36