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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c# opencv 轮廓检测_C#中OpenCVSharp实现轮廓检测

發布時間:2023/12/2 C# 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c# opencv 轮廓检测_C#中OpenCVSharp实现轮廓检测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OpenCv提供了函數 findContours()用于對物體輪廓進行檢測,該函數實現算法是由S.suzuki K.Abe于1985年發表的。OpenCVSharp封裝了這個函數,有2個參數(contours,hierarchy)要做特別的說明。

public static void FindContours(InputOutputArray image, out Point[][] contours,

out HierarchyIndex[] hierarchy, RetrievalModes mode,

ContourApproximationModes method, Point? offset = null);

解析:contours 的類型是Point[][],它相當于OpenCV中的Vector> contours,存儲多個輪廓,每個輪廓是由若干個點組成,可以在該函數前聲明Point[][] contours;,在C#中沒有賦值的變量在用的時候是不允許的,因為它是輸出的結果,可以不需要給它new空間,但必須在函數的參數中聲明是out;參數hierarchy為包含圖像拓撲結構的信息,它是HierarchyIndex[]類型,這是輸入的結果,同樣要在函數的參數中聲明為out。具體代碼如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using OpenCvSharp;

using OpenCvSharp.Extensions;

namespace OpenCvSharp_03

{

class Program

{

static void Main(string[] args)

{

Mat srcImage = Cv2.ImRead(@"D:\MyData\circle.jpg");

Mat dst_Image = MyFindContours(srcImage);

Cv2.ImShow("srcImage:", srcImage);

Cv2.ImShow("contours", dst_Image);

Cv2.WaitKey();

}

public static Mat MyFindContours(Mat srcImage)

{

//轉化為灰度圖

Mat src_gray = new Mat();

Cv2.CvtColor(srcImage, src_gray, ColorConversionCodes.RGB2GRAY);

//濾波

Cv2.Blur(src_gray, src_gray, new Size(3, 3));

//Canny邊緣檢測

Mat canny_Image = new Mat();

Cv2.Canny(src_gray, canny_Image, 100, 200);

//獲得輪廓

Point[][] contours;

HierarchyIndex[] hierarchly;

Cv2.FindContours(canny_Image,out contours,out hierarchly, RetrievalModes.Tree,ContourApproximationModes.ApproxSimple,new Point(0,0));

//將結果畫出并返回結果

Mat dst_Image = Mat.Zeros(canny_Image.Size(),srcImage.Type());

Random rnd = new Random();

for (int i = 0; i < contours.Length; i++)

{

Scalar color = new Scalar(rnd.Next(0,255),rnd.Next(0,255),rnd.Next(0,255));

Cv2.DrawContours(dst_Image, contours, i, color, 2,LineTypes.Link8, hierarchly);

}

return dst_Image;

}

}

}

我封裝好了MyFindContours()這個函數,方便大家調用進行測試

測試結果如下:

到此這篇關于C#中OpenCVSharp實現輪廓檢測的文章就介紹到這了,更多相關C# OpenCVSharp輪廓檢測內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

總結

以上是生活随笔為你收集整理的c# opencv 轮廓检测_C#中OpenCVSharp实现轮廓检测的全部內容,希望文章能夠幫你解決所遇到的問題。

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