色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

OpenCvSharp4.1例程實(shí)戰(zhàn):Mat、Canny與視頻鏈路調(diào)參排錯(cuò)

OpenCvSharp4.1例程實(shí)戰(zhàn):Mat、Canny與視頻鏈路調(diào)參排錯(cuò) 簡(jiǎn)介面向 C# 開(kāi)發(fā)者的 OpenCvSharp4.1 官方例程合集適合已具備一定 .NET 基礎(chǔ)、希望對(duì)照官方示例學(xué)習(xí) OpenCV 4.1 圖像處理與計(jì)算機(jī)視覺(jué) API 的讀者。包內(nèi)共 176 個(gè)文件以 60 個(gè) cs 源碼和少量 vb 示例為主體輔以 jpg、png、bmp 等示例圖像、mp4 演示視頻、項(xiàng)目配置、解決方案及 prototxt 等模型描述文件壓縮包約 37.25MB目錄按示例與工程文件組織便于檢索和直接運(yùn)行調(diào)試。已有 13192 人學(xué)習(xí)下載說(shuō)明其在 C# 視覺(jué)入門(mén)與示例查閱場(chǎng)景中具有一定參考價(jià)值。讀者可從中獲得圖像讀寫(xiě)、二值化處理等基礎(chǔ)案例的完整工程結(jié)構(gòu)對(duì)照源碼理解 OpenCvSharp 的調(diào)用方式、參數(shù)設(shè)置與常見(jiàn)排錯(cuò)思路也可將其作為課程實(shí)驗(yàn)、項(xiàng)目原型或自有應(yīng)用的起步模板。1. OpenCvSharp4.1 例程包到底裝了什么先跑通再拆原理拿到 OpenCvSharp4.1 官方例程的第一晚我建議先別動(dòng)代碼原樣跑一遍比讀十頁(yè)文檔管用。它是 OpenCV 4.1 的 C# 封裝配套示例集合覆蓋 Mat 讀寫(xiě)與像素訪問(wèn)、色彩空間轉(zhuǎn)換、濾波與邊緣檢測(cè)、輪廓分析、攝像頭取流和視頻寫(xiě)出再往外一圈是 WinForms/WPF 的顯示封裝。適合兩類(lèi)人想把手上 Python 視覺(jué)腳本遷到 C# 桌面端的開(kāi)發(fā)者以及需要在 .NET 項(xiàng)目里嵌圖像處理、又不想自己寫(xiě) P/Invoke 的工程師。下面按「跑通—拆解—調(diào)參—排錯(cuò)」的順序把拆包時(shí)的判斷和參數(shù)選擇寫(xiě)清楚能照著復(fù)現(xiàn)。2. 環(huán)境搭起來(lái)四個(gè)包的職責(zé)邊界與第一個(gè)出圖的 Mat 程序例程包本身不帶運(yùn)行環(huán)境能不能跑起來(lái)幾乎全看 NuGet 引用對(duì)不對(duì)。這一章先把包結(jié)構(gòu)講清楚再建一個(gè)最小工程驗(yàn)證鏈路通不通最后講 Mat 的內(nèi)存模型——這塊不清楚后面所有例程都會(huì)以內(nèi)存暴漲的形式還回來(lái)。2.1 四個(gè)包的職責(zé)邊界與常見(jiàn)引錯(cuò)OpenCvSharp 的包拆得很細(xì)職責(zé)基本是這樣的包名作用缺了它會(huì)怎樣OpenCvSharp4托管層 APIMat、Cv2、VideoCapture 等編譯期就報(bào)找不到類(lèi)型OpenCvSharp4.runtime.win原生 OpenCvSharpExtern.dll 與 ffmpeg 視頻解碼庫(kù)編譯能過(guò)運(yùn)行時(shí) DllNotFoundExceptionOpenCvSharp4.ExtensionsMat 與 System.Drawing.Bitmap 互轉(zhuǎn)WinForms 顯示這一環(huán)斷掉OpenCvSharp4.WpfExtensionsMat 與 WPF BitmapSource 互轉(zhuǎn)WPF 下拿不到 WriteableBitmap關(guān)鍵點(diǎn)在于版本對(duì)齊托管包和 runtime 包必須是同一個(gè) 4.1 分支版本。C# 側(cè)調(diào)用的導(dǎo)出函數(shù)簽名跟著托管包走原生 OpenCvSharpExtern.dll 的導(dǎo)出表跟著 runtime 包走兩者錯(cuò)位最典型的癥狀是EntryPointNotFoundException而且報(bào)錯(cuò)信息指向一個(gè)看起來(lái)毫不相干的函數(shù)名第一次遇上會(huì)以為是包壞了。另一個(gè)硬約束是位數(shù)。原生 dll 分 x86 和 x64進(jìn)程位數(shù)必須一致。C# 工程默認(rèn)是 AnyCPU在 64 位系統(tǒng)上跑成 64 位進(jìn)程但一旦勾了「首選 32 位」進(jìn)程變成 32 位加載 x64 的 dll 直接失敗。我一般做法是顯式把 PlatformTarget 釘死成 x64不給運(yùn)行時(shí)留選擇余地。2.2 從零建工程三條命令加一個(gè) csproj用命令行建工程最快避免在 IDE 里點(diǎn)來(lái)點(diǎn)去點(diǎn)到某個(gè)默認(rèn)選項(xiàng)上。# 建一個(gè)控制臺(tái)工程名字隨便起 dotnet new console -n MatDemo cd MatDemo # 托管包與原生運(yùn)行庫(kù)包版本都跟 4.1 分支對(duì)齊 dotnet add package OpenCvSharp4 -v 4.1.* dotnet add package OpenCvSharp4.runtime.win -v 4.1.*版本號(hào)這里用4.1.*浮動(dòng)寫(xiě)法具體補(bǔ)丁號(hào)以包管理器里 4.1 分支實(shí)際的最新版為準(zhǔn)不要跨大版本混裝。工程文件里再補(bǔ)一行平臺(tái)目標(biāo)Project SdkMicrosoft.NET.Sdk PropertyGroup OutputTypeExe/OutputType TargetFrameworknetcoreapp3.1/TargetFramework PlatformTargetx64/PlatformTarget !-- 釘死位數(shù)避免 AnyCPU 在 32 位上翻車(chē) -- AllowUnsafeBlockstrue/AllowUnsafeBlocks !-- 例程里有指針遍歷像素的寫(xiě)法 -- /PropertyGroup /ProjectAllowUnsafeBlocks不是必須但例程里訪問(wèn)像素有幾個(gè)地方用的是Mat.DataPointer加unsafe指針先開(kāi)著能省一次重編譯。目標(biāo)框架方面4.1 這一代在 .NET Framework 4.6.1 以上和 .NET Core 3.x 上都能跑桌面端拿 WinForms/WPF 做殼的選前者也行邏輯基本不用改。2.3 第一個(gè)能出圖的程序Mat 從讀到顯示不要一上來(lái)就跑最復(fù)雜的那個(gè)例程先用二十行代碼確認(rèn)讀圖、處理、顯示、保存四條通路都通。using OpenCvSharp; // 讀圖flags 決定通道數(shù)Color 是 3 通道 BGR using var src Cv2.ImRead(sample.jpg, ImreadModes.Color); if (src.Empty()) { // 路徑錯(cuò)、文件損壞、編碼不受支持都會(huì)走到這里提前退出比后面崩在 CvtColor 里好排查 Console.WriteLine(讀圖失敗檢查路徑或換個(gè)格式); return; } // 灰度與邊緣中間結(jié)果都放在獨(dú)立的 Mat 里方便單獨(dú)保存查看 using var gray new Mat(); Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY); using var edges new Mat(); Cv2.Canny(gray, edges, 50, 150); // 顯示窗口名不要用中文部分平臺(tái)的 highgui 對(duì)寬字符支持不一致 Cv2.ImShow(src, src); Cv2.ImShow(edges, edges); Cv2.WaitKey(0); // 0 表示無(wú)限等待按鍵阻塞在這一行直到窗口有輸入 Cv2.DestroyAllWindows(); // 不調(diào)用的話后續(xù)循環(huán)里 ImShow 會(huì)不停新建窗口幾個(gè)參數(shù)值得記一下ImreadModes.Color強(qiáng)制三通道即使原圖是灰度或帶 alpha 也會(huì)被轉(zhuǎn)成 3 通道Canny的三個(gè)參數(shù)分別是輸入、輸出和兩個(gè)閾值后文會(huì)專(zhuān)門(mén)講怎么定這兩個(gè)數(shù)WaitKey(0)返回按鍵碼傳 0 是無(wú)限等傳 1 就是等 1 毫秒視頻播放循環(huán)里必須傳非零值這一點(diǎn)后面還會(huì)碰到。這段代碼能跑通說(shuō)明托管包、原生 dll、highgui 三條鏈路都在位。跑不通的話問(wèn)題基本就落在第 5 章那幾條上。2.4 Mat 的內(nèi)存模型為什么到處都在 usingMat 對(duì)象本身在托管堆上像素?cái)?shù)據(jù)在非托管內(nèi)存里靠引用計(jì)數(shù)管理。GC 只管得到那個(gè)殼管不到像素緩沖區(qū)所以Dispose必須顯式調(diào)用using寫(xiě)法是最省心的方式。更麻煩的是 Mat 支持視圖從一個(gè) Mat 上切一塊 ROI新 Mat 和原 Mat 共享同一片像素內(nèi)存。using var src Cv2.ImRead(sample.jpg, ImreadModes.Color); // 這個(gè) Mat 只是視圖不拷貝像素指向 src 內(nèi)部的一塊區(qū)域 using var roi new Mat(src, new Rect(100, 100, 200, 200)); // Clone 才是真正申請(qǐng)新內(nèi)存、復(fù)制像素 using var copy roi.Clone(); roi.SetTo(Scalar.All(0)); // src 上的對(duì)應(yīng)區(qū)域一起變黑 // copy 不受影響搞不清這一點(diǎn)常見(jiàn)后果是「我明明只改了縮略圖原圖也花了」。判斷方法很簡(jiǎn)單構(gòu)造函數(shù)帶new Rect(...)或者new Range(...)的那種多半是視圖帶.Clone()、.CopyTo()的才是獨(dú)立內(nèi)存。寫(xiě)循環(huán)處理時(shí)視圖的好處是省內(nèi)存壞處是生命周期互相牽連——視圖還沒(méi)釋放原 Mat 的引用計(jì)數(shù)就降不到零那片內(nèi)存就一直掛著。至于例程目錄怎么讀我的習(xí)慣是按依賴(lài)關(guān)系從簡(jiǎn)到繁來(lái)而不是按字母序典型分組覆蓋內(nèi)容建議順序基礎(chǔ)圖像ImRead/ImWrite、像素訪問(wèn)、Mat 運(yùn)算第一圖像處理色彩空間、閾值、濾波、形態(tài)學(xué)、邊緣第二輪廓與幾何FindContours、包圍盒、多邊形擬合第三視頻與攝像頭VideoCapture、VideoWriter、幀循環(huán)第四界面與顯示W(wǎng)inForms/WPF 控件綁定、縮放與刷新第五檢測(cè)類(lèi)級(jí)聯(lián)分類(lèi)器、DNN 推理加載最后包內(nèi)實(shí)際目錄可能略有出入但依賴(lài)關(guān)系不會(huì)變。先把基礎(chǔ)圖像那組跑完能省掉后面大量「到底是 API 用錯(cuò)還是環(huán)境沒(méi)通」的反復(fù)猜。3. 例程逐類(lèi)拆解ImRead、CvtColor、Canny、FindContours 的參數(shù)怎么定這一章是例程包里最值錢(qián)的部分也是大多數(shù)人跑完就跳過(guò)、后面寫(xiě)業(yè)務(wù)代碼時(shí)又回頭翻的部分。圖像處理的參數(shù)沒(méi)有萬(wàn)能值但每一個(gè)都有可以量化的定法下面按調(diào)用鏈順序講。3.1 讀寫(xiě)與色彩空間通道順序和 HSV 的取值范圍OpenCV 的默認(rèn)通道順序是 BGR不是 RGB。C# 里從 Bitmap 轉(zhuǎn)過(guò)來(lái)、或者從攝像頭抓幀色序都是 BGR直接送給 WPF 或 WinForms 顯示會(huì)和原圖對(duì)不上藍(lán)色發(fā)紅。轉(zhuǎn)換方式在顯示環(huán)節(jié)做不要在算法入口做。using var src Cv2.ImRead(sample.jpg, ImreadModes.Color); using var hsv new Mat(); Cv2.CvtColor(src, hsv, ColorConversionCodes.BGR2HSV); // HSV 里 H 在 OpenCV 中被壓到 0~179不是 0~360 // 所以要取「紅色」范圍得用 0~10 和 170~179 兩段而不是 0~30 和 330~360 using var mask1 new Mat(); using var mask2 new Mat(); Cv2.InRange(hsv, new Scalar(0, 80, 60), new Scalar(10, 255, 255), mask1); Cv2.InRange(hsv, new Scalar(170, 80, 60), new Scalar(179, 255, 255), mask2); using var redMask mask1 | mask2; // 兩段合并三個(gè)參數(shù)的含義H 是色相OpenCV 為了塞進(jìn) 8 位無(wú)符號(hào)數(shù)除以了 2所以上限是 179S 是飽和度0 到 255低于 80 的基本是灰白區(qū)域V 是明度低于 60 接近純黑。這三個(gè)下限不是隨手寫(xiě)的室內(nèi)弱光場(chǎng)景 V 要往下調(diào)到 40 左右否則暗部目標(biāo)全丟強(qiáng)光過(guò)曝場(chǎng)景 S 要往下調(diào)否則高光區(qū)域飽和度被壓扁。ImreadModes那幾個(gè)常用值也順便記一下Color強(qiáng)制三通道Grayscale單通道Unchanged保留原始通道和位深——讀 16 位 TIFF 或帶 alpha 的 PNG 時(shí)只有Unchanged不會(huì)丟數(shù)據(jù)其余模式都會(huì)做隱式轉(zhuǎn)換精度掉了自己都不知道。3.2 濾波與邊緣兩個(gè)閾值到底怎么定高斯模糊的核尺寸必須是奇數(shù)傳偶數(shù)會(huì)直接拋異常。sigma 傳 0 表示由核尺寸反推這是最常用的組合因?yàn)槭謩?dòng)調(diào) sigma 和核尺寸兩個(gè)參數(shù)很容易互相打架。using var src Cv2.ImRead(sample.jpg, ImreadModes.Grayscale); // ksize 必須是奇數(shù)sigmaX 傳 0 由 ksize 推導(dǎo) using var blur new Mat(); Cv2.GaussianBlur(src, blur, new Size(5, 5), 0); // Canny 的雙閾值低于低閾值直接判非邊緣高于高閾值直接判邊緣中間地帶看連通性 using var edges new Mat(); Cv2.Canny(blur, edges, 50, 150);兩個(gè)閾值的經(jīng)典比例是 1:2 到 1:3問(wèn)題在于絕對(duì)數(shù)值隨場(chǎng)景變化極大。一個(gè)可量化的定法是用灰度均值做基準(zhǔn)Cv2.MeanStdDev(blur, out Scalar mean, out Scalar stddev); // 以均值上下浮動(dòng) 33% 作為雙閾值再夾到合法區(qū)間 double lower Math.Max(0, (1.0 - 0.33) * mean.Val0); double upper Math.Min(255, (1.0 0.33) * mean.Val0); using var autoEdges new Mat(); Cv2.Canny(blur, autoEdges, lower, upper); Console.WriteLine($lower{lower:F1}, upper{upper:F1});MeanStdDev輸出兩個(gè) Scalar這里只取第一個(gè)通道的Val0灰度圖正好只有這一個(gè)通道有意義。0.33 這個(gè)系數(shù)來(lái)自經(jīng)驗(yàn)偏低會(huì)把紋理噪聲都拉成邊緣偏高會(huì)丟掉弱對(duì)比輪廓。調(diào)試階段建議把算出來(lái)的兩個(gè)數(shù)打印出來(lái)下次遇到同類(lèi)場(chǎng)景直接從這組數(shù)起步比盲調(diào)快得多。模糊核尺寸和 Canny 是聯(lián)動(dòng)的。核太大細(xì)邊緣在模糊階段就沒(méi)了怎么調(diào)閾值都找不回來(lái)核太小噪聲進(jìn)到 Canny 里閾值再高也會(huì)有零星碎邊。常見(jiàn)做法是先用 5×5 起步邊緣太碎把核加到 7×7邊緣太粗回到 3×3。3.3 形態(tài)學(xué)與輪廓hierarchy 和面積過(guò)濾形態(tài)學(xué)的兩個(gè)基本操作是開(kāi)運(yùn)算和閉運(yùn)算前者去小噪點(diǎn)后者補(bǔ)小孔洞結(jié)構(gòu)元素尺寸決定能處理多大的缺陷。// 開(kāi)運(yùn)算先腐蝕后膨脹去掉細(xì)小噪點(diǎn) using var kernel Cv2.GetStructuringElement(MorphShapes.Rect, new Size(3, 3)); using var opened new Mat(); Cv2.MorphologyEx(edges, opened, MorphTypes.Open, kernel); // 閉運(yùn)算先膨脹后腐蝕填補(bǔ)輪廓內(nèi)部的小斷裂 using var closed new Mat(); Cv2.MorphologyEx(opened, closed, MorphTypes.Close, kernel);GetStructuringElement的形狀參數(shù)里Rect適合矩形目標(biāo)Ellipse適合圓形或自然目標(biāo)Cross適合細(xì)線狀結(jié)構(gòu)。尺寸必須是奇數(shù)3×3 是最常用的起點(diǎn)處理的是像素級(jí)的毛刺要到 7×7 以上才能填補(bǔ)肉眼可見(jiàn)的缺口但同時(shí)會(huì)把相鄰目標(biāo)粘在一起這一步要拿實(shí)際圖反復(fù)看。找輪廓的簽名里有三個(gè)容易記錯(cuò)的點(diǎn)// 輸入圖建議傳 clone雖然 OpenCV 3.2 之后 FindContours 不再修改輸入但跨版本保險(xiǎn) using var input closed.Clone(); Cv2.FindContours( input, out Point[][] contours, out HierarchyIndex[] hierarchy, RetrievalModes.External, // 只要最外層輪廓 ContourApproximationModes.ApproxSimple); // 壓縮共線點(diǎn)只保留拐點(diǎn) foreach (var contour in contours) { double area Cv2.ContourArea(contour); if (area 200) continue; // 面積過(guò)濾去掉噪點(diǎn)輪廓 Rect box Cv2.BoundingRect(contour); double perimeter Cv2.ArcLength(contour, true); // 面積與周長(zhǎng)平方的比值可以粗略判斷形狀緊致程度接近圓的目標(biāo)這個(gè)值偏大 Console.WriteLine($area{area:F0} box{box} perimeter{perimeter:F0}); }RetrievalModes的選擇直接影響結(jié)果External只返回最外層適合數(shù)目標(biāo)個(gè)數(shù)Tree返回完整層級(jí)父子關(guān)系存在HierarchyIndex的Parent、FirstChild字段里適合做嵌套結(jié)構(gòu)分析比如找某個(gè)外框里面的小孔。ApproxSimple會(huì)把一條直線上的中間點(diǎn)全部壓縮掉點(diǎn)數(shù)能降一個(gè)數(shù)量級(jí)做面積和周長(zhǎng)計(jì)算時(shí)精度損失可以忽略但如果你要拿點(diǎn)集做模板匹配就得換成ApproxNone。面積閾值 200 這個(gè)數(shù)不是固定的它和圖像分辨率強(qiáng)相關(guān)。判斷方法先把所有輪廓面積打印出來(lái)排序噪點(diǎn)通常集中在個(gè)位數(shù)到幾十真實(shí)目標(biāo)會(huì)有一兩個(gè)明顯的數(shù)量級(jí)跳躍閾值就取在跳躍中間。4. 攝像頭與視頻鏈路VideoCapture 打開(kāi)失敗、幀循環(huán)與 WPF 渲染圖像處理是靜態(tài)的視頻鏈路是動(dòng)態(tài)的問(wèn)題類(lèi)型完全不同。靜態(tài)圖調(diào)不通最多是結(jié)果不對(duì)視頻鏈路調(diào)不通就是黑屏、卡死、內(nèi)存一路漲。這一章把取流、幀循環(huán)、界面刷新、寫(xiě)出四段拆開(kāi)。4.1 VideoCapture 打開(kāi)失敗的排查順序// 第二個(gè)參數(shù)指定后端Windows 上 DSHOW 兼容性最好MSMF 打開(kāi)更快但設(shè)備兼容性略差 using var cap new VideoCapture(0, VideoCaptureAPIs.DSHOW); if (!cap.IsOpened()) { Console.WriteLine(打開(kāi)攝像頭失敗); return; } // 分辨率要在打開(kāi)之后、讀幀之前設(shè)置順序反了很多設(shè)備會(huì)靜默忽略 cap.Set(VideoCaptureProperties.FrameWidth, 1280); cap.Set(VideoCaptureProperties.FrameHeight, 720); cap.Set(VideoCaptureProperties.FPS, 30); // 設(shè)置不一定生效讀回來(lái)確認(rèn)實(shí)際值 Console.WriteLine($實(shí)際 {cap.FrameWidth}x{cap.FrameHeight} {cap.Fps});排查順序我一般是這樣先確認(rèn)設(shè)備索引0 是默認(rèn)攝像頭多設(shè)備時(shí)逐個(gè)試 0 到 3再看后端DSHOW和MSMF換著試某些采集卡只認(rèn)其中一個(gè)然后看是不是被別的程序占用攝像頭是獨(dú)占資源另一個(gè)進(jìn)程開(kāi)著預(yù)覽就搶不到最后看分辨率設(shè)了一個(gè)設(shè)備不支持的尺寸有的驅(qū)動(dòng)會(huì)直接失敗而不是回退到最近的可用值。Set之后再Get一遍確認(rèn)這一步能省掉大量「代碼明明設(shè)了 1080p 為什么出來(lái)是 640」的困惑。4.2 幀循環(huán)的寫(xiě)法與退出條件using var frame new Mat(); while (true) { // Read 內(nèi)部是 Grab Retrieve返回 false 表示流結(jié)束或取幀失敗 if (!cap.Read(frame) || frame.Empty()) { Console.WriteLine(取幀失敗可能是設(shè)備斷開(kāi)或文件讀完); break; } // 處理放在這里注意不要在里面 new 大對(duì)象循環(huán)里每幀分配會(huì)觸發(fā)頻繁 GC Cv2.CvtColor(frame, frame, ColorConversionCodes.BGR2GRAY); Cv2.ImShow(live, frame); // 這里必須是 1 而不是 0傳 0 會(huì)阻塞到按鍵視頻就變成逐幀步進(jìn)了 if (Cv2.WaitKey(1) 27) break; // 27 是 ESC }循環(huán)體里有三個(gè)細(xì)節(jié)Read復(fù)用了同一個(gè)frame對(duì)象不會(huì)每幀新建 Mat這是有意的避免每幀分配非托管內(nèi)存WaitKey(1)除了控制播放節(jié)奏還負(fù)責(zé)處理 highgui 的窗口消息不調(diào)用的話窗口會(huì)假死退出條件除了 ESC還要考慮流自然結(jié)束所以Read的返回值必須判斷不能只靠異常。文件播放時(shí)節(jié)奏控制另說(shuō)。攝像頭是實(shí)時(shí)的WaitKey(1)就夠播本地視頻想按原速回放得按 FPS 算延時(shí)WaitKey((int)(1000 / fps))直接傳 1 會(huì)快放。4.3 在 WinForms 和 WPF 上刷新畫(huà)面Cv2.ImShow只適合調(diào)試真做工具得嵌到界面里。WinForms 用 PictureBox轉(zhuǎn)換靠 Extensions 包// WinForms每幀轉(zhuǎn)成 Bitmap 塞給 PictureBox var bmp OpenCvSharp.Extensions.BitmapConverter.ToBitmap(frame); // 上一幀的 Image 必須手動(dòng)釋放否則 GDI 句柄會(huì)一路漲到系統(tǒng)上限 var old pictureBox1.Image; pictureBox1.Image bmp; old?.Dispose();WPF 走的是另一條路轉(zhuǎn)成WriteableBitmap直接綁到 Image 控件// WPF需要 OpenCvSharp4.WpfExtensions var wb OpenCvSharp.WpfExtensions.WriteableBitmapConverter.ToWriteableBitmap(frame); imageControl.Source wb;WPF 這里有個(gè)跨線程的坑取流通常放在后臺(tái)線程但給Image.Source賦值必須在 UI 線程。最省事的做法是后臺(tái)線程只負(fù)責(zé)處理和轉(zhuǎn)換轉(zhuǎn)好的WriteableBitmap通過(guò)Dispatcher.BeginInvoke拋回 UI 線程賦值。BeginInvoke而不是Invoke是因?yàn)橥降却趲矢叩臅r(shí)候會(huì)把后臺(tái)線程拖住反而掉幀。性能上還有一條BitmapConverter.ToBitmap每幀都會(huì)新建一個(gè) Bitmap30fps 下每秒 30 次分配加釋放GC 壓力不小。分辨率上到 1080p 以后建議改成預(yù)分配一個(gè)固定尺寸的 Bitmap用LockBits直接寫(xiě)像素雖然代碼多幾行但幀率會(huì)穩(wěn)很多。4.4 VideoWriter 的編碼與尺寸約束// 四字符編碼XVID 兼容性好MJPG 文件大但幾乎所有播放器都認(rèn) using var writer new VideoWriter( out.avi, FourCC.XVID, 25, // 幀率要和寫(xiě)入節(jié)奏一致 new Size(1280, 720), // 必須與每幀尺寸完全一致 true); // 是否彩色 if (!writer.IsOpened()) { Console.WriteLine(VideoWriter 初始化失敗多半是編碼器不可用); return; } // 寫(xiě)幀 writer.Write(frame); // 結(jié)束必須釋放否則文件尾索引不完整播放器打不開(kāi) writer.Release();三個(gè)硬約束幀尺寸必須和構(gòu)造時(shí)完全一致差一個(gè)像素都會(huì)靜默丟幀最后得到一個(gè) 0 字節(jié)或者時(shí)長(zhǎng)對(duì)不上的文件幀率參數(shù)只寫(xiě)進(jìn)文件頭不影響實(shí)際寫(xiě)入速度寫(xiě)快了就是快放FourCC.XVID在部分精簡(jiǎn)版系統(tǒng)上可能找不到對(duì)應(yīng)編碼器這時(shí)換FourCC.MJPG它是 Motion-JPEG幾乎不會(huì)失敗代價(jià)是文件體積大好幾倍。5. 避坑與排查五個(gè)把人勸退的現(xiàn)場(chǎng)例程跑不通的原因高度集中下面五條按我遇到的頻率排序每條都按現(xiàn)象、原因、解決三段寫(xiě)。5.1 原生庫(kù)加載失敗與位數(shù)不匹配現(xiàn)象編譯通過(guò)一運(yùn)行就拋DllNotFoundException: OpenCvSharpExtern或者BadImageFormatException。原因前者是 runtime 包沒(méi)裝或者原生 dll 沒(méi)被復(fù)制到輸出目錄后者是位數(shù)不匹配32 位進(jìn)程去加載 64 位 dll。還有一種隱蔽情況機(jī)器上裝過(guò)別的 OpenCV 版本系統(tǒng) PATH 里有同名 dll加載到了錯(cuò)誤的那份。解決先看輸出目錄下有沒(méi)有OpenCvSharpExtern.dll和opencv_videoio_ffmpeg*.dll沒(méi)有就重新裝 runtime 包并清理重建有的話用dumpbin /headers看一眼架構(gòu)把 PlatformTarget 顯式設(shè)成 x64不要依賴(lài) AnyCPU 的默認(rèn)行為排查 PATH 污染必要時(shí)在代碼里顯式指定原生庫(kù)搜索目錄。5.2 讀視頻返回空幀與中文路徑現(xiàn)象VideoCapture的IsOpened()返回 true但Read一直返回 false或者ImRead對(duì)某些圖片一直返回空 Mat換個(gè)路徑就好了。原因視頻打不開(kāi)多半是缺 ffmpeg 解碼庫(kù)runtime 包里帶的那份沒(méi)被復(fù)制過(guò)去圖片讀不到基本是路徑含非 ASCII 字符原生層的文件打開(kāi)用的是窄字符接口編碼一錯(cuò)就找不到文件。解決視頻先確認(rèn) ffmpeg 的 dll 在輸出目錄圖片路徑要么改成純英文要么用Cv2.ImDecode(File.ReadAllBytes(path), ImreadModes.Color)繞開(kāi)原生文件接口——這個(gè)寫(xiě)法把讀文件交給 .NET解碼交給 OpenCV中文路徑問(wèn)題直接消失我在所有交付項(xiàng)目里都這么處理。5.3 Mat 未釋放導(dǎo)致內(nèi)存一路漲現(xiàn)象跑幾分鐘內(nèi)存從幾百兆漲到幾個(gè) G任務(wù)管理器里非托管內(nèi)存持續(xù)增長(zhǎng)GC 也壓不下去。原因Mat 的像素?cái)?shù)據(jù)在非托管內(nèi)存里GC 只回收托管殼不回收像素緩沖區(qū)。循環(huán)里new Mat()而不Dispose或者用 ROI 視圖把原 Mat 的引用計(jì)數(shù)釘住都會(huì)造成泄漏。另一種常見(jiàn)情況是異常路徑跳過(guò)了Dispose。解決所有 Mat 一律用using包括臨時(shí)中間結(jié)果循環(huán)里復(fù)用同一個(gè) Mat 而不是每幀新建用Cv2.GetTickCount之類(lèi)的手段做壓力測(cè)試跑一千幀看內(nèi)存是否穩(wěn)定視圖用完立刻釋放需要保留就Clone出獨(dú)立內(nèi)存。5.4 WaitKey 不調(diào)用導(dǎo)致窗口假死現(xiàn)象ImShow的窗口白屏、拖動(dòng)沒(méi)反應(yīng)、點(diǎn)關(guān)閉按鈕也關(guān)不掉整個(gè)進(jìn)程像卡住了。原因highgui 的窗口消息要靠WaitKey驅(qū)動(dòng)不調(diào)用它窗口只是創(chuàng)建了但不進(jìn)消息循環(huán)。這一條在新手代碼里出現(xiàn)頻率極高屬于典型的「玄學(xué)」問(wèn)題——代碼看不出錯(cuò)就是不響應(yīng)。解決任何ImShow之后必須跟一個(gè)WaitKey靜態(tài)圖用WaitKey(0)視頻循環(huán)用WaitKey(1)程序退出前調(diào)DestroyAllWindows()如果是在后臺(tái)線程里顯示注意 highgui 的窗口操作要放在同一個(gè)線程里跨線程調(diào)用會(huì)出現(xiàn)更難查的問(wèn)題。5.5 WPF 圖像不更新與跨線程異?,F(xiàn)象后臺(tái)線程更新了 Mat界面上的圖一動(dòng)不動(dòng)或者直接拋「調(diào)用線程無(wú)法訪問(wèn)此對(duì)象因?yàn)榱硪粋€(gè)線程擁有該對(duì)象」。原因WPF 的 UI 元素有線程親和性后臺(tái)線程不能直接賦值Image.Source另一種情況是每幀都賦了新的WriteableBitmap但 UI 線程被別的邏輯占滿渲染隊(duì)列積壓看上去就是不刷新。解決轉(zhuǎn)換在后臺(tái)做賦值用Dispatcher.BeginInvoke拋回 UI 線程WriteableBitmap可以復(fù)用同一個(gè)實(shí)例改內(nèi)容后調(diào)Lock/AddDirtyRect/Unlock比每幀新建省一大截如果幀率還是上不去檢查是不是把耗時(shí)處理放在了 UI 線程。6. 把例程改成自己的工具一條可復(fù)用的處理管線例程的價(jià)值不在代碼本身在它給出了每條調(diào)用鏈的標(biāo)準(zhǔn)寫(xiě)法。真正落地時(shí)把這些散落的調(diào)用收成一個(gè)管線類(lèi)參數(shù)從配置文件讀比每次復(fù)制粘貼強(qiáng)得多。我一般的組織方式是一個(gè)IImageStep接口加若干實(shí)現(xiàn)管線負(fù)責(zé)串聯(lián)每步的開(kāi)關(guān)和參數(shù)寫(xiě)在配置里public interface IImageStep { string Name { get; } Mat Process(Mat input); // 返回新 Mat調(diào)用方負(fù)責(zé)釋放 } public sealed class Pipeline { private readonly ListIImageStep _steps new(); public void Add(IImageStep step) _steps.Add(step); public Mat Run(Mat src) { var current src.Clone(); // 入口先 Clone避免改到調(diào)用方的圖 foreach (var step in _steps) { var next step.Process(current); current.Dispose(); // 上一步的中間結(jié)果立刻釋放 current next; } return current; } }這套寫(xiě)法的好處是每步都能單獨(dú)開(kāi)關(guān)、單獨(dú)計(jì)時(shí)。加一個(gè)Stopwatch包在Process外面跑一遍就知道瓶頸在哪一步多數(shù)時(shí)候是形態(tài)學(xué)或者大核模糊而不是看起來(lái)最復(fù)雜的輪廓分析。步驟關(guān)鍵參數(shù)調(diào)參依據(jù)灰度轉(zhuǎn)換通道順序 BGR2GRAY輸入若是 RGB 要先轉(zhuǎn)序高斯模糊ksize 奇數(shù)、sigma 為 0邊緣碎就加大核Canny高低閾值 1:21:3用灰度均值 ±33% 起步形態(tài)學(xué)開(kāi)核 3×3 到 7×7噪點(diǎn)尺寸決定核大小輪廓過(guò)濾面積閾值按面積分布的數(shù)量級(jí)跳躍取驗(yàn)證方法我固定用兩步一是拿一張標(biāo)準(zhǔn)圖跑全流程把每一步的中間結(jié)果ImWrite出來(lái)存成序列肉眼過(guò)一遍找出哪一步開(kāi)始不對(duì)二是跑一千幀壓力測(cè)試看內(nèi)存曲線是否平穩(wěn)、單幀耗時(shí)是否在預(yù)算內(nèi)。這兩步走完參數(shù)才敢往業(yè)務(wù)里帶。血淚經(jīng)驗(yàn)是別在管線里做隱式轉(zhuǎn)換。初期為了省事我在某一步里直接把 BGR 當(dāng) RGB 處理單測(cè)看不出來(lái)上線后所有顏色判定的閾值全偏排查了大半天。從那以后我每接一個(gè) C# 視覺(jué)需求都會(huì)先把中間結(jié)果落盤(pán)、把每步耗時(shí)打出來(lái)再談?wù){(diào)參。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲丝袜色| 操比国产| 伊人色综合欧美| 欧美极品女人的天堂| 懂色av色欲av蜜臀av| julia国产在线| 欧美人人天天网| 嗯嗯嗯啊啊啊在线免费观看| 国产成人自拍视频在线| 在线视频日韩欧美国产| 日本三级一区二区 在线| 五月天婷婷社区| 91/欧美| 日韩一999精品| 无码国产精品久久久久| 亚洲最新中文字幕免费| 国产一区免费午夜视频| 人人操 欧美| 97久操| 国产和美国毛片| 一区二区 日韩 欧美 国产 传媒| 九久9热| 久久乐| 女人高潮大叫一级毛片| 九九激情网| 伊人五月天| h无码动漫在线观看| 2019精品国产无码成人| 内射老妇BBWX0C0CK| 色图四区| 91五十路| 久久久一区二区三区三州| 女人天堂av在线播放| 夜夜躁狠狠躁日日躁av| 精品黄色电影| 2017大香蕉| 欧美性色网| 快播久久人人aV| 超碰碰小说97| 日本道日本道中文字幕日本道最新日本道在线观看 | 手机看片1025| 五月丁香激情综合网| 久久精视频美日韩在线视频| 九九英色视频| 使劲用力艹少妇视频一区二区| 嗯嗯啊啊好疼| 男女性扦B| 精品综合久久久久久97| 三级色影综合网| 无码人妻1727| 国产高清MV操逼视频| 日日夜夜精品| 青青草在线成人视频| 久草视频制服诱惑| 久久爱超碰网| 九七超碰| 综合免费无码中文| 亚州国产精品乱| 99热| 日韩丨制服丨中文|在线| 久久久久女教师免费一区| 亚欧美色| 无码天天操| 1禁看欧美黄片免费看| www色色com| 色穴精品| 9.1小视频| 亚洲天天操| 最近2018中文字幕在线高清第一页| 国产av强奸美女| 精品人人插人人操| 久久男人网| 伊人九九九| 国产精品干干干| 久久婷婷热| 日本少妇va7777| 肉丝中文无码高清| 欧美爆乳精品一区二区| 大奶啊啊好爽| 久久久一区二区| 97视频在线免费观看| 国产www色在线观看| 婷婷在线视频| 亚欧美综合| 午夜精品久久久久久久久久蜜桃| 搡老女人老91二区| 国产一区二区欧美日本| 黄色不卡视频| 成人一道本免费视频| 亚洲男人天堂Av| 亚洲s色图| 欧美影院一区二区三区| 操美女高潮抽搐白浆| 成人色女网| 欧美成人精品一区| 美女自卫慰黄网站免费| 九九九九一级| 思思热久久成人| 2025亚洲男人天堂| 日本色日夜干| 少妇毛片久久| 神马久久午夜| 日本少妇va7777| 热热色91| 性爱动态120秒| 天天干夜夜操一区二区| 五月丁香| 中国和日本人色哪个不下载能放| 熟女精品va中文字幕| 欧美激情片一区二区| 精品人妻一区二区三区视频在线| 99综合网| 国产偷拍网站| 久久色一区| 欧美色图20p| 丰满人妻-区二区三区免费| 黄色工厂这里只有精品| 97超碰碰| 人妻夜夜爽天天爽麻豆三区网站| 国产亚洲精品美女久久久| 国产夜夜操| 91成人无码| 色色色综合网| 国产真实子伦对白| 天天综合麻豆视频| a网站免费观看| 97爱亚洲| 日韩伦理久 久久 清纯 | 色一射色一射| 三级日韩一区二区三区| 国产熟码AV| 午夜男人一级A片7777| 久9爱精品| 99热最新网址| 岛国1区2区3区在线观看| 久久九九一区二区三区成人| 日韩无码三级影院| 久草老司机| 日本 欧美 国产一区| 97视频一区| 青青草操逼逼视频| 国产隔壁老王影院在线| 97久久网| 欧色网址| 国产久久日韩网站导航| 乱伦图一区| 亚洲蜜臀精品视频久久| 亚洲 欧美 日韩 国产一区二区| 久久久久骚| 911av网站免费观看| 五月天亚洲网| 久久久18禁| 干婷婷综合网| 亚洲国产成人7777| 亚洲色棕合| 97久久精品国产| 亚洲欧美在线观看2021| 91久久久亚洲| 国产欧洲精品亚洲午夜拍精品| 99精品久久| 国产JDAV无码视频在线观看| 国内毛片四区| 国产精品久久久777| 日本一级性爱| 777奇米影视777四色| 五月天亚洲色图| 日日夜夜模| 久妇网| 欧洲成人性爱视频| 国产精品人妻免费精品| 五十路成人在线视频二区三区| 熟妇高潮一区二区免费视频| 成人性爱电影网| 无码高清操逼| 精品人妻久久久| 人人搡人人肉久久精品| 超碰公开久久网| 欧美日韩在线国产在线| 日本精品中文字幕视频| 亚洲天天更新| 人人操人人爽人人操人人| 国内毛片四区| 色九九九九九九| 大香蕉男人的天堂| 中文字幕少妇色| 色婷婷综合网站| 三级特黄60分钟播放| 欧美老熟另类| 91丨九色丨大屁股| 中文字幕一区 二 区 三 四 五 区日 日 骚| 久久黄色视频一区二区三区| 日韩在线地址一| 91少妇人妻| 少妇久久久免费| 日韩三级在线观看mp4| 亚洲有码 欧美精品| 日本3级一区二区免费| 国模不卡| 中文字幕日韩人妻视频一区二区三区| 在线观看一级α片刺激高潮视频| 日本影视久久免费| 国产又黄又粗又猛大片| 国产h小视频在线观看免费| 97国产|免费| 午夜精品久久久久久久| 97av,com| 亚洲情色 无码专区| 十八禁一区二区无码观看| 天天香香欲综合| 欧美综合第一| 色拍偷亚洲| 精品一区二区三区四区外站| 久久久久元码视频| 99re6国产精品99re| 婷婷久草| 蜜臀久久99精品久久久久久婷婷| 亚洲天堂久久久久久粉红视频| 97天天| 日韩精品人妻一区二区| 国产 亚洲 一二三四| 综合网亚| 亚洲日韩乱码中文无码蜜桃臀网站| 2017大香蕉国产精品久久| 亚洲和欧美裸体美女双飞视频| 媚薬在线视频麻豆| 麻豆天美在线| 蜜乳AV.COM| 国产真实野战在线视频| 97精品国产97久久久久久| 欧美激情总合网| 五十路熟女工口 | 粉嫩不卡一区二区性爱 | 精久久久| 偷拍 欧美 日韩| 精品久久久久久中文字幕三区| 欧美另类精品xxxx| 99色天堂| 蜜臀亚洲综合一二三四区| 超碰97人人乐| 一级@啪啪视频| 成人免费福利网站国产| 91久久精品国产| 久久久久元码视频| 丁香九月婷婷| AV无码久久久精品| 中文字幕超碰CAO| 少妇高潮九九九九九九九| 国产400孕妇孕交群| 亚一综合久久久久久久久久| 蜜臀少妇一区二区| 亚洲日韩久久精品一区| 91天天综合网| 99热只有这里有精品| 美女啊啊啊啊啊啊| 国产女人和拘做爰视频| 男人天堂.AB| 小草av不卡亚洲二区| 9Ⅰ老熟女| 久草国产在线视频| 中 文字幕一区二区三四 五 区日 日 骚 | 精品蜜乳AV免费观看| 亚洲AV无码成人精品久久| 免费看污网站| 60秒不遮不挡| 久久综合九九| 亚洲欧美激情小说| 国模不卡| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 久久神马| 91狠| 熟妇女伦乱视频| 亚洲天堂人妻熟妇视频| 久草新免费| 男人天堂电影院| 丁香五月影院| 亚洲图片 欧美电影| 国产av激情无码久久天堂| 中文字幕一区av| 伊人欧美大香蕉视频| 伊人网综合在线视频| 日本一区二区三区精品| 日韩电影中文字幕| 东北女人| 日韩青久久| 亚洲精品国产熟女| 人人性爱视频免费| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 日本三级人妻a人妻一在线| 91 偷| 综合色播| 好属操| 男人天堂一区二区| 思思久热在线精品66| 黄色网址久久精品欧美喷水| 97色在线视频| 国语人妻精彩刺激| 思思久热在线精品66| 国内精品999| 久久久久97| 日韩97视频!在线| 91老熟女视频| baiduhicn.com。| 日熟女| 青娱乐手机日韩在线视频| 日本免费一级AAA大片器| 国产亚洲色婷婷99精品91| 日本高清视频xxxx| 欧美综合传媒| 密桃99999| 97超碰日韩| 99re这里只有精品3| 高清国产精品无码| 97 国产精品| 精品一区二区三区蜜桃臀赵总 | 美女黄页| 国产极品美女高潮无套在线观看 | 人人妻人射| 青草伊人久久| 99热只有| 久久精品国产亚洲AV高清演员表| 97天天在线| 开心五月婷婷激情| 久久首页| 日韩99999| 青青草吊丝| 女人 A一级| 日本ZZ高免费A级视频| 亚洲 日本 一 二 三| 亚洲无码精品AV久久久| 中文字幕精品三级久久久| 中文字幕在线观看丝袜| 欧亚性爱在线视频| 日本精品一区二区三区四区的功能| 91jk色拍| 丁香五月天激情综合| 中国一级αV| 国产精品国产| 青娱乐导航AV| 8050午夜少妇无码| 日韩国产欧美伦理在线| 超碰97护士| 97国产精品久久久久| 91原创在线观看| 亚洲系列第一页| 国产成人在线观看网址| 久久久久久九九九九九九| 精品超碰中文在线| 丁香婷婷九月| 性爱视频无打码在线观看| 欧美色九九| 天天舔天天日天天射| 婷婷六月天| 国产亚洲精品美女久久久m| 日韩欧美亚洲自拍偷拍| 亚洲玖玖爱| 伊人网在线视频| 中文字幕国产精品1区| 天天干人妇| 免费人成在线观看网站品爱网| 美女久久久| 九九九国产精品| 涩涩久久精品| 久久久熟妇熟女国产| 大奶啊啊好爽| 日本综合久久| 婷婷久久久| 亚洲毛片一级带毛片基地| 2021国产成人精品久久| 99re视频这里只有精品| 少妇无码999| 天天操熟妇| 成人欧美日超碰| 高潮嗯啊性感美女久久久| 欧美一二三区四五区| 99热97| 色五月婷婷麻豆在| 青青草视频这里只有精品| 另类专区在线观看| 国产亚洲在线| 久久xx| 久久99久久99精品免视看婷婷| 在线观看黄色电话| 久久久网站| 中文字幕在线高清男人的天堂| 人人摸人人摸人人干| 国产亚洲精品av一区| 在线观看免费视频国产| 精品人妻av在线播放| 中国一级特黄大片护士| 日韩欧美一级特黄大片| 日韩中文字幕视频在线观看| 大香蕉av在线| 成人AV素股で擦久久| 亚洲欧美中日韩| yazhousetuoumei| 日韩传媒在线| 俞拍自拍| 欧美性色欧美| 黄色大片视频在线免费看| 中字幕人妻一区二区三区| 台湾成人无码AV| 日韩性爱视频免费在线| 韩日精品四区| 91国产美女丝袜足交精品视频 | 亚欧国产无码精品在线| 深夜操逼网| 宗合情欲网| 丰满人妻一区二区中文| 色噜噜国产精品视频一区二区| 啊啊啊啊啊啊好多水| 无码一区免费在线不卡| 久操网视频| 久久综合激情| 六月婷婷一区二区三区| 欧美丝袜中文字幕07在线| 中文字幕一二三| 国产精品一区二区亚洲人成毛片| 一本一道vs波多野结衣| 小草三级久久观看| 日韩八十路老熟女| 亚洲日韩av专区无码| 欧美成人AⅤ大片在线观看| 国产精品青草综合久久| 超碰综合色| 97欧美| 青娱乐久久艹| 精产国品一区二三产品| 久久内射| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 曰韩av中文字幕专区| 天天综合网91入口| 色逼综合| 国产免费一区在线观看| av东京热男人的天堂| 亚洲精品97久久| 一级黄色性爱A级片| 青青操青娱乐| 999色欧美中文字幕| 五十路六十路七十路熟婆| 操碰91| 久久久久无码一妻区| 日本操逼视频免费| 99精品热| 夜夜嗨老熟女AV一区二区三区| 四虎午夜影院| 色综合一区二区三巨| 男人天堂导航| 人妻天天夜夜爽一区二区| 综合大香蕉美。| 不卡一区二区日本视频| 久久久中文版| 啪啪视频亚洲第一| 欧美婷婷久久| 无码免费在线观看黄色片| 亚洲 中文 女同| 欧美九九九九九| 欧美v亚洲v日韩v最新在线二区| 中文字幕人妻色偷偷久久皮 | 91久久99久久91熟女精品| 欧美国产操逼| 国产女人操逼视频| 日日日日做夜夜夜夜做无码97| 91精品久久久久五月天精品| 久久久久久九九九九-美女久久久久久久-成人AV| 久操国产在线| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 国产一二三在线视频五十路| 亚洲无码99| 九九九精品美女| 婷婷五月天成人| 深夜视频| 色精品极品| 狠狠操狠狠操操| 大香蕉欧美伊| 2019天天干天天操| 一区二区亚州激情久婷婷欧美| 奇米四色影视777久久久| 亚洲自拍一区夜夜操| 国产亚洲精品美女久久久| 免费网站观看www在线观| 激情抓乳插进去啪啪啪日韩 | 欧美超碰人妻97| 日韩精品黄片免费观看| 99在线精品观看视频中文| 日韩女模中文造逼| 97在线免费看视频| 久久一二三四不卡 | 精品一区二区亚洲国产| 78精品| 亚洲熟妇自偷自拍另欧美| 91精品91久久久久77777俄罗斯老妇姓x| 丝袜美腿诱惑亚洲欧美视频在线观看| 91天天| 精品亚洲一区在线观看| 国产精品电影推荐| AAA久久| 欧美男人天堂| 男人的天堂久久狠| renqi久久久久久久久久久久| 思思热一热婷婷热一热| 天天做日日爱夜夜爽| 综合亚洲欧美| 成人十八禁日韩欧美一二三| 色综合99| 日韩综合无码色欲vv| 我想要啊 啊 啊| 草草影院在线视频| 国产精品无码av在线| 中国和日本人色哪个不下载能放| 天天综合欧美综合| 亚洲av强奸乱伦| 曰韩人妻中文字幕在线| 久久影视二区三区行押| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 国产中文精品一区二区在线观看| 美女十八禁| 久久欧洲| 人人人人人人少妇| 亚洲暴力强奸AV| 天天躁日日躁狠狠躁| 国产AV人人夜夜澡人人爽麻豆| 激情第四色| 成人三一级一片aaa| 狠狠91| 日本高清视频在线观看黄已三辽| 四虎AV无码| 97最新在线播放视频| 伊人丁香五月婷婷| 九九热精品| 9997se| 激情综合av| 蜜桃成人1区2区3区| 萌白酱自拍视频| 麻豆国产97在线| 色臀AV| wuyechaopeng| 超碰综合97在线| 国产精品suv一区| 国产馆极品诱惑| 国产成人综合网| 一级性爱aaaa| 亚洲图片欧洲图片aⅴ| 最新国内自拍av免费| 91老熟妇| 东京热男人的天堂| 91视频在线观看18| 婷婷午夜清品久久久久久久性色视频观| 国内97干免费看| 国产女同性恋视频| 澳门人妻久久| 九九九午夜| 日韩AV电影网站| 精品色色| 天天欧美色| 欧美亚洲日韩人妻在线观看| 夜夜操二区| 爽爽淫人网| 婷婷综合五月天| 丁香五月天社区| 人妻激情偷乱视频一区二区三区| 久久色情| 曰韩欧美国产传媒麻豆第一区| 91在线色综合| 日本九九久久99播| 少妇极品熟妇人妻无码| 久久久久国产| 日韩射图| 一区二区三| 久久夜夜| 在线欧美69V免费观看视频| 福利在线观看一区二区| 色婷婷狠狠18禁| www.夜夜操| 国产馆极品诱惑| 综合网久久| 97超碰这里只有精品| 国产视频不卡在线观看| 精品国产片亚洲一区| 丁香五月婷婷基地| 国产精品久久久蜜臀| 日本超碰色精品| 精品大全99999| 老女人综合网| 欧美日韩精品一区二区三区高清| 综合一区中亚洲国产成人综合精品 | 欧美黄片视频在线观看免费 | 九九十八精品| 色婷婷一区二区三区久久午夜 | 激情五月综合网| 中文字日本乱码| 大屁股国产在线视频| 亚欧美综合网| 新久久AV| 亚洲 欧美 91| 99久久9| 欧美超碰97| 色欲蜜臀AV| 狠狠中文字幕| 中文字幕第23区| 国产97在线 | 亚洲| 夜夜操青青草| 少妇一线天久久久久久| 99热8| 亚州综合| 日韩一级片| 久草资源欧美在线视频| 精品在线78| 九九干| 欧美制服另类丝袜| 久久久精| 天天色黄色影院天天操| 五月婷婷综合在线| 屁股久久久久久久久| 国产女同在线观看视频| 你懂得91| 中文字幕诱惑制服人妻丝袜美丝袜美| 久久久久亚洲| 天天干天天干天天| 97久久国产亚洲精品超碰热| 亚洲精品国产日韩无码AV永久免| 五月天婷婷成人网| 性欧美| www.av在线视频| 国产视频一区二区在线| 熟妇女伦乱视频| 亚洲AV成人无码久久精品播放| 成人热久久精品| 欧美色宗合| 久区视频| 操逼日韩无码| 欧美日日人人天天| 日韩欧美俄罗斯A片| 伊人精品视频| 亚洲国产av中文字幕久久 | 内射夫妻三片| 亚洲男人天堂2012| av影片在线观看不卡| 婷婷久久五月天| 老熟女阿 国产91| 中文字幕性感少妇av| 少妇特黄一区二区三区| 国产亚州高清国产拍精| 中文字幕一区二区三区蜜桃视频| 性色av蜜臀av色欲aV| 精品国产国产AV| 小日子操bb在线看| 亚洲熟女乱综合一区二区三区| 亚洲性爱成人| 蜜臀色乳| 粉嫩不卡一区二区性爱| 欧美极品色| 女人双腿搬开让男人桶| 欧美色图片色哟哟| 久久性爱视频| 成·人免费午夜在线观看| 色噜噜人妻av 中文字幕| 天天综合网网欲色| 秋霞男人网| 欧美性爱日韩性爱| 亚洲综人| 午夜精品久久久久久久男人的天堂| 欧美 亚洲 第一页 | 1769一区| 金典av| 91强奸乱轮| 青娱乐黄色录像| 亚洲欧洲美腿丝袜| 岛国在线免费视频| 一二视频神马久久传媒| 99精品在线播放| 97色碰| 亚熟hd视频在线| 日本性爱少妇| 激情小说亚洲色图| 老汉网| 色丁香久久| 91久久青青草原精品| 国产在线精品电影观看| 亚洲欧洲综合视频在线| 国内毛片欧美香蕉精品| 激情黄色五月天| 丁香五月综合| 最新亚洲人成网站在线影院| 18+91网站| 女人妻一区| 亚洲av淫乱| 超碰97久久| 爱妻综合网| 夜夜嗨一区二区| 强奸乱伦大香蕉| 青草一区二区| 丰满岳乱妇一区二区三区| 欧美综合网站999| 青青草吊丝| 综合色99| 国产精品呦一区二区三区| 91人人操| 在线 欧美 亚洲| 久草婷婷| 中文字幕五区| 自拍偷拍2025在线观看| 黑人精品一区二区在线播放| 欧美亚洲天天| 欧亚揄拍偷拍精品视频 | 久久99国产精品| 秋霞福利网| 欧美午夜色妇色鬼| 激情小说五月天| 国产精品成人蜜臀AV在线| 欧美性爱综合,免费| 中文字幕AV中出| 久湿久久| 精品一二三区四视频| 青青青操| 综合影院亚洲| 婷婷五月影院| 人人操人人大香蕉| 精品国产一区二区三区四区在线看| 亚洲欧美在线丝袜| 亚洲色图片区| 人妻 欧美亚洲| 久久m| 97干色天堂| 欧美黑人猛交春色影视大全| AV电影在线播放| 欧美黄片欧美黄片xxx| 午夜激情成人在线观看| 亚洲在线网站| 国产精品视频内谢女人| 精产品久久| 欧美自拍网| 国产97/欧美| 久久精品91| 劲爆欧美人妖三区91| 亚洲视频小说| 人妻黑丝袜电影| 很很很很操| 亚洲精品1区| 试看福利| 伊人久久亚洲色欲综合网站| 老熟妇一区二区三区啪啪| 96免费视频在线| 啊啊啊不要好爽日韩无码一区| 欧美第38页| 人妻无码后入| 久草免费福利在线播放| 操操逼操操逼操操逼逼| 大香蕉强奸乱伦| 国产精品视频一区二区三区八戒| 99久久久er直播网址| 亚洲人妻中文高清| av在线资源| AV 少妇 人妻 偷拍| 91oumei| 99综合视频一体| 久久超碰国产一区二区三区| www.男人天堂| 天堂伊人久久| 青青草视频导航官网| 夜夜春夜夜操| 91在线丝袜| 亚洲精品蜜桃久久久| 亚洲国产日韩精品久久久| 久久内射| 亚洲欧美国产中文视频| 中文字幕一区二区三区字幕| 秋霞久久亚洲精品成人| 精品性爱一区二区| 亚洲天堂中文字幕无码男同| 极品粉嫩一区二区| 久久久国产精品亚洲精品| 少妇激情AV| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 偷窥自拍亚洲色图| 性色一线| 97网址97| 爱爱啊啊啊| 亚洲第一精品在线视频| 色婷婷综合视频| 一区二区精品更新提醒| 后入式999| 又大又大又大又粗爽高潮观看| 国产一区二区三三视频| 九九色婷婷| 91九九九小逼| 深喉吞精| 日韩欧无码一区二区三区免费不卡| 色就色综合| 天天做天天爽| 97超碰精品成| 啪啪视频免费在线观看| 亚洲综合精品国产一区| caorenqi shipin| 青青草色插素人| 亚洲色图欧洲| 手机在线视频国内精品| 超碰亚洲欧美日韩无| 欧美日本不卡| 亚洲一卡二卡在线免费| 婷婷色导航| 很很很很操| 久久产精品一区二区三区电影| 成人免费不卡在线视频| 亚洲91色在线| 国产日本一区二区三区蜜臀在线观看| 日韩人妻播放| 97超碰逼| 99久久无码| 五月婷婷影院| 9久9久| 国产中文大片资源中文字幕| 亚洲 欧美 中文 日韩超碰 | 中国国产精品一区视频| 日本不卡高清免v欧美日韩在线观看| 国产精品一区二区麻豆| 亚洲国产ⅴ高清在线观看| 人妻夜夜爽天天爽麻豆三区网站| 尤物AV免费网站| 岛国AB视频| 啊啊啊快操我视频| 免费看黄片现成| 刺激性视频黄页| 91美女在线观看| 婷婷激情五月综合| 校园春色美腿丝袜 | 欧美性爱视频免费一区一A | 强奸乱伦麻豆| 欧美久久久| 樱花蜜乳av| 欲射影视| 成人性爱视频在线看| 欧美999999| 亚洲欧美日韩二区视频| 欧美日韩一干二干| 日韩激情啪啪啪| 国产熟女二区| 国产精品久久久久中文字幕| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 99999久久精| 天天爽夜夜操| 777超碰| 99青草| 黄色操人| 性爱AV天堂| 国产一级作爱毛片| 97操97干| 五月激情综合网| 97超碰色色| 亚洲狼狼干综合1| 无码 黑人一区二区三区| 久久久久元码视频| 在线人人人人人人精品超| 日韩色图 一区二区| 色婷亚洲五月在线观看| 青青青在线高清视频在线一二三四区| 激情五月天综合网| 黄骗免费网站| 久久精品视频在线观看| 欧美日韩香蕉| 女人香蕉久久毛毛片精品| 色色99| 国产久久免费精品视频| 97se综合| 九九色热| 成人av在线播放| 另类专区加勒比| 久久麻豆一区二区| 国产精品永久免费10000| 98福利在线视频| 九九av| 国产亚洲深夜激情| 热热色青青草| 久久久久久久 九九九九九九九| 久久久久久亚洲Av无码| 四虎影视永久在线观看精品免费网站 | 91女在线观看| 久久直播国产| 天天92av| 亚洲综合大片| 九九精品美女高溯喷水| 精品一啪| 一起草三级AV电影在线观看 | 久久久久久久97| 91天天爱| 国产熟女少妇一区| 日本高清_区二区三区 | 国产老熟女| 久久露脸国产老熟女| 伊人一级免费黄片| 亚洲日韩资源| 99国产精品免费| 麻豆国产尤物AV| 日韩人妻播放| 农村女一级毛卡片| 亚洲熟妇AV日韩熟妇在线| 综精品久久久aaaa| 99综合网| 国产三级中文有码在线视频| 美女黄网| 深喉吞精| 丝袜色综合| 欧美色图私拍91| 99热在线播放| 男男H黄动漫啪啪无遮挡网站| 试看日韩黄片| 日本在线999| 日韩人妻精品| 97精品视频网站| 91国产丝袜足交精品视频| 久久丁香五月婷婷| 精品久久久久av影院| 中文字幕第9页萱萱影音先锋| sewuyueav| 啊啊啊啊好疼视频| 国产白丝在线| 韩国轻伦国内自拍一区| 亚码激情| 超碰AV在线| 国产懂色精品国产av| 国产精品点击进入在线影院| 天天射夜夜操| 好爽视频在线观看视频| 78m啪啪啪| 美女十八禁| 精品女同一区| 人人操人人精品影片| 欧美天堂亚洲电影院一区在线播放 | 青青草中出视频| 欧美日韩美女精品久草一区二区三区| 天天日天天射天天干| 久久综合日韩亚洲欧美| 熟妇高潮一区二区免费视频| 亚洲天堂中文字幕无码男同| 大香樵伊人网| 天天爱天天韩国日本牛牛牛牛| 我爱大香蕉| 婷婷激情五月综合| 五月天婷婷久久| 999在线电影香蕉| 殴美牲| 日韩一999精品| 91久久久视| 色色综合97| 久久骚| 国产黑白丝在线| 国产999精品久久久| 东北熟女91| 凹凸视频在线一区二区| 亚洲AV麻豆Aⅴ无码电影一| 蜜乳中文字幕a在线| 国内毛片无遮挡国产| 色五天伊人| 在线可观看的黄色网址| 日本在线不卡一二区| 99免费在线视频| 久久久久久久少妇| 97免费视频网| 99re在线视频国产| 少妇熟女视频一二三区| 97超碰欧美精品| 亚洲 欧美 精品专区 极品| 妇女性内射冈站HDWWWCOM| 色五天伊人| 去干网最新版| 日本三级小说中文字幕| 中文字幕久久精品一区| 超碰在线综合97| 野狼福利社区| 少妇人妻好深太紧了vr91| 欧美精品久久久久久久久88| www.99热| 极品内射| 国产又粗又长又大的视频| 男人天堂网站| 亚洲国产一级精品毛一级精品看免费视频| 噜噜噜无码AV一级一级久久影院| 国产精品久久久亚洲一区| 国产乱弄免费在线视频。| 国产久9| 国产精品不卡高清在线观看| 欧美黑人精品在线播放| 中文字幕在线观看视频www| 91色黑人少妇| 舔人妻中文免费视频| 中文字幕av亚洲精品| 91爆操视频| 大香蕉手机在线视频| 欧洲精品久久| 久久伊人最新网址视频| 欧美一区二区观看在线| 精品久久99| 蜜桃香蕉久草精品在线| 黄色片A级一区二区三区| 婷婷久久五月| 97公开久久| 超碰免费人妻在线| 免费强奸av| 2019AV天堂| 精品亚洲天堂| 欧美刺激色黄片免费看| 91精品人妻一区二区三区蜜桃臀| 蜜臀99久久精品| AV一起草在线| 日韩亚洲美女一区久久| 欧美黑人168页欧美黑人167| 欧美性爱综合,免费| 色婷婷久久| 久久精品99久久久久久| 天天夜躁日日躁狠狠2002| 色婷婷视频| 天天干夜夜操一区二区| 亚洲欧洲综合成人av一区| 懂色AV一区二区三区| 久久成人东京热人妻| 亚一综合久久久久久久久久| 91欧美偷拍| 免费试看60秒| 日本污ww视频网站| 夜夜免费视频| 亚洲成人性| 热久久99999| 国产美女在线精品免费看| 国语人妻精彩刺激| 日韩欧美女求操每天更新| 久精品无码av一区二免费国产在线观看 | 啊啊啊啊啊好舒服视频| 人人玩人人添人人澡免费| 一区黄二区黄| 欧美中出| 啊a一区在线| 亚洲色婷婷久久久综合日本| 天天日夜夜爽| BBBBB97COM| 这里只有精品视频| 中文字幕一区二区无码成人| 亚洲高清无码免费观看视频| 后入福利| 中文字幕在线免费观看视频| 亚洲春色欧美| 婷婷丁香五月综合| 婷婷人妻激情| 很很干很很操| 资源新线在线天堂| 久久超碰久| 欧美组图日韩亚洲中文字幕| 97天天爽| 妇女性内射冈站HDWWWCOM| 久久国产精品,久久国产| 日韩中文字幕视频| 精品一区二区麻豆| 国产h片在线观看视频| 青操影院| 亚洲九九夜夜| 超碰97亚洲| 免费看污网站| 亚洲自拍天堂| 久久视频,这里只有精品| 人妻精品视频一区二区| 亚91网| 厕所偷拍在线| 国产精品日韩在线一区| 欧美在线 亚洲| 久久99网站| 亚洲 暴爽 AV人人爽日日碰| 久久做97| 亚洲二区精品在线观看| 狠狠入| 用力操死我| 国产中文精品一区二区在线观看| 偷拍亚洲情色| 禁片 高清 在线观看视频网站| 日韩精品字幕| 老司机福利青青草| 97日视频| 五月香婷婷| 测评在线观看AV| 免费97视频| 屌色在线97视频| 少妇厨房愉情理伦片bd在线观看| 日韩精品人妻中文字有码在线| www…国产操逼| 国内外内射高清视频| 91老熟女老女人国产老太| 中文字幕在线高清男人的天堂| 日韩一级二级三级免费看完整版| 最新av在线| 亚洲色综合| 国产精品无码久久久久2025| 亚洲色欧| 亚洲综合影片| 久99| 超碰在线香蕉| 清纯唯美亚洲综合| 少妇第一页| 免費人妻夜夜爽天天爽爽一区| 日本人人操人人操| 成人精品无码| 后入人妻无码| 一区,二区,三区视频| 亚洲性爱高潮影院| 秋霞免费AV| 在线综合 亚洲 欧美中文字幕| 久久久久熟女| 超碰这里只有精品| ′ !γ}丶。。久久精品欧美一区二区三区 | 中国东北熟女老太婆内谢| 操逼操逼操| 91蜜臀人妻中文字幕在线| 欧美少妇性乱| 九久9热| 免费看毛片操穴| 久久性爱城| 亚洲国产尤物yw在线观看| 少妇久久久| 18精品一二区| 大但人体久久久久| 日韩精品大香蕉伊人在线| 伊人久久亚洲中文字幕| 婷婷中文字幕| 精品少妇一区二区三区在线视频| 日本十八禁免费看污网站| 欧美激情久操网| 999精品女人| 一区二区三区一亚洲中文字幕、综合区灬 | 台湾佬中文娱乐网久久久久久久久久com | 人妻中文字幕精品无码| 午夜美女福利视频| 超碰人妻久久| 亚洲第一页色网| 超碰色美女| 啊啊啊啊在线播放| 热的中文 热的有码 热的国产| 熟女一区二区三区| 东京成人一区| 亚洲色图欧美色图制服丝袜| 亚洲色吧网| 亚洲日本加勒比在线| 舔舔啊| 狠狠操狠狠燥| 91在线一起| 久久有码视频| 欧美久久人体| 91久久国产精品| 香港久久久| 综合亚洲欧美| 91网站18禁| 欧美人妻少妇| 手机看片91人妻| 欧美不卡在线一区二区| 国产兽交视频在线播放| 亚洲欧洲无码bt精品合集| 蜜乳AV免费观看| 在线综合 亚洲 欧美中文字幕| 中国一级操逼视频| 欧美另类综合久久| 国产精品久久久久久久久AV大片 | 九九九九精品在线| 加勒比aⅴ| 97干97色| 收看日本人日bb|