精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

OpenCvSharp實戰:C#交通信號燈識別系統詳解

開發 前端
本文詳細介紹了如何使用OpenCvSharp在C#環境下實現交通信號燈識別系統。從基礎的環境搭建到完整的代碼實現,再到系統優化與常見問題解決方案,全面覆蓋了開發過程中的關鍵環節。

在智能交通系統領域,交通信號燈識別是一項基礎且關鍵的技術。借助OpenCvSharp庫,C#開發者可以快速構建高效準確的交通信號識別系統。本文將詳細介紹如何使用OpenCvSharp在C#環境下實現交通信號燈的自動識別,提供完整代碼示例和詳細注釋,助力開發者快速掌握這一技術。

OpenCvSharp簡介

OpenCvSharp是一個OpenCV的.NET封裝庫,它允許.NET開發者使用C#等語言調用OpenCV的強大功能。相比于其他封裝庫,OpenCvSharp具有以下優勢:

  • 接口設計符合C#風格,使用更加自然
  • 完整支持OpenCV的主要功能
  • 性能損耗小,接近原生C++版本
  • 文檔完善,社區活躍

環境搭建

安裝必要組件 

首先,我們需要通過NuGet包管理器安裝OpenCvSharp:

// 在Visual Studio中,通過NuGet包管理器安裝以下包:
// OpenCvSharp4
// OpenCvSharp4.runtime.win

或者在項目文件中添加:

<PackageReference Include="OpenCvSharp4" Version="4.7.0.20230115" />
<PackageReference Include="OpenCvSharp4.runtime.win" Version="4.7.0.20230115" />

交通信號燈識別原理

交通信號燈識別主要分為以下幾個步驟:

  1. 圖像預處理:調整大小、降噪、增強對比度
  2. 顏色空間轉換:從BGR轉到HSV顏色空間,便于顏色識別
  3. 顏色閾值分割:提取紅、黃、綠三種顏色區域
  4. 形狀識別:識別圓形區域,確定信號燈位置
  5. 結果分析:根據顏色和位置判斷信號燈狀態

完整代碼實現

下面是一個完整的交通信號燈識別系統的實現:

using OpenCvSharp;

namespace AppTrafficLight
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 圖像路徑  
            string imagePath = "traffic_light.jpg";

            // 讀取圖像  
            using (Mat src = Cv2.ImRead(imagePath))
            {
                if (src.Empty())
                {
                    Console.WriteLine("無法讀取圖像!");
                    return;
                }

                // 顯示原始圖像  
                using (new Window("原始圖像", src))
                {
                    // 調整圖像大小以加快處理速度  
                    Mat resized = new Mat();
                    Cv2.Resize(src, resized, new Size(0, 0), 0.5, 0.5);

                    // 進行高斯模糊以減少噪聲  
                    Mat blurred = new Mat();
                    Cv2.GaussianBlur(resized, blurred, new Size(5, 5), 0);

                    // 轉換到HSV顏色空間  
                    Mat hsv = new Mat();
                    Cv2.CvtColor(blurred, hsv, ColorConversionCodes.BGR2HSV);

                    // 定義紅、黃、綠三種顏色的HSV范圍  
                    // 注意:紅色在HSV中橫跨兩個區間,需要兩個范圍  

                    // 紅色范圍1(0-10)  
                    Scalar redLower1 = new Scalar(0, 100, 100);
                    Scalar redUpper1 = new Scalar(10, 255, 255);

                    // 紅色范圍2(160-180)  
                    Scalar redLower2 = new Scalar(160, 100, 100);
                    Scalar redUpper2 = new Scalar(180, 255, 255);

                    // 黃色范圍  
                    Scalar yellowLower = new Scalar(15, 100, 100);
                    Scalar yellowUpper = new Scalar(30, 255, 255);

                    // 綠色范圍  
                    Scalar greenLower = new Scalar(75, 50, 50);
                    Scalar greenUpper = new Scalar(95, 255, 255);

                    // 創建掩碼  
                    Mat redMask1 = new Mat();
                    Mat redMask2 = new Mat();
                    Mat redMask = new Mat();
                    Mat yellowMask = new Mat();
                    Mat greenMask = new Mat();

                    // 應用閾值,提取各個顏色區域  
                    Cv2.InRange(hsv, redLower1, redUpper1, redMask1);
                    Cv2.InRange(hsv, redLower2, redUpper2, redMask2);
                    Cv2.BitwiseOr(redMask1, redMask2, redMask); // 合并兩個紅色區間  
                    Cv2.InRange(hsv, yellowLower, yellowUpper, yellowMask);
                    Cv2.InRange(hsv, greenLower, greenUpper, greenMask);

                    // 顯示各顏色掩碼  
                    using (new Window("紅色掩碼", redMask))
                    using (new Window("黃色掩碼", yellowMask))
                    using (new Window("綠色掩碼", greenMask))
                    {
                        // 對每個掩碼應用形態學操作以去除噪聲  
                        Mat kernel = Cv2.GetStructuringElement(MorphShapes.Ellipse, new Size(5, 5));

                        Cv2.MorphologyEx(redMask, redMask, MorphTypes.Open, kernel);
                        Cv2.MorphologyEx(yellowMask, yellowMask, MorphTypes.Open, kernel);
                        Cv2.MorphologyEx(greenMask, greenMask, MorphTypes.Open, kernel);

                        // 尋找輪廓  
                        Point[][] redContours, yellowContours, greenContours;
                        HierarchyIndex[] redHierarchy, yellowHierarchy, greenHierarchy;

                        Cv2.FindContours(redMask, out redContours, out redHierarchy, RetrievalModes.External, ContourApproximationModes.ApproxSimple);
                        Cv2.FindContours(yellowMask, out yellowContours, out yellowHierarchy, RetrievalModes.External, ContourApproximationModes.ApproxSimple);
                        Cv2.FindContours(greenMask, out greenContours, out greenHierarchy, RetrievalModes.External, ContourApproximationModes.ApproxSimple);

                        // 創建結果圖像  
                        Mat result = resized.Clone();

                        // 處理并繪制紅色信號  
                        ProcessContours(result, redContours, "Red", new Scalar(0, 0, 255));

                        // 處理并繪制黃色信號  
                        ProcessContours(result, yellowContours, "Yellow", new Scalar(0, 255, 255));

                        // 處理并繪制綠色信號  
                        ProcessContours(result, greenContours, "Green", new Scalar(0, 255, 0));

                        // 顯示結果  
                        using (new Window("識別結果", result))
                        {
                            Cv2.WaitKey(0);
                        }
                    }
                }
            }
        }

        /// <summary>  
        /// 處理輪廓并繪制識別結果  
        /// </summary>  
        /// <param name="image">要繪制的圖像</param>  
        /// <param name="contours">輪廓數組</param>  
        /// <param name="label">標簽文本</param>  
        /// <param name="color">繪制顏色</param>  
        static void ProcessContours(Mat image, Point[][] contours, string label, Scalar color)
        {
            foreach (var contour in contours)
            {
                // 計算輪廓面積  
                double area = Cv2.ContourArea(contour);

                bool isValidArea = false;
                isValidArea = area > 3000;

                // 忽略小面積噪點  
                if (!isValidArea) continue;

                // 獲取最小外接圓  
                Point2f center;
                float radius;
                Cv2.MinEnclosingCircle(contour, out center, out radius);

                // 計算輪廓矩  
                Moments moments = Cv2.Moments(contour);

                // 計算輪廓中心點  
                int cx = (int)(moments.M10 / moments.M00);
                int cy = (int)(moments.M01 / moments.M00);

                // 如果輪廓接近圓形  
                double circleArea = Math.PI * radius * radius;
                double areaRatio = area / circleArea;

                if (areaRatio > 0.6) // 如果面積比超過60%,認為是圓形  
                {
                    // 繪制圓和中心點  
                    Cv2.Circle(image, (int)center.X, (int)center.Y, (int)radius, color, 2);
                    Cv2.Circle(image, cx, cy, 5, new Scalar(255, 255, 255), -1);

                    // 繪制標簽  
                    Cv2.PutText(image, label, new Point(cx - 20, cy - 20),
                                HersheyFonts.HersheySimplex, 0.5, color, 2);

                    // 輸出信息  
                    Console.WriteLine($"檢測到{label}: 位置({cx},{cy}), 半徑: {radius}, 面積: {area}");
                }
            }
        }
    }
}

總結

本文詳細介紹了如何使用OpenCvSharp在C#環境下實現交通信號燈識別系統。從基礎的環境搭建到完整的代碼實現,再到系統優化與常見問題解決方案,全面覆蓋了開發過程中的關鍵環節。通過這套系統,開發者可以快速構建出準確可靠的交通信號識別應用,為智能交通系統、自動駕駛等領域提供基礎支持。

責任編輯:武曉燕 來源: 技術老小子
相關推薦

2017-04-12 13:31:58

智能紅綠燈邁阿密交通

2021-06-01 09:39:58

智能交通物聯網IOT

2020-06-10 07:59:44

漏洞攻擊黑客

2020-07-08 15:15:03

AndoridGoogle交通信號燈

2021-10-09 13:55:24

谷歌交通信號燈人工智能

2020-12-24 10:09:19

人工智能AI智能交通

2021-04-09 10:50:22

人工智能AI智能交通

2021-03-23 15:01:09

鴻蒙HarmonyOS應用開發

2025-10-27 01:11:00

雪崩TimeoutRetry

2014-06-10 10:47:37

2023-09-11 12:36:56

研究數據

2023-06-29 14:43:32

2017-09-11 20:15:28

智慧交通視頻監控云平臺

2024-03-18 09:54:32

開源AI模型

2009-01-18 09:31:00

網絡故障網卡信號燈

2023-08-15 14:31:46

2009-08-25 17:24:55

C#串口通信程序

2018-06-26 10:12:41

華為
點贊
收藏

51CTO技術棧公眾號

狠狠97人人婷婷五月| 91精品久久久久久久久久久久久 | 国产视频久久| 亚洲美女性视频| 日本熟妇人妻中出| www在线免费观看视频| 国产高清成人在线| 欧美一区第一页| 国产人与禽zoz0性伦| 国产aⅴ精品一区二区四区| 一级做a爱片久久| 裸模一区二区三区免费| 中文在线字幕av| 午夜久久tv| 亚洲欧美在线免费| 亚洲精品第三页| 国产嫩草在线视频| 国产性色一区二区| 都市激情久久久久久久久久久| 亚洲免费激情视频| 欧美日中文字幕| 精品国产伦理网| 欧美自拍小视频| 日本大片在线播放| 日本一区二区免费在线| 不卡一卡2卡3卡4卡精品在| 久久久久久少妇| 亚洲91视频| 亚洲视频在线观看网站| 99热超碰在线| 日韩成人一区| 欧美日韩国产黄| 自拍偷拍亚洲色图欧美| 嫩草精品影院| 成人一区二区三区| 成人欧美一区二区三区在线湿哒哒| 麻豆changesxxx国产| 欧美精品尤物在线观看| 亚洲国产精品一区二区久| 亚洲黄色小视频在线观看| 成入视频在线观看| 亚洲精品成a人| 一区在线电影| www.亚洲.com| 91蝌蚪国产九色| 国产精品久久国产精品| 国产毛片久久久久| 六月婷婷色综合| 日韩免费中文字幕| 欧美精品亚洲精品日韩精品| 午夜精品久久| 美日韩精品免费视频| 成年人视频软件| 精品久久电影| 亚洲午夜精品久久久久久性色| 亚洲一区二区三区四区av| 午夜视频一区二区在线观看| 7777精品伊人久久久大香线蕉 | 色美美综合视频| 成 年 人 黄 色 大 片大 全| 50度灰在线| 亚洲欧美日本韩国| 在线观看日韩羞羞视频| 91露出在线| 中文字幕精品一区二区精品绿巨人| 美女一区视频| 精品视频二区| 久久精品夜色噜噜亚洲a∨| 国产午夜精品在线| 无码精品视频一区二区三区| 成人污污视频在线观看| 国产九色精品| 亚洲av成人无码网天堂| 91欧美一区二区| 欧美激情一区二区三区在线视频| 日本又骚又刺激的视频在线观看| 91亚洲精品久久久蜜桃网站| 精品国产一区二区三| 日韩一区二区三区中文字幕| 久久日韩精品一区二区五区| 日本精品一区二区| 成人高潮成人免费观看| 国产精品萝li| 日本在线视频www色| 美女尤物在线视频| 日韩欧美在线播放| 国产v亚洲v天堂无码久久久| 国产精品xxx| 欧美精品色一区二区三区| 欧美熟妇另类久久久久久多毛| 91精品啪在线观看国产手机| 日韩高清中文字幕| 亚洲国产日韩一区无码精品久久久| 欧美一级精品| 毛片精品免费在线观看| 国产亚洲精品久久久久久打不开| 国产精品久久久久久模特| 日本国产欧美一区二区三区| 91久久精品无码一区二区| 国产精品1区2区3区在线观看| 国产伦精品一区二区三区四区视频| 欧美日韩国产亚洲沙发| 亚洲视频一二三区| 欧美一级视频在线播放| 欧美18av| 欧美一区二区黄| 日本xxxx裸体xxxx| 欧美韩日高清| 97色在线观看| 国产又粗又猛又黄| 成人免费视频一区| 亚洲最新在线| 激情国产在线| 欧美美女网站色| 人妻无码中文久久久久专区| 国产精品国内免费一区二区三区| 久久久久久久国产精品| 中文字幕 人妻熟女| 成人自拍视频在线| 亚洲人成影视在线观看| 日本高清在线观看视频| 在线观看一区不卡| 岛国av免费观看| 99re66热这里只有精品8| 国内成人精品视频| 6—12呦国产精品| 久久这里只精品最新地址| 午夜久久久久久久久久久| 在线精品亚洲欧美日韩国产| 欧美电视剧在线看免费| 亚洲 欧美 国产 另类| 久久亚洲电影| 国产在线一区二区三区播放| 成年人黄视频在线观看| 欧美视频日韩视频在线观看| 欧美一级片黄色| 欧美在线日韩| 国产精品免费在线免费| 久久精品国产亚洲a∨麻豆| 亚洲一区二区免费视频| www.久久久久久久久久久| 精品国产一区二区三区久久久蜜臀| 欧美激情亚洲国产| 国产三级小视频| 国产精品国产三级国产aⅴ中文 | 国产免费一区二区| 手机在线免费观看av| 欧美日韩精品欧美日韩精品一| 国产精品亚洲无码| 母乳一区在线观看| 久久国产精品一区二区三区四区| 18video性欧美19sex高清| 日韩美女视频在线| 天天看片中文字幕| 精品一区二区免费在线观看| 一本一道久久久a久久久精品91| 欧美韩国亚洲| 国产亚洲欧美日韩美女| 欧美一级淫片免费视频黄| 久久亚洲一区二区三区四区| 大伊香蕉精品视频在线| 北条麻妃在线一区二区免费播放| 欧美成人精品激情在线观看| 999免费视频| 一区二区免费在线播放| 亚洲午夜久久久久久久久| 亚洲欧洲日本mm| 乱一区二区三区在线播放| 欧洲一级精品| 久久精品视频在线播放| 性生交大片免费看女人按摩| 亚洲电影一级黄| 搡老熟女老女人一区二区| 首页亚洲欧美制服丝腿| 一区二区三区的久久的视频| 99re8精品视频在线观看| 欧美精品一区二区三区国产精品| 老熟妇高潮一区二区高清视频| 精品福利在线看| 欧美大波大乳巨大乳| 毛片av一区二区三区| 一级特黄妇女高潮| 欧美激情极品| 国产男人精品视频| 美女精品视频| 国产亚洲视频在线| 99久久精品免费看国产交换| 亚洲国产精品久久不卡毛片| 精品人妻少妇嫩草av无码| 免费成人av在线| 亚洲中文字幕无码一区二区三区 | 美国一区二区三区在线播放| 免费成人进口网站| 风间由美一区二区av101| 欧美黑人巨大精品一区二区| 亚洲av永久无码国产精品久久 | 强乱中文字幕av一区乱码| 国产成人a级片| aa在线观看视频| 国产日韩欧美一区二区三区| 国产一区二区在线播放| 影音先锋男人在线资源| 亚洲成人网在线| 国产极品在线播放| 国产激情综合| av日韩在线网站| 成年人网站免费视频| 巨人精品**| 国产热re99久久6国产精品| 1区2区在线观看| 亚洲韩国日本中文字幕| 啪啪小视频网站| 亚洲二区在线视频| 久久久久久国产免费a片| 国产在线麻豆精品观看| 青青青青草视频| 外国成人免费视频| 精品久久久久久中文字幕动漫 | 欧美深夜福利视频| 日韩夫妻性生活xx| 都市激情久久久久久久久久久| 色偷偷色偷偷色偷偷在线视频| 最新中文字幕亚洲| 国产xxxx孕妇| 欧美日韩在线不卡| 日韩欧美性视频| 国产精品久久久久国产精品日日| 1314成人网| 看国产成人h片视频| 男女激情无遮挡| 91高清一区| 国产精品亚洲综合| 奇米一区二区| 国产精品久久久久高潮| 1区2区3区在线视频| 亚洲深夜福利视频| 日韩美女一级视频| 精品国精品自拍自在线| 懂色av蜜臀av粉嫩av喷吹| 午夜婷婷国产麻豆精品| 久草福利资源在线观看| 国产精品另类一区| 欧美性xxxx图片| 国产剧情一区在线| 一区二区三区国产好的精华液| 奶水喷射视频一区| 国产乱子伦精品无码专区| 国产精品一区高清| 久久久久久久久一区| 国产精品对白久久久久粗| 91九色偷拍| 国产精品一级在线观看| 国产精品影片在线观看| 主播大秀视频在线观看一区二区| 91国内免费在线视频| 成人av影院在线观看| 777777777亚洲妇女| 欧美videosex性欧美黑吊| 北条麻妃在线一区二区| 国产主播福利在线| 国产午夜精品视频| 国内在线精品| 亚洲欧美日韩高清| 国产精品一二三区视频| 日韩av在线直播| 日韩一级片免费| 精品国产凹凸成av人导航| 日本高清视频网站| 亚洲国产高清福利视频| 成人午夜免费福利| 精品免费国产二区三区| 少妇荡乳情欲办公室456视频| 欧美xxxx在线观看| 精品乱子伦一区二区| 亚洲成av人片在线观看香蕉| 性欧美8khd高清极品| 精品欧美一区二区久久| 欧洲成人一区二区三区| 精品无人区太爽高潮在线播放 | 高清不卡亚洲| 国产成+人+综合+亚洲欧洲| 88xx成人永久免费观看| 国产精品免费看久久久香蕉| 精品国产乱码久久久久久樱花| 91欧美日韩一区| 欧美国产亚洲精品| 国产亚洲欧美一区二区| 一道在线中文一区二区三区| 日本一区二区三区在线视频 | 免费看黄色av| 国产精品九色蝌蚪自拍| 国产黄在线免费观看| 亚洲午夜精品17c| 无码视频一区二区三区| 欧美午夜免费电影| 国产视频在线免费观看| 日韩精品一区在线观看| 青春草在线观看| 综合欧美国产视频二区| av在线免费网址| 日韩免费精品视频| 天堂久久一区| 国产精品区一区| 欧美日韩亚洲在线观看| 可以在线看黄的网站| 亚洲福利精品| 一区二区三区免费播放| 不卡区在线中文字幕| 日本高清黄色片| 亚洲一区视频在线观看视频| 欧美一级做a爰片免费视频| 制服丝袜成人动漫| 神马午夜电影一区二区三区在线观看| 日韩久久精品成人| 污污网站在线看| 国产成人精品视频在线观看| av日韩一区| 日韩不卡av| 欧美视频官网| 日韩精品一区中文字幕| 成人免费毛片嘿嘿连载视频| 国产一区二区三区精品在线| 亚洲永久精品大片| 日本天堂网在线| 精品国产污污免费网站入口| 国产精品久久久久久久龚玥菲| 九九久久精品一区| 亚洲伦理网站| 蜜桃av噜噜一区二区三| 综合激情网站| 天天干天天爽天天射| 91影院在线观看| 玖玖爱免费视频| 666欧美在线视频| 黄色av免费在线观看| 久久久久久久电影一区| www.久久热| 日韩理论片在线观看| 国产精品五区| 一个人看的视频www| 国产精品免费久久久久| 一级黄色在线观看| 亚洲高清免费观看高清完整版| 国产精品扒开做爽爽爽的视频 | 97se综合| 国产精品日本一区二区| 国产精品国产三级国产在线观看| jizz18女人| 国产色婷婷亚洲99精品小说| 日韩三级视频在线| 精品国产乱码久久久久久蜜臀| 精品国产99久久久久久| 国产精品免费久久久久影院| 欧美oldwomenvideos| 天天爱天天操天天干| 99热99精品| 欧美国产成人精品一区二区三区| 亚洲精品一区二区精华| 日韩激情av| 国产精品国产亚洲精品看不卡15 | 日本熟女一区二区| 欧美哺乳videos| heyzo中文字幕在线| 亚洲一区二区久久久久久久| 久久麻豆精品| 三上悠亚 电影| 一区二区三区精品久久久| 国产成人精品白浆久久69| 欧美极品欧美精品欧美视频 | 中文在线播放一区二区| 在线a免费观看| 亚洲国产成人va在线观看天堂| 99久久精品国产一区二区成人| 欧美xxxx做受欧美| 国产一区二区| 99久热在线精品视频| 国产精品一区二区免费不卡| 日本亚洲欧美在线| 日韩成人在线免费观看| 色资源二区在线视频| 视频一区二区三区在线观看| 麻豆极品一区二区三区| 内射毛片内射国产夫妻| 欧美mv日韩mv亚洲| 国产黄色大片在线观看| 国产欧美日韩在线播放| 日韩精品电影在线观看| 天堂资源在线视频| 91麻豆精品久久久久蜜臀 | 久久久精品中文字幕麻豆发布| 国产精品欧美综合| 精品国产一区二区三区久久狼黑人 | 欧美爱爱视频网站| 紧缚奴在线一区二区三区| 国产主播在线观看| 亚洲欧美激情另类校园| 亚洲人成777| 婷婷无套内射影院| 久久久99久久| 国产极品999|