日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

opencv,用摄像头识别贴片元件的定位和元件的角度(转载)

發布時間:2024/1/17 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opencv,用摄像头识别贴片元件的定位和元件的角度(转载) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

經過半個月學習opencv有點小成果,用攝像頭識別貼片元件的定位和元件的角度(轉載)

?(2013-04-17 16:00:22) 轉載
?分類:?學習筆記
先說一下
開源的opencv真是一件偉大的產品,
那么多個函數跟變量(具體多少還沒數過),要是結合起來綜合運用幾乎可以勝
任任何有關圖像識別和處理方面的工作。。如果能更深入一點根據具體需要修改或優
化里面的源碼那更是如虎添翼。。

花了點時間瀏覽了www.opencv.org.cn論壇里的所有貼子,還好不多才200多頁,
總體上對opencv里的一些常用函數功能作用大致有點了解,篩選一些跟元件識別有關的運用內容,但它論壇里的貼子回復的內容點到即止的居多。
從網上下載了能搜到的教程跟代碼全學習了解測試了一下
圖像處理流程通常先開始都是要進行濾波,除燥,灰度,二值化后再輪廓識別等。

開始動手
經過多次好多次運行測試組合,終于有一次顯示出意外的驚人效果,而且相當簡單只是調用了幾個函數而以,就可以有這樣效果實在出人意料


第一個是進行元件中心點獲取,也是直接調用函數再加點東西就可以得出元件的四個矩形頂點坐標,有這幾個坐標就可以直接算出元件中間點所在的坐標了,
如果要檢測元件擺放角度是否是垂直90度,只要判斷邊寬的長度為最小或最大時就是垂直90度。。。

(原文件名:1.jpg)

測試視頻地址: http://v.youku.com/v_show/id_XMjU5NzY5NTI0.html

但這個矩形框無法測出元件具體角度


不過,
又搜到
還有另外一個函數可以提供這個功能,調用后可以直接求出最小外接矩形和角度
如圖。。。


(原文件名:2.jpg)

測試視頻地址: http://v.youku.com/v_show/id_XMjYwMDMzMDc2.html



里面的光源不行,臨時用手電筒,和在光盤上插幾個LED做環形燈做照明 無法做到無陰影顯示,
如果光源做的好,效果應該是非常精確穩定。。

源代碼,等整理后再放上來。。希望熟悉opencv的人能提供更多一些使用經驗 我這里方法是這幾步
1.讀取圖像
2.調用cvCvtColor(src, gray, CV_BGR2GRAY);??把三通道彩色轉成單通常8位灰度圖像
3.調用smooth函數對灰度圖像進行濾波說白了就是把圖像變模糊,讓邊緣變光滑,這個好處理外形輪廓
4.把濾波后灰度值圖像再過濾成黑白二色圖像
4.調用輪廓識別函數cvFindContours是從二值圖像中直接檢索出所有輪廓
5.主要工作完成。。
剩下就是把圖畫出來

只要把圖像過濾成黑白二值后,下面就可以直接調用識別輪廓函數進行識別,前面幾步過濾的越好,識別出來的精度越高
我這個只用smooth函數對圖像進行模糊一下,其實前期除燥處理還有其它多種方法,跟組合方法

這里調用smooth濾波的效果是:比如未濾波前圖像清晰度很高,邊邊角角太過清晰分明,
這樣結果會使后面的黑白二值處理邊緣不平整,再調用輪廓識別函數找出來的輪廓就不精準


(原文件名:2.JPG)

經過適當濾波后這時邊緣平滑,二值化后就很平整,這樣最好識別,
但是濾波也不能太過頭,因為精準度會產生誤差,因為濾完后圖像跟原圖已經有所不同了


(原文件名:3.JPG)




所以操作步驟是:
光源最好越好越好,物體跟背景顏色反差大一點,像白色跟黑色
先調第1個滑塊給圖像適當濾波,然再再調第二個滑塊出現平滑邊緣,就可以比較準確的識別
更精準識別,圖像要越大越清晰,精準度越高,靠進攝像頭近一點,焦距調清晰一點,物體顯示大一點,這樣效果也相當好
但是這樣太考近對邊緣任棱角太多的物體就不好用,邊緣齒太多的物體還是放遠點模糊一點比較好。

opencv功能很強大,前期的預處理可以有多種方法做,這個還需要不斷的學習中。。
只要預處理做好了,變成二值圖后,后面就可以省心給輪廓識別函數去得出結果了。。


(原文件名:kk.jpg) ? ? 有關打不開攝像頭的問題: ? 這種情況估計是Opencv無法識別攝像頭驅動。。
得用跟硬件無關的DirectShow顯示方法
官網上有提供例子包含了DirectShow的CameraDS類,

下載這個附件運行里面的camerads.exe,看看你的電腦能不能顯示,里面有源碼
可以的話,就可以把CameraDS這個類改用到MFC上。 有關攝像頭校正問題:
鏡頭畸變可以通過事先拍一張網格圖來得到
---------------------------------------
用網格來標定是一種簡單的方法,但在高精度的情況下換是行不通的。
因為格與格的的插補就很復雜。如果算法不佳誤差絕對是大于一個像素以上。
經常會發現算出來的定位總是不理想。

當然用來貼電阻電容是沒問題,但用來貼IC問題可大了。

有關下面的進展:
是不是你的攝像頭速度慢?
我以前玩過打線機,我感覺用高速攝像頭加顯微鏡頭,給電機反饋位置,相當于閉環,應該可以做到那個精度的,或者先用低倍鏡頭的攝像頭給芯片粗定位,當芯片進入顯微鏡頭范圍內再用高倍攝像頭測位置,這時候差他幾個像素也沒問題。

測角度:
如果測算角度的話,用hough變換可以很快找到直線,然后算角度。
? 原載網址:http://www.amobbs.com/thread-4684408-1-1.html

轉載于:https://www.cnblogs.com/yuanhuang32/p/10825628.html

總結

以上是生活随笔為你收集整理的opencv,用摄像头识别贴片元件的定位和元件的角度(转载)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。