opencvsharp瑕疵檢測(cè)的實(shí)現(xiàn)示例
功能演示
實(shí)現(xiàn)模板:
1.檢測(cè)這板件面的凹坑 ,并把這些凹坑繪制出來(lái)
2.界面上可以選擇,標(biāo)注面積大于指定值 的凹坑
測(cè)試圖像
面積小于10個(gè)像素凹坑標(biāo)注
面積小于40個(gè)像素凹坑標(biāo)注
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、編程環(huán)境
C#2015+opencvsharp4.0
二、使用步驟
1.程序邏輯
1.先將圖像高斯雙邊濾波 ;
代碼如下(示例):
Cv2.BilateralFilter(imageorg, gs, 0, 20, 5); //高斯雙邊模糊 //imageorg為源圖 Mat; //gs是濾波后 Mat;
高斯雙邊濾波后的圖像
2.圖像轉(zhuǎn)二值圖像
//先轉(zhuǎn)灰度圖像 Cv2.CvtColor(gs, image_gray,ColorConversionCodes.RGB2GRAY); //在轉(zhuǎn)二值圖像 Cv2.Threshold(image_gray, bin, 100, 255, ThresholdTypes.BinaryInv);
二值圖像
3.二值圖像輪廓發(fā)現(xiàn)
//發(fā)現(xiàn)輪廓 OpenCvSharp.Point[][] contours2; HierarchyIndex[] hierarchy2; Cv2.FindContours(bin, out contours2, out hierarchy2, RetrievalModes.External, ContourApproximationModes.ApproxNone);
4.根據(jù)界面的設(shè)置,繪制符合標(biāo)準(zhǔn)的輪廓
//繪制輪廓 for (int i = 0; i < contours2.Length; i++) { double size = Cv2.ArcLength(contours2[i], true); if(size > Double.Parse(textBox1.Text)) Cv2.DrawContours(imageorg, contours2,i, new Scalar(0, 0, 255), 3); }
5.顯示最終圖像
//顯示 Bitmap bitmap = BitmapConverter.ToBitmap(gs); pictureBox1.Image = bitmap; Cv2.ImWrite("12.jpg", imageorg);
三 、完整代碼演示
private void button6_Click(object sender, EventArgs e) { Mat imageorg = Cv2.ImRead("E:\\CS學(xué)習(xí)\\opencvsharp2\\opencvsharp2\\data9.jpg"); Mat image_gray = new Mat(); Mat gs = new Mat(); Mat bin=new Mat(); Cv2.BilateralFilter(imageorg, gs, 0, 20, 5); //高斯雙邊模糊 //圖紙轉(zhuǎn)換 Cv2.CvtColor(gs, image_gray,ColorConversionCodes.RGB2GRAY); Cv2.Threshold(image_gray, bin, 100, 255, ThresholdTypes.BinaryInv); //發(fā)現(xiàn)輪廓 OpenCvSharp.Point[][] contours2; HierarchyIndex[] hierarchy2; Cv2.FindContours(bin, out contours2, out hierarchy2, RetrievalModes.External, ContourApproximationModes.ApproxNone); //繪制指定輪廓 for (int i = 0; i < contours2.Length; i++) { double size = Cv2.ArcLength(contours2[i], true); if(size > Double.Parse(textBox1.Text)) Cv2.DrawContours(imageorg, contours2,i, new Scalar(0, 0, 255), 3); } //顯示 Bitmap bitmap = BitmapConverter.ToBitmap(imageorg); pictureBox1.Image = bitmap; Cv2.ImWrite("12.jpg", bin); }
到此這篇關(guān)于opencvsharp瑕疵檢測(cè)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)opencvsharp瑕疵檢測(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
優(yōu)雅又實(shí)用的C#代碼優(yōu)化技巧分享
這篇文章主要為大家整理了一些優(yōu)雅又實(shí)用的C#代碼優(yōu)化技巧,文中的示例代碼講解詳細(xì),對(duì)我們深入了解C#有一定的幫助,需要的可以參考一下2023-06-06C++通過(guò)Callback向C#傳遞數(shù)據(jù)的方法
下面小編就為大家分享一篇C++通過(guò)Callback向C#傳遞數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01C#中Array與ArrayList用法及轉(zhuǎn)換的方法
C#中Array與ArrayList用法及轉(zhuǎn)換的方法,需要的朋友可以參考一下2013-03-03C#調(diào)用??倒I(yè)相機(jī)SDK采集圖像并在Halcon窗口中顯示方式
這篇文章主要介紹了C#調(diào)用??倒I(yè)相機(jī)SDK采集圖像并在Halcon窗口中顯示方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02C#基于HttpWebRequest實(shí)現(xiàn)發(fā)送HTTP請(qǐng)求的方法分析
這篇文章主要介紹了C#基于HttpWebRequest實(shí)現(xiàn)發(fā)送HTTP請(qǐng)求的方法,結(jié)合實(shí)例形式分析了C#使用HttpWebRequest類與System.IO類實(shí)現(xiàn)發(fā)送HTTP請(qǐng)求相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-02-02C#應(yīng)用XML作為數(shù)據(jù)庫(kù)的快速開(kāi)發(fā)框架實(shí)現(xiàn)方法
這篇文章主要介紹了C#應(yīng)用XML作為數(shù)據(jù)庫(kù)的快速開(kāi)發(fā)框架實(shí)現(xiàn)方法,詳細(xì)介紹了將XML作為數(shù)據(jù)庫(kù)的C#桌面應(yīng)用開(kāi)發(fā)技巧,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12C#反射在實(shí)際應(yīng)用中的實(shí)例代碼
C#反射在實(shí)際應(yīng)用中的實(shí)例代碼,需要的朋友可以參考一下2013-03-03