工業界計算機視覺公司演算法工程師日常工作用那種語言?不擅長 c++ 阻礙大么?
本人是中科院XX所即將找工作的計算機視覺方向博士生。在實驗室做演算法研究主要使用matlab,做項目主要使用c#。將來希望去工業界工作。想問的是公司裡邊計算機視覺演算法工程師主要的語言是什麼?不擅長c++障礙大么?期待各位前輩的解惑。
謝邀!
回復得晚了,抱歉啊。題主是中科院計算機視覺方面的博士,熟悉matlab,理論基礎紮實,很適合做演算法研究。其實在工業界,大廠(比如微軟)其實也應該有研究部門,不一定非要做視覺工程師吧。
我跟題主的情況剛好相反,一直在工業界做產品研發類的工作,剛好我自己最熟悉的就是C/C++和C#,還真是邀對人了,呵呵,自賣自誇一下哈。
一般而言,對於視覺演算法工程師來說,C/C++確實是最常用的,只是學習成本也是最高的,尤其是C++。可能我資質不高,我記得當年做了5年左右的C++項目才感覺略有小成,簡直是個無底洞,第7年左右的時候到達頂峰,然後因為插播了一個JAVA項目就中斷了,再後來,因為要開發視頻集成平台,主要用C#/.NET,有時候也用C/C++,做了好幾年。
那麼,樓主是否真的需要花那麼大精力去搞C++呢,我感覺也不一定,可以基於純C來寫。個人感覺,純C比C++的學習成本還是要低不少。有幾種情況:
1.題主所在的公司完全從頭寫演算法,那當然可以基於純C來寫。2.題主所在的公司基於開源來做演算法,其實也有幾種選擇,OPENCV目前主要是以C++為主,但也有很多純C的演算法庫,我感覺還不錯,比如 @劉留的那個libccv。 當然,這個選擇可能並不是題主所能左右的,但至少未必一定用C++,也可能是C與C++混合編程,題主也可能只做底層C那一部分。3.其實還有好幾個基於C#的演算法庫,比如opencvsharp,從功能映射上來說,還是做得很全的,但是從性能上來說,那隻能用C++了,畢竟優化的話還是得做底層。從以上分析可以得出結論:題主不見得非要學C++,但是,如果不學的話,面就會窄不少。怎麼感覺像廢話:)
如果我是僱主,我既不會讓題主做C#,也不會讓他學C/C++,我會讓他繼續做matlab,一方面,演算法上的創新更有意義,畢竟對公司來說,技術的差異化很重要,另一方面,國外開源的演算法代碼也有很多是matlab的,而且我發現,很多非常炫的視覺演算法,貌似只有matlab版本,可能對於研究者來說,這樣更方便,更容易發揮吧。
matlab不方便產品化?一般來說是,但其實也不是完全沒有解決辦法,matlab也是可以打包runtime運行的,我們要抓住矛盾的主要方面:對於最終用戶來說,最主要是看效果,至於硬體及操作系統等因素,一般來說,是第二位的。
還有一點,對於題主這樣的博士來說,做視覺演算法工程師,個人感覺好浪費。
補充一點:我個人理解,博士用matlab做研究工作,基本上屬於發明和設計演算法;而題主將要去做的工作,屬於實現演算法。角度是不一樣的,需要的能力也不太一樣。不了解題主的具體情況,就看你自己的優勢在哪裡了。僅供參考。
是這樣的,要看你中意的公司或者所在行業的語言比如,做工業視覺外觀檢測類的公司,一般產品更新換代快,所以java(以色列傲寶電子),c#(所有公司都有用)會比較流行,甚至還有用labview做的!而做一些有標準視覺解決方案,比如工業機器人視覺標定系統,就沒有具體的語言了,但是要有基本的演算法理論基礎。比如,別人用vc寫演算法,你得把坐標系變換的方程式給他,還有數據通信(乙太網,串口)方面的知識暫時只想到這麼多
找了半天,終於找到你的問題了。手機端不方便。下面為正文。
更新: 還好複製了一下,在手機上碼字不容易啊。。。
好了,說到阻礙,只要動手去學,就沒有阻礙。對於掌握了六國語言的你們(C C# m 等),多學一門只是時間問題。。Matlab果然佔據了國內各大高校,研究所的研究工具平台。Mathworks是應該高興的笑了,還是開心的哭了。。。因為大家安裝的都是從別人拷貝來的文件夾或者.zip .rar吧。(可能有些人耐心,網上到處都是,現在2016a了?不在乎那幾個G的文件)。等等,還有最重要的一步,,破解啊!!啪啪幾步,原價幾萬塊人民幣的正版文件已經在你的滑鼠滴滴下在你的硬碟里等待工作了!! 這些過程似乎和M公司沒有一點關係吼。。。
於是,Matlab編程開始搞起,咦?,偶然聽說師兄師姐面試回來,考的全是Java,Cpp,C夏普,Pathon等編程,怎麼木有我的大馬特來保,後來才知,是人家公司不用啊。。。
據鄙人所知(我也是一名研究狗),公司用的IDE大多有Eclipse,VS等,所以相對的編程語言就是以CPP為主,那麼為了找到好工作,必須會CPP編程啊。我現在就是用VS+OPENCV。說說我們在TI平台開發視覺產品用的編程語言,希望給研究生們有幫助
1.1. PC端Matlab演算法原型,驗證....1.2. PC端C/C++,主要是在驗證,也做少部分原型設計2. TI平台,C/C++,演算法實現和優化部分主要是C3. test. python,其他行業專業工具4. tools. python, C/C++, matlab, lua每種語言都有很專業的工程師,但是兼顧matlab, C/C++, python是很普遍的。
技不壓身,學學c++沒壞處。別被C++ primer, STL, template之類的東西嚇壞了。作為一個做視覺演算法的,大多數C++特性也就用個皮毛。學一學,就可以用起來了。一開始也不會把你當做一個專業的c++ coder來要求。
C++, OpenCV, PCL和ROS是入職前後要求自學的。Python沒要求自己偷懶用。後來自己選擇Eigen作為容器。僅供參考。
C++這種東西多寫些代碼不就熟了。
對你來說學C++難么?
不要緊,知乎千萬用戶里除了輪子哥沒人敢說精通C++。
你多擼幾萬行代碼估計C++你也學差不多了。。。。主要還是看你的編碼功底,只要你編程功底夠強Visual Basic HTML CSS C Cpp Java Matlab Python妥妥的快
推薦閱讀: