『壹』 機器視覺學什麼語言
機器視覺用什麼語言開發
目前可以開發機器視覺的相關計算機語言有C++,C#,JAVA,PYTHON等,甚至簡單的PHP和JAVASCRIPT也可以開發相關的功能。
機器視覺需要用到圖像處理庫,有很多免費且開源的第三方圖像庫可以用,如十分著名的OpenCV,有C++,JAVA,PYTHON的版本,它包含了很多現成的函數,可以處理圖像的形狀,顏色,大小,圖像文件保存,找相似圖像,物體邊緣(Cannyedge)演算法。
機器視覺的另一個方向是神經網路深度學習演算法。這裡面有代表性的是谷歌的TensorFlow,具有很強大的機器視覺能力。
文字識別方面的代表有谷歌的Tesseract,這也是開源項目。
機器視覺用什麼硬體
一個典型的機器視覺系統包括以下五大塊:
1.照明
照明是影響機器視覺系統輸入的重要因素,它直接影響輸入數據的質量和應用效果。由於沒有通用的機器視覺光源照明設備,所以針對每個特定的應用實例,要選擇相應的照明裝置,以達到最佳效果。光源可分為可見光和不可見光。常用的幾種可見光源是白幟燈、日光燈、水銀燈和鈉光燈。可見光的缺點是光能不能保持穩定。如何使光能在一定的程度上保持穩定,是實用化過程中急需要解決的問題。另一方面,環境光有可能影響圖像的質量,所以可採用加防護屏的方法來減少環境光的影響。照明系統按其照射方法可分為:背向照明、前向照明、結構光和頻閃光照明等。其中,背向照明是被測物放在光源和攝像機之間,它的優點是能獲得高對比度的圖像。前向照明是光源和攝像機位於被測物的同側,這種方式便於安裝。結構光照明是將光柵或線光源等投射到被測物上,根據它們產生的畸變,解調出被測物的三維信息。頻閃光照明是將高頻率的光脈沖照射到物體上,攝像機拍攝要求與光源同步。
2.工業鏡頭
FOV(FieldOfVision)=所需解析度*亞象素*相機尺寸/PRTM(零件測量公差比)鏡頭選擇應注意:①焦距②目標高度③影像高度④放大倍數⑤影像至目標的距離⑥中心點/節點⑦畸變
3.相機
按照不同標准可分為:標准解析度數字相機和模擬相機等。要根據不同的實際應用場合選不同的相機和高解析度相機:線掃描CCD和面陣CCD;單色相機和彩色相機。
4.圖像採集卡
圖像採集卡只是完整的機器視覺系統的一個部件,但是它扮演一個非常重要的角色。圖像採集卡直接決定了攝像頭的介面:黑白、彩色、模擬、數字等等。
比較典型的是PCI或AGP兼容的捕獲卡,可以將圖像迅速地傳送到計算機存儲器進行處理。有些採集卡有內置的多路開關。例如,可以連接8個不同的攝像機,然後告訴採集卡採用那一個相機抓拍到的信息。有些採集卡有內置的數字輸入以觸發採集卡進行捕捉,當採集卡抓拍圖像時數字輸出口就觸發閘門。
目前,千兆網口工業相機逐步成為主流,圖像採集卡一般採用視覺專用的千兆網卡。
5.視覺處理器
視覺處理器集採集卡與處理器於一體。以往計算機速度較慢時,採用視覺處理器加快視覺處理任務。現在由於採集卡可以快速傳輸圖像到存儲器,而且計算機也快多了,所以現在視覺處理器用的較少了。
更多精彩閱讀:
機器視覺是什麼意思_機器視覺應用案例
機器視覺的任務_機器視覺的基本工作過程是怎樣的
機器視覺自學需要學什麼_學機器視覺好找工作嗎
『貳』 機器視覺是用什麼軟體開發的
你可以用VISUAL STUDIO 和 JAVA的開發工具。
目前可以開發機器視覺的相關計算機語言有 C++, C#, JAVA, PYTHON 等, 甚至簡單的PHP和JAVASCRIPT也可以開發相關的功能。
機器視覺需要用到圖像處理庫,有很多免費且開源的第三方圖像庫可以用,如十分著名的OpenCV, 有C++,JAVA, PYTHON的版本, 它包含了很多 現成的函數,可以處理圖像的形狀,顏色,大小,圖像文件保存,找相似圖像,物體邊緣(Canny edge)演算法 。。。
機器視覺的另一個方向是神經網路深度學習演算法。這裡面有代表性的是谷歌的TensorFlow,具有很強大的機器視覺能力。
文字識別方面的代表有谷歌的 Tesseract, 這也是開源項目
『叄』 opencv是什麼
OpenCV是一個用於圖像處理、分析、機器視覺方面的開源函數庫. 無論你是做科學研究,還是商業應用,opencv都可以作為你理想的工具庫,因為,對於這兩者,它完全是免費的。 該庫採用C及C++語言編寫,可以在windows, linux, mac OSX系統上面運行。該庫的所有代碼都經過優化,計算效率很高,因為,它更專注於設計成為一種用於實時系統的開源庫。opencv採用C語言進行優化,而且,在多核機器上面,其運行速度會更快。它的一個目標是提供友好的機器視覺介面函數,從而使得復雜的機器視覺產品可以加速面世。該庫包含了橫跨工業產品檢測、醫學圖像處理、安防、用戶界面、攝像頭標定、三維成像、機器視覺等領域的超過500個介面函數。 同時,由於計算機視覺與機器學習密不可分,該庫也包含了比較常用的一些機器學習演算法。或許,很多人知道,圖像識別、機器視覺在安防領域有所應用。但,很少有人知道,在航拍圖片、街道圖片(例如google street view)中,要嚴重依賴於機器視覺的攝像頭標定、圖像融合等技術。 近年來,在入侵檢測、特定目標跟蹤、目標檢測、人臉檢測、人臉識別、人臉跟蹤等領域,opencv可謂大顯身手,而這些,僅僅是其應用的冰山一角。 如今,來自世界各地的各大公司、科研機構的研究人員,共同維護支持著opencv的開源庫開發。這些公司和機構包括:微軟,IBM,索尼、西門子、google、intel、斯坦福、MIT、CMU、劍橋。。。。
『肆』 機器視覺是什麼
機器視覺是人工智慧正在快速發展的一個分支。簡單說來,機器視覺就是用機器代替人眼來做測量和判斷。機器視覺系統是通過機器視覺產品將被攝取目標轉換成圖像信號,傳送給專用的圖像處理系統,得到被攝目標的形態信息,根據像素分布和亮度、顏色等信息,轉變成數字化信號;圖像系統對這些信號進行各種運算來抽取目標的特徵,進而根據判別的結果來控制現場的設備動作。
機器視覺是一項綜合技術,包括圖像處理、機械工程技術、控制、電光源照明、光學成像、感測器、模擬與數字視頻技術、計算機軟硬體技術(圖像增強和分析演算法、圖像卡、 I/O卡等)。一個典型的機器視覺應用系統包括圖像捕捉、光源系統、圖像數字化模塊、數字圖像處理模塊、智能判斷決策模塊和機械控制執行模塊。
機器視覺系統的特點是提高生產的柔性和自動化程度。在一些不適合於人工作業的危險工作環境或人工視覺難以滿足要求的場合,常用機器視覺來替代人工視覺;同時在大批量工業生產過程中,用人工視覺檢查產品質量效率低且精度不高,用機器視覺檢測方法可以大大提高生產效率和生產的自動化程度。而且機器視覺易於實現信息集成,是實現計算機集成製造的基礎技術。上圖便是機器視覺的一個典型應用。
『伍』 halcon和opencv哪個好用
1、開發語言對比
OpenCV開發語言是C++、C#(emgu)、Python、Ruby、MATLAB等語言;Halcon開發語言是C,C++,C#,Visual basic和Delphi等語言。
2、應用場合對比
OpenCV側重計算機視覺領域,側重研究領域;Halcon側重機器視覺領域,側重應用領域。
3、開放性及版本更新速度對比
OpenCV開源(可看底層源碼),版本和功能更新慢;Halcon商業軟體(底層代碼封裝),版本和功能更新快。
4、對使用者的門檻對比
OpenCV偏科研,有難度,有深度,完全從底層開發,對使用者門檻高,開發效率低,開發慢;Halcon偏工程應用,使用封裝好的功能函數,對使用者門檻低,開發效率高,開發快
5、資料及技術支持對比
OpenCV資料少。遇到問題,難以獲得技術支持;Halcon資料多。遇到問題,可以及時、有效地獲得技術支持。
『陸』 「opencv」是什麼
OpenCV是一個用於圖像處理、分析、機器視覺方面的開源函數庫.
無論你是做科學研究,還是商業應用,opencv都可以作為你理想的工具庫,因為,對於這兩者,它完全是免費的。
該庫採用C及C++語言編寫,可以在windows, linux, mac OSX系統上面運行。該庫的所有代碼都經過優化,計算效率很高,因為,它更專注於設計成為一種用於實時系統的開源庫。opencv採用C語言進行優化,而且,在多核機器上面,其運行速度會更快。它的一個目標是提供友好的機器視覺介面函數,從而使得復雜的機器視覺產品可以加速面世。該庫包含了橫跨工業產品檢測、醫學圖像處理、安防、用戶界面、攝像頭標定、三維成像、機器視覺等領域的超過500個介面函數。
同時,由於計算機視覺與機器學習密不可分,該庫也包含了比較常用的一些機器學習演算法。或許,很多人知道,圖像識別、機器視覺在安防領域有所應用。但,很少有人知道,在航拍圖片、街道圖片(例如google street view)中,要嚴重依賴於機器視覺的攝像頭標定、圖像融合等技術。
近年來,在入侵檢測、特定目標跟蹤、目標檢測、人臉檢測、人臉識別、人臉跟蹤等領域,opencv可謂大顯身手,而這些,僅僅是其應用的冰山一角。
如今,來自世界各地的各大公司、科研機構的研究人員,共同維護支持著opencv的開源庫開發。這些公司和機構包括:微軟,IBM,索尼、西門子、google、intel、斯坦福、MIT、CMU、劍橋。。。。
『柒』 急急急!!!基於OPENCV 的機器視覺:利用OPENCV實現圖片邊緣檢測並求兩條線間的距離。
你讀取每一行的像素值,黑色的像素值為0,白色的為255,從左向右讀取,當前一個像素為0,後一個像素為255時,則找到邊界,繼續讀取,當找到前一個像素為255,後一個像素為0時,則找到右邊界。每一行都按著這個過程,把左右邊界的點分別存儲,有了點根據兩點確定一條直線可以得到兩條白色斜線。 最下面一行的白色左邊緣點 與右邊緣點的差值即為間距。
『捌』 市面上有哪些比較不錯的機器視覺演算法
華漢偉業的機器視覺演算法是公認的實力派!華漢偉業的自研演算法優化採用了指令集、並行演算法等技術手段,並且與國際一流演算法開發包Halcon進行對比測試,演算法精度誤差小於10-4,速度與其相當,在國內傳統機器視覺領域,處於第一梯隊。目前國內視覺廠商多數處於應用層開發,使用國外演算法庫進行開發,缺少自己底層演算法開發和優化能力,華漢偉業演算法開發包可以實現國產替代,提升國內在視覺領域的基礎開發能力,目前已經在多個產線實現了落地批量應用,其功能、性能及穩定性得到驗證,並獲得客戶的高度認同。 不妨網路下
『玖』 機器視覺演算法有哪些
機器視覺演算法基本步驟;
1、圖像數據解碼
2、圖像特徵提取
3、識別圖像中目標。
機器視覺是人工智慧正在快速發展的一個分支。
簡單說來,機器視覺就是用機器代替人眼來做測量和判斷。
機器視覺系統是通過機器視覺產品(即圖像攝取裝置,分CMOS和CCD兩種)將被攝取目標轉換成圖像信號,傳送給專用的圖像處理系統,得到被攝目標的形態信息,根據像素分布和亮度、顏色等信息,轉變成數字化信號;圖像系統對這些信號進行各種運算來抽取目標的特徵,進而根據判別的結果來控制現場的設備動作。
現在做視覺檢測的公司比較多,國內國外都有,許多視覺算是很好的。
能提供完整的機器視覺軟體解決方案,也可以為客戶提供演算法級的定製,覆蓋所有的工業應用領域,適用范圍比較廣。機器視覺的應用會越來越多,因為計算的水平越來越高,可以處理更復雜的視覺演算法;其實好多的東西,包括現在流行的GPS,最早都是外國的公司在做,程序都是中國人在做外包;
光機電的應用我個人覺得已經很成熟了,不會再有新東西。
『拾』 EmguCV學習 與opencv的區別和聯系
openCV是因特爾的一個開源的視覺庫,裡面幾乎
包含了所有的圖像處理的經典演算法,並且採用C和少量的C++編寫,運行效率很高,對於做圖像處理這方面工作的,認識opencv是必須的工作。不過
opencv有個很大的不足,這在於它幾乎沒有提供gui這方面介面,很難滿足目前應用程序開發的需要,而萬惡的MFC框架醜陋的界面也成為了我的噩
夢,MFC與opencv和界面優化幾乎讓我在圖像處理這一塊兒無法動彈。
C#
是.net平台上的明星語言,可以很容易做出漂亮的界面。EmguCV是將opencv封裝的一個.net庫可以被VC++,VC#,VB.net調用。
網上對於EmguCV的介紹很少,不是因為它沒用,而是因為它的使用方法幾乎和opencv一摸一樣,opencv的資料完全可以直接用於EmguCV。
不過不少新手在使用EmguCV在使用幾次之後便放棄。這有以下幾個原因:
1.
輿論影響,很多人都說C#的運行效率低,採用C/C++,opencv是C和C++編寫的,理所當然應該在VC++中運行,圖像處理又是一個計算量很大的
工作,C#不行。C#運行效率肯定比C/C++差,但是採用混合編程的方法就可以啦,用C#的框架和運行機制,計算交給C就好啦。EmguCV很多處理函
數都是採用託管調用opencv。這個在EmguCV的安裝包里可以看到,裡面含有所有Opencv的dll。
2.
缺少資料,學習受挫而放棄(我放棄這個大概有半年)。不得不承認EmguCV方面的學習資料實在是太少啦。很多時候出現問題,在網上基本上找不到答案。而
且EmguCV前期版本對opencv封裝不全面,很多基本的函數沒有被封裝,使用起來很不方便,網上很多人以訛傳訛,編寫很困難。不過使用2.3版本就
沒有這個問題,opencv基本函數都得到了很好的封裝。opencv圖像處理的函數都封裝在cvInvoke中
而Image<>結構是連接opencv與emgucv的重要橋梁。其中C#的Intptr類型可以很好地傳遞IplImage*指針結構,下面我用一個實驗來驗證我的判斷。
創建一個winform工程,添加一個button和picturebox控制項
添加如下代碼
Capture cam;
private void btopen_Click(object sender, EventArgs e)
{
cam = new Capture();
Application.Idle += new EventHandler(processframe);
}
private void processframe(object sender, EventArgs arg)
{
Image<Bgr, Byte> frame = cam.QueryFrame();
Image<Gray,Byte> Ecanny=frame.Convert<Gray,Byte>();
CvInvoke.cvCanny(Ecanny.Ptr, Ecanny.Ptr, 50, 150, 3);
//cvCanny是opencv中常用的函數,原本的參數應該是IplImage*類型,這里使用Intpr代替,即Ecanny.ptr
pictureBox1.Image = Ecanny.Bitmap;
}
運行結果如下
當然如果只是簡單的canny演算法,使用EmguCV封裝的結構Image<>更加簡單,將代碼如下圖所示修改
運行結果如下圖所示
上述實驗表明,EmguCV可以很好地連接C#與opencv,能夠彌補opencv在gui這方面的不足,有利於機器視覺開發者得工作