国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線(xiàn)實(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ě)與像素訪(fǎng)問(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ì)以?xún)?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不是必須但例程里訪(fǎng)問(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)用的話(huà)后續(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 三條鏈路都在位。跑不通的話(huà)問(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、像素訪(fǎng)問(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ì)線(xiàn)狀結(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); // 壓縮共線(xiàn)點(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ì)把一條直線(xiàn)上的中間點(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à)窗口會(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è)跨線(xiàn)程的坑取流通常放在后臺(tái)線(xiàn)程但給Image.Source賦值必須在 UI 線(xiàn)程。最省事的做法是后臺(tái)線(xiàn)程只負(fù)責(zé)處理和轉(zhuǎn)換轉(zhuǎn)好的WriteableBitmap通過(guò)Dispatcher.BeginInvoke拋回 UI 線(xiàn)程賦值。BeginInvoke而不是Invoke是因?yàn)橥降却趲矢叩臅r(shí)候會(huì)把后臺(tái)線(xiàn)程拖住反而掉幀。性能上還有一條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 包并清理重建有的話(huà)用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)線(xiàn)程里顯示注意 highgui 的窗口操作要放在同一個(gè)線(xiàn)程里跨線(xiàn)程調(diào)用會(huì)出現(xiàn)更難查的問(wèn)題。5.5 WPF 圖像不更新與跨線(xiàn)程異?,F(xiàn)象后臺(tái)線(xiàn)程更新了 Mat界面上的圖一動(dòng)不動(dòng)或者直接拋「調(diào)用線(xiàn)程無(wú)法訪(fǎng)問(wèn)此對(duì)象因?yàn)榱硪粋€(gè)線(xiàn)程擁有該對(duì)象」。原因WPF 的 UI 元素有線(xiàn)程親和性后臺(tái)線(xiàn)程不能直接賦值Image.Source另一種情況是每幀都賦了新的WriteableBitmap但 UI 線(xiàn)程被別的邏輯占滿(mǎn)渲染隊(duì)列積壓看上去就是不刷新。解決轉(zhuǎn)換在后臺(tái)做賦值用Dispatcher.BeginInvoke拋回 UI 線(xiàn)程WriteableBitmap可以復(fù)用同一個(gè)實(shí)例改內(nèi)容后調(diào)Lock/AddDirtyRect/Unlock比每幀新建省一大截如果幀率還是上不去檢查是不是把耗時(shí)處理放在了 UI 線(xiàn)程。6. 把例程改成自己的工具一條可復(fù)用的處理管線(xiàn)例程的價(jià)值不在代碼本身在它給出了每條調(diào)用鏈的標(biāo)準(zhǔn)寫(xiě)法。真正落地時(shí)把這些散落的調(diào)用收成一個(gè)管線(xiàn)類(lèi)參數(shù)從配置文件讀比每次復(fù)制粘貼強(qiáng)得多。我一般的組織方式是一個(gè)IImageStep接口加若干實(shí)現(xiàn)管線(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)存曲線(xiàn)是否平穩(wěn)、單幀耗時(shí)是否在預(yù)算內(nèi)。這兩步走完參數(shù)才敢往業(yè)務(wù)里帶。血淚經(jīng)驗(yàn)是別在管線(xiàn)里做隱式轉(zhuǎn)換。初期為了省事我在某一步里直接把 BGR 當(dāng) RGB 處理單測(cè)看不出來(lái)上線(xiàn)后所有顏色判定的閾值全偏排查了大半天。從那以后我每接一個(gè) C# 視覺(jué)需求都會(huì)先把中間結(jié)果落盤(pán)、把每步耗時(shí)打出來(lái)再談?wù){(diào)參。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲情色 自拍| 黄色不卡视频| 91c色| 午夜福利国产欧美日韩夜夜| 性暴力欧美猛交在线直播| 久久中文字幕女同性恋一区| 变态综合色| 国产亚洲精品美女| 亚洲精品不卡一二三区| 欧美一级A片不卡视频。| 日韩中文字幕2020| 久久精品视| 99热日| 情色图区| 国内偷自视频区视频综合 | 麻豆美女丝袜人妻中文| 精品中文字幕第一页| 免费a级毛片av无码久久精品中文字幕| 中文字幕国产| 天天摸,夜夜摸| 国产风韵犹存熟妇三区| 大二网站亚洲| 色婷婷丁香五月| 天天情欲宗合网| 蜜臀久久99精品久久久电影| 性色av蜜臀av色欲aV| 色哟哟-国产专区| 啊啊啊轻点在线观看| 久久精品国产精品一区| 九九久久首页| 91青青在线| 国模无码人体一区二区三| daxiangjiao你懂的| 欧美一区二区一级岛国大片| 破处bbq| 熟女日韩| 屁股久久久久久久久久| 九九色逼| 日本操逼无码| 超碰无码加勒比| julia中文字幕在线观看| 久久久久幕乱码| 亚洲国产成人精品女人久久久| 日本五十路熟女一区二区| 欧美性生活内射| 超碰色男人操熟女| 日韩人妻丝袜美腿中文| 日韩高清黄片| 精品综合久久久久久97| 激情五月综合| 国产精品福利视频播放| 亚洲性图91| 90后性网国产欧美| 国产精品白领在线观看| 北京专精特新企业招聘信息| 欧美爆乳精品一区二区| 97在线青| 日韩AV一区二区三区四四| 97超碰jingpin| 尤物av网站免费在线播放| 亚洲熟女乱熟乱熟妇综合网二区| 精品国产肉丝袜在线拍国语| 色婷婷国产精品一区在线观看| 97欧美精品综合| 亚洲欧美日韩精品久| 伊人超碰97| 久久一二区四| 国产精品色片一区二区| 久久这里只精品免费福利| 老女人爆菊| 97精品久久久久久久| 蜜臀AV秘一区翔田千里| 亚洲国产亚洲天堂| 欧美亚州综合图片| 欧美第38页| 天天色综亚洲91污| 天天做日日爱夜夜爽| 亚洲熟妇综合久久久久久| 亚洲精品影视老司机| 女生久久网| 欲色啪| 97超碰逼| 97色欧州| 久久水蜜臀亚洲AV无码精品| 五月香婷婷| 国产一区免费午夜视频| 久久久无码精品人妻二区 | 99re在线视频这里只有精品| 欧美黑人91| 激情亚洲天堂| 亚洲日产专区| 欧美性天天影视| 色婷婷亚洲婷婷| 免费黄色片子| 亚洲同性aV综合| 蜜桃臀 后入 一区 二区 三区 在线| 精品人人插人人操| 久久婷婷五月| 国产伦精品一区二区三区在线观| 大色综合网| 日本一区二区三区午夜观看| 欧美日韩黄片精品在线| 探花精品 一区二区| 9久9久| 精品久久久久,69国产成人精| 国产这里只有精品| 手机看av网站在线看| 思思热免费视频观看| 久久久久亚洲Aⅴ无码| 亚洲精品人妻吞精av| 伊人久久婷婷| AV一二区| 日韩人人精品| 国产成久久综合片| 天天色,天天干,天天干| 99自拍视频在线观看| 98色网| 欧美一二在线| 91国产伊人大香蕉| 操屄日韩| 日韩欧洲操屄视频| 日韩精品一区二区三区色欲| 日韩成人午夜精品久久高潮| 夜夜夜久久| 爱爱久久| 日韩欧美操逼xxx| 亚洲国产麻豆一区二区三区 | 呦呦影院| 亚洲五月婷| 天天肏美女| 日韩欧美中文字亚洲慕| 粉嫩av平台| www.大香| 91蜜臀在线久久久久| 图色综合网| 无码人妻毛片丰满熟妇精品区| 久久激情视频| 精品无码久久久久| 亚洲精品自拍| 99综合免费视频| 97超碰总站| 蜜臀久久99精品久久久老,,| 高潮内射在线| 中文字幕AV中出| 色色福利| 亚洲黄色网址| 欧洲综合无码| 欧洲射精91| 91丝袜美腿片| 日韩在线一区二区| 青青色综合| 国产欧美成人精品| 黑人狂躁日本妞一区二区三区| 岛国福利在线精品播放| 日本九九久久99播| 99re在线视频国产| 国产精品视频精品一二| 久久综合女优| AV色女综合| 精品无码久久久久久久久果冻糖心 | 色牛aV| 啊视频在线| 亚洲久草AV色图| 留下AⅤ黄色片| 女上位精品在线| 无码人妻丰满热妇又大又粗| 极品少妇久久久久| 日韩丝袜二区| 亚洲情色 自拍| 久久综合九九| 91色伦| 在线性黄高清免费视频| 亚洲丝袜少妇在线| 日韩人妻资源在线看| 中文字幕一区二区三区50路| 极品白嫩美女白浆成人福利在线看| 美国三级日本三级久久99| 超碰AV在线| 久草在| 欧美日韩第一页| 超碰97网站| 天天天天天天天天综合| 五月婷婷大香蕉| 在线观看亚洲成人精品| 992大香蕉| 国产免费大片| 亚洲av影院在线观看| 色妇综合网| 超碰人妻中文在线| 日本3级一区二区免费| 蜜臀AV一区二区三区| 爽爽淫人网| 久操婷婷| 天天欧美| 99re8超碰| 欧美国产日韩高清在线| 免费操逼91| 亚洲精美粉嫩嫩泬在线观看| 欧美性爱一内片一区二区三区| 日本久久超碰| 极品白嫩美女白浆成人福利在线看| 欧美亚洲天天| 日韩色女精品| 欧美成人综合| 中文字幕精品丝袜| 99在线精品视频| 日本福利二区视频| 亚洲91在线播放影院| 东北女人操逼| 精品十八在线观看| 欧美操逼录像国产黄色国产| 2017大香蕉国产精品久久| 久久久久ab| 国产传媒美日韩av| 肉丝网站91| av中文在线| 亚洲系列第一页| 女性91网站| 性综合网| 国产高清成人免费视频| 欧美色www亚洲国产阿娇要播| 中文字幕欧美日韩三级| 极品美女嘿咻| 麻豆精品三区视频| 青青草依人大香蕉| 亚洲风情在线观看| 精品一区二区国产日韩| 日本欧美一区二区三区免费| 亚洲精品日韩国产欧美| 女优免费一区二区永久| 一本一道波多野毛片中文在线| 超碰97玖玖爱| 亚洲 中文 欧美 日韩 在线| 女人香蕉久久毛毛片精品| 人人操人人肉久久精品| 91在线秘 男同| 久久东京伊人一本到鬼色| 国产懂色精品国产av| 久久精品99| 一二三四日本视频高清| 91在线丝袜视频| 91老熟女91老女人| 超碰免费97| 国产精品日韩在线一区| 中文字幕一区二区日韩网| 91色色网站| 国产成人无码a| 久久久久九九九| 精品精品精品| 日韩无码服务区| 欧洲亚洲国产综合在线| 婷婷色网| 少妇国产不卡| 啊啊啊免费视频| 欧美另类综合久久| 国产女上位好爽在线| 999九九精品| 日本二区不卡| 风流老熟女一区二区三区l| 日本女人操逼| 日韩欧美蜜桃精品久久中文字幕久久 | 亚洲AV资源| 久久宗合亚洲| 欧美日日操| 免费操逼视频下载| 茄子社区国产精品| 嫩草影院在线观看精品| 91丝袜美女| 国产精品丝袜在线| 欧美日韩性爱视屏免费看了| 蜜臀久久久国产| 欧洲综合无码| 99亚洲精品| 久久九九97| 操操逼操操逼操操逼逼| 免费强奸av| 射丝袜高跟鞋99| 国产激情在线| 日韩卡一卡二卡三在线| 免费看A片毛毛片在线播| 中文字幕 一区二区 亚洲无码| 奶水 人妻 哺乳 在线| 95自拍视频在线观看| 黄色乱论网站| 日韩熟女操逼| 色婷婷aV一区二区三区麻豆综合| 欲色综合| 成功精品影院| 八戒无码国产午夜福利| 日韩精品三区四区| 操迟操逼在巾线Fre看| 97日视频| 韩国一级婬片A片AAAAA| 蜜臀99久久精品久久久久久| 色婷婷激情| 情色五月天久久久| 日本成人A片免费看| 日韩在线电影| 久久久久久亚洲Av无码精| 超碰色97| 欧美精品久久96人妻无码| 欧美色色色| 伊人一区二区三区| 超碰在线99| 神马久久久久久久| 超碰天天久久79| 亚洲第一在线视频| 蜜臀久久99精品久久久| 九久9热| 园内精品自拍视频在线播放| 国产精品色哟哟| 美女自卫慰黄网站免费| 国产美女销魂在线观看不卡| 操久久久久久| 亚洲无吗在线视频| 97综合国产| 中文字幕视频免费| 校园春色欧美色图| 91在线精品| 欧美人妻少妇| 射丝袜大香蕉| 99精品在线观看| 亚洲精品一二牛牛| 深夜激情| 国产青青美女玩逼视频| 久久伊人影院| 少妇xx精品| 欧综合网| 91精品国产乱码| 综合日本女人伊人| 九九精品99| 亚欧中文字幕在线视频| 国产福利夜| 91 丝袜在线| 黄骗免费网站| 国产精品嫩草影院午夜两性| 久久透逼视频| 日本成人A片网站| 操逼操逼逼操操逼91 | 91亚洲欧美| 人人操人人爽人人操人人| 日本αv| 国产欧美精选自拍一区| 亚洲精品国产熟女| 亚洲综合在线视频| 色女99一级片在线观看| 久久久一区二区| 88在线一区二区三区| 夜夜爽夜夜操| 日韩Va亚洲va欧美Ⅴa久久| 五月丁香综合啪啪| 不卡人妻少妇精品毛片一区23区视频| 亚洲97成人在线观看| 人妻蜜桃臀| 人妻少妇被猛烈进入中| 日韩少妇丰满亚洲| 欧美特大黄一级片片免费| 免费日韩黄片| 麻豆综合一区av| 一区二区娱乐网站| 国产视频一区二区三区在线免费观看| 久久久久久人妻一区精品色欧美| 岛国网址国产 | 99超碰网| 久久久亚洲Av| 天美av在线观看| 九一性生活免费视频| 欧美色图亚洲色| 少妇干B| 日韩无码黄色片| 中文字幕一区二区三区高清| 熟妇高潮二区三区| 青椒国产97在线熟女| 色综合久| 97超碰69| 97视频免费播放| 夜夜爽爽爽| 玖玖久久久| 淫荡网址| 精品无码一区二区| 久久啊哟| 色悠久久久av| 91精品国产91久久青草| 国产青视频| 国产人人干| 欧美性爱超碰97| 粉嫩av平台| 国产亚洲色婷婷久久99精品91葵花宝典 | 麻豆国产尤物AV| 中文字幕人妻色偷偷久久皮| 日本一级二级三级网站| 啊啊啊啊啊操我视频| 亚洲天天影视色综合| 国产高清自拍视频| 五月丁香色婷婷| 中文字幕久久亚州无码| 精品日韩人妻精品一二三区| 天天干,夜夜爽| 91女优在线观看| 清纯唯美综合| 欧美精品自慰系列寂寞少妇| 91欧美丨精品丨入口| 日日摸天天爽夜夜欢| 久草免费福利在线播放| 日本久久久久久久久| 天天操熟妇| 伊人网青青| 91久精品| 欧亚无码视频| 自拍第一页| 91在线丝袜| 日本黄大片在线观看视频| 成人 日本A片无码8888| 欧美美女在线高潮999| 人人妻人人玩人人澡人人爽| 无色无码| 欧美草草| 99热久| 丁香婷婷色五月| 国产第11页| 三级AV入口| 人人人人人人少妇| 91蜜臀人妻中文字幕在线| 日本十八禁免费看污网站| 偷窥自拍亚洲色图| 午夜福利无毒不卡| 婷婷五月天色网| 丁香五月天堂| 被窝影院午夜看片无码| 狠狠干91| 99操99| 精品欧美老熟女一二区| 欧美97日韩精品| 99久久久无码国产精品性男| 伊人久大| 淫妻综合网| 欧美天天影院| 中文字幕一区二区三区蜜臀| 日韩欧美成人性爱在线| 日比av无码| 伊人亚洲综合| 久操99| 久久久久久久久久久免费精品| 热的中文 热的有码 热的国产| 操逼逼无码| 综合第一页| 亚洲黄片免费在线播放| 亚洲啪啪啪啪视香蕉| 思思热在线| 久久透逼视频| 九九九网站| 激情综合网一盗摄| 淫淫总合网| 岛国视频免费在线观看| 综合亚洲欧美精品日韩?v| 97在线资源| 麻豆区99999| 日本高清一区二区在线| 九九精品99| 久久精品一区二区一8| 91丝袜人妻| 亚洲一二三四区在线免费看视频| 国产九九久久久精品| 成人日韩3| 亚州性色| 中文字幕欧美丝袜07资源| 美女91色黄18| 色婷婷久久综合超碰| 97视频观看| 国产综合久久久麻桃个 | 国产怡红院在线| 日日橹狠狠爱欧美超碰| 另类图片五月| 天天干2019| 青草青青久久久久久国产| 色情乱伦AV| 操逼视频亚洲| 日韩性爱网址| 婷婷九月色| 婷婷亚洲五月***久久| 熟女精品va中文字幕| 性开放中文AV高清无码免费看| 国产一区二区三三视频| 亚洲综合中文字幕有码| 国产成人亚洲精品自产在线| 长长久久免费视频| 五月天婷婷成人网| 91蜜臀在线久久久久| 999久久久久久久精| 亚州综合AⅤ| 青娱乐 成人娱乐在线| 九九久久久九九| 天天综合网日韩| 亚洲999综合| 91伊人久久在线| 欧美三级偷拍| 婷婷干黄色| 欧美日韩中文亚洲v在线综合| 3D污黄视频在线观看| 国产 丝袜 欧美中文 另类| 人妻22p| 四虎永久在线精品免费网址| 欧美中字不卡| 亚洲在线网站| 五月天婷婷色| 激情婷婷丁香网| 色操逼网| 91狠狠综合久久久久久| 人妖欧美一区二区| 中文日本免费高清| 欧美一区二区三区互相| 天天插天天射| 国产中文日韩欧美一区二区三区人妻丝袜美腿| 亚洲人成网站7777| 国产精品无码在线| 亚洲在高跟鞋自慰久久在色线| 天天射天天色成人| 黑人与人妻| 另类欧美色| 国产高清成人mv在线观看| 蜜臀av中字字幕网站| 男人天堂久久精品不卡| 黄色免费一级在线毛片| 日本三级中国三级99人妇网站| 国产最新AV| 久久大香蕉97| 无码免费精品高清| 九九九九九九视频| 久久久女人| 欧美一级黄色免费专区| 久久欧美按摩999| 变态另类专区| 亚欧高清v| 无毛精品| 亚洲欧美日韩综合在线尤物| 久久精品99久久久久久| 久久一级无码精品毛片6| 香一区二区三区| 久久超碰网| 99RE在线视频精品,这里只有精品| 久jiu久神马影院| 天天狠操| 99热成人| 综合97亚洲| 97五月天| 亚洲操人| 91社操逼| 亚洲欧洲综合av在线| 97免费在线观看| 欧美激情黑人| 亚洲色图欧美一区二区不卡| 男人的天堂午夜av| 无色无码| 色区97| 99热8| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 欧美巨大性舒爽顶到了| 91成人无码| 国产成人五月天丁香花| 亚洲激情深爱文学小说网站| 色网综合网| 91 丝袜在线观看| 日欧毛片久久| 欧美性,亚州色| 75大香蕉| 综合干干干av久久久综合网| 天天综合网91入口| 99色婷婷中文字幕乱色| 久草资源在线视频官方总站日韩丝袜美腿 | 少妇超碰在线| 亚洲男人天堂Av| 狠狠操狠狠插| 日本亚洲vr欧美不卡高清专区| 久久久免费一级黄片| 8050午夜少妇无码| 五月天激情四射| 狠狠色综合网| 99精品视频在线观看| 国产精品一二三区福利| 色五月网址| 首页亚洲国产高跟丝袜诱惑视频| 中文字暮97| 伊人大香蕉在线| 天天综和| 亚洲欲| 久久久久大香青草精品综合| 无码人妻丰满熟妇区毛片| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 极品白嫩美少妇在地板上位骑射淫水泛滥| 精品午夜福利| 内射小黄片| 无码国产精品96久久久久孕妇| 无码高清操逼| 麻花豆传媒剧国产MV出差| 黄色欧美性爱视频| 色激情五月天| 欧美亚综合色图| 精品久久大胆人体| 久久精品无码熟妇一区二区三区视频导航| JuliaAnnXXX888| 97久久网| 国模不卡| 色盈盈影院| 亚洲棕合电彰| 一区二区无码视频| 国产隔壁老王影院在线| 青青青草原| 97chaopengongkai| 亚洲 小说 欧美 激情 另类| 欧美经典一区二区三区| 欧洲在线性爱视频| 国产精品久久久午夜夜伦鲁鲁| 欧美少妇人妻| 91精品伊人久久久大香线蕉91| 国产白嫩精品久久| 超碰97久| 午夜寂寞欧美| 欧亚乱色熟女一区二区| 成人资源中文字幕在线观看天天| 日韩av色图综合| 夫妻AV网站| 翔田千里爆乳巨臀无码| 亚洲 欧美 手机在线观看| 人妻激情另类| 美女的肌被草喷水视频| 成人欧美日超碰| 啪啪视频免费在线观看| 久久久亚洲欧美综合| 天美传媒国产原创中文字幕亚洲欧美另类 | se吧提供国产乱老熟视频胖女人| 国产黄色av大片网站| 日产国产精品中文久久婷婷| 无码人妻丰满熟妇区毛片| 日本一区二区亚洲综合| 波多野结衣被操50分钟免费视频 | 在线综合 亚洲 欧美中文字幕| 婷婷丁香六月| 亚洲精品1区| 国产极品馒头逼| 中文字幕日本久久| 男生女生啊啊啊啊| 成人怡红院| 国模吧 一区二区三区| 飘花国产午夜精品不卡| 爱射综合| 久久是精品| 国产精品区在线12p| 夜夜嗨AV一区天天| 精人妻无码一区二区三区伊人直播 | 精品人体无圣光凹凸| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 国产91精品福利在线| 五月丁香影院| 亚洲AV人人澡人人爱| 亚洲欧美精品国产一区二区| 欧美精品在线观看| 清纯唯美综合| 亚洲操逼无码| 国产久久男人天堂| 久久亚州精品成人Av无| 日本三级小说中文字幕| 99re99| 日韩av乱伦| 91视频女生| 色色香蕉| 老女人老91妇女老热女| 成人乱人伦一区二区| 99热精品青草在线 | 91色艳| 97国产|免费| 强奸乱伦AV网站| 婷婷五月天AV| av草草在线电影| 26UUU欧美激情一区二区| 国产精品制服丝袜中文字幕日韩一区二区三区 | 加勒比海成人视频网| 日韩在线欧美精品一区二区| 北条麻妃99精品青青久久| 美女啊啊啊啊啊啊| 日韩AV片| 久操精品| 麻豆区99999| 无码动漫av中文字幕| 丝袜狠狠草尤物人妻av91| 午夜男女爽爽爽在线视频| 日本精品一区二区三| 手机看片1025| 九九热精彩视频| 嗯嗯啊中文字幕| 免费看欧美美女黄色大片| 国产日韩欧美操逼视频| 五月婷在线| 亚洲图片 欧美电影| 天天影视综合色| A片三级无码| 夜夜嗨一区二区三区三州加勒比| 亚洲中文国际强奸字幕 | 玖玖人人爱| 久操视频在线观看| 丁香六月婷| 天天狂操夜夜狂日| 久久亚洲影院一区二区| 9美女超碰在线免费观看| 国产伦乱91| 国产精品伦理| 91在线综合网| se吧提供国产乱老熟视频胖女人| 在线一区| 亚洲精品日韩国产欧美| 偷拍 亚洲 欧美| 天天亚洲综合| ji熟女.com| 亚洲综合伊人| 欧美综合骚| AV一区观看| 久男人久久| 97超碰国产亚洲精品资源| 亚洲欧美色图| 久久超碰98| 国产自偷自拍一区| 午夜福利 成人 91| 欧美色997| 国产一区二区三区白丝| 国产人妻精品一区二区三区秋霞 | 高精欧美色| 国产精品白虎| 欧美国产欧美在线观看| KK色在线影院| 十八禁网站在线| 在线观看日韩av不卡| 国产高清成人免费视频| 精品久久九| 天天色播| 老司机天天操| 超碰欧美COM| 九九九久久久久| 园内精品自拍视频在线播放| 欧美偷拍| 伦在线97| 淫妻综合网| 人人操人人插人人摸人人干| 国产精品日日摸天天碰| 人人喜人人妻| 91成人高清在线观看| 麻豆色约约| 久久的网站啊啊啊啊啊| 国产尹人在线视频免费| 91精品人妻偷情| 国产久久日| 欧美第一页性| 亚洲成人无码影院| 水多多映视AV| 成人资源中文字幕在线观看| 精品久久久久瑟瑟| 色色色五月婷婷| 亚洲毛片一级带毛片基地| 日韩在线国产字幕| 欧美在线电影| 亚洲αv一区二区三区| 美女被啪到深处抽搐视频| 97人妻人人躁人人玩人人| 色 婷97| 欧美麻豆成人同性GⅤ在线| 免费久久一级毛片大黄| 欧美 色 亚洲| 久久精品91| 少妇天堂网络| 五月婷婷基地| 1024人妻熟女一区二区三区| 天天操天天舔| 久久网亚洲| 欧美伦乱爱| 大香蕉伊人亚洲| 久99| 97人人操人人干| 日韩在线观看字幕精品| 上海一级黄片| 欧美激情视频在线一区| 国产日韩精品suv| 中文字幕制服诱惑| 精品熟妇视频一区二区| 亚洲日韩久久精品一区| 天天操天天日青青草超碰av| 丰满少妇精品一区二区| 啪一啪免费视频| 亚洲瓯美色图| 最新日日夜夜天天干干| 日韩欧美女求操每天更新| 国产精品白丝在线播放| 物尤视频一区二区| 性色高清在线| 天天操女人| 国产欧美日韩在线观看麻豆传媒公司| 色综合网1| 日韩精品视频在线观看一卡二卡| 污污汅18禁网站在线永久免费观看| 最新亚洲黄色免费电影| 久久久久久九| 国产欧美另类久久久精品课程| 九九九九九九免费视频| 天天操天天日天天干| 色女网日韩| 夜夜中出国产| 按摩中文字幕| 亚洲大色堂| 夜夜福利| 日韩av电影网站| 激情四射婷婷六月天| 久久九九精品一区二区| 后入日本1234| 综合性视频99| 90后后入| 麻豆一区二区AV天美| 91亚洲网站| 夜夜做夜夜爽精品视频| 亚洲骚男同com| 色五月激情AV在线| 日韩综合97P| av一区二区三区不卡| 亚洲成人激情小说视频| 中文字幕一区二区三区50路| 久久青青草在线视频| 97伪v| 青青草无码视频| 日韩三级在线观看mp4| 欧美色图成人网一区二区| 蜜臀精品1区2区| 60秒试看最爽10分钟网站| 插老姨肥穴| 呦女网站| 日韩久射综合| 蜜臀一区二区三区在线| 色哟哟511老熟女| 欧美网站免费| 大香蕉av在线| 99色综合| 和协无码影院| 欧美大干日韩| 青娱乐手机日韩在线视频| 久久网亚洲| 亚州性9| 夜夜草天天| 91足交| 97五月天| 岛国人妻少妇av在线观看| 九9热伊人| 激情小说激情视频| 成人午夜高潮av猛片| 国产高清26uuu| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 亚洲国产成人精品999| 日韩成人在线性爱视频| 1024人妻熟女一区二区三区| 五月色综合| 日韩丝袜高跟制服在线观看| 91国产丝袜白虎| 国产高清成人免费视频| 盗摄女人妻在线| 性色乱AV一区二区| 成人精品水蜜桃久久久久久久| 中文字幕乱妇免费视频| 日韩激情毛片一级久久久| 九九热最新| 91成人国产综合久久精品蜜月| 中出789在线视频| 新91视频.cmp| 欧洲亚洲国产综合在线| 国产无马视频| 97精彩视频网站| AV男人天堂网| 免费αV在线视频| 屌逼麻豆| 看看日B真人视频| 97色碰| av一区二区三区 中文| 日韩电影天堂视频一区二区| 91天堂| 377p欧洲日本亚洲大胆| 91狠婷| 免费视频观看60秒| 亚洲天堂一区二区久久| 盗摄 精品 另类 一区| 国产一区二区久久| 丁香婷婷激情五月天无毒不卡 | 香蕉黄色一级视频| 久久久一级| 强乱老妇中文字幕| 金莲网址| 传媒免费一区二区三区| 试看日韩黄片| 懂色AV一区二区三区| 91视频综合在线| 人人搞人人插人人操| 六月丁香五月婷婷| 男人天堂导航| 美國A片| 神马久久久久久久久久| 97干97色| 欧洲无码一区二区| 国产97av| 免费AV中文网在线观看| 欧美99| 女人天堂网| 啪啪资源网| 国产一区麻豆免费观看| 91日韩国产欧美亚洲另类精盘州至城都| 俺去啦俺来也久久综合| 黑丝少妇麻豆| 国产9区| 99热免费| 五月天人妻综合| 国产欧美日韩在线不卡第一页| 色性荡荡荡荡视频| 91爱网| 色综合色欲色综合色综合色综合| 天天内射| 无码操逼视频一下| 亚洲色欲一区二区三区| 中文字幕乱码在线| 免费看毛片操穴| 超碰人妻97| 亚洲欧洲另类| 人人操人人摸超碰| 欧美色偷拍| 久久少妇| 丝袜喷水在线| 东京热天堂网| 蜜臀久久一区二区| 久久久久女教师免费一区| 99热这里只有精| 亚洲精品久久久久久| 国语av最新自产拍在线观看| 91亚洲不卡一区| 国产精品原创巨作?v网站| 啊啊啊啊啊好大好舒服想要| 老司机深夜18禁污污网站| 日韩精品第3页| 夜夜天天噜狠狠爱2021| 美女骚尻视频| 99久久精品国产高潮| 偷拍新久久| 色色色五月婷婷| 色牛aV| 蜜桃不卡一区二区| 777AV电影| 亚洲AV在线资源| 一起草精品人妻| 蜜桃AV天堂| 超踫中文字幕| 狠狠躁伊人中文字幕| 区日韩亚洲乱码av电影| 亚洲欧美高清无码| 操少妞在线视频| 大香蕉黄色一区| 人人妻人人爽一区二区三区| 欧美|91色综合| 日本狂喷奶水在线播放212| 91网站18在线观看| 精品国产人成在线| 天天色踪合| 久9视频| 日本孕妇一区二区视频操逼免费看 | 玖玖草久草99蜜月一区二区三区| 国产一区二区在线电影| 亚洲欧美91√| 色青青久久影视| 综合网 欧美| 日本熟妇精品九九| 人妻久久久| 亚洲无码超碰免费| 97爱亚洲| 精品人成视频在线观看| 91精品人妻一品二品三品| 91精品国产91熟女| 四虎影视精品| 另类小色呦| 凹凸视频在线一区二区| 色大香蕉97N| 狠狠色婷婷7777久| 国产对白刺激视频| 亚春色色| 亚洲情色一区综合| 一级久久久久久久久久久 | 久久是精品| Av色五月| 亚洲av强奸乱伦| 黄色片一区二区三区四区五区| 91激情国产| 91久久久久久久| 国产毛片在线| 9Ⅰ超碰| 国产AV人人 夜夜人人澡| 欧美成人一级免费电影| 精品久久久久久久| 中文幕97| 中文字幕高清20页视频| 久久婷婷综合国际产色怕| 97香蕉网| 九色 人妻 大香蕉| 久久人人爽人人爽人人片Ⅴ| 国产AV色黄看到爽| 亚洲在线a| 91N综合网在线| 久草精品国产蜜臀| 日韩成人精品中文字幕| 麻豆国产精品午夜视频| 欧美图片色五月天| 欧美72网页| 男人天堂站| 女人爽到高潮久久久| 思思热er精品视频| 国产高清精品一区二区三区毛片| 欧美色人| 日本黄色精品| 国产一区麻豆免费观看| 骚货| 99色婷婷| 操99| 九九精品无码专区免费| 日韩熟女精一区二区三区不卡| 欧美人妻一区二区| 啊啊啊好疼| 国产白嫩精品久久| 亚洲成人碰碰| 亚洲色色色| 久久男女激情视频网站| 性爱视频免费网址| 国产老太乱伦一区| 久久久青青草| 玖玖爱视频网站| 欧美色老汉| 亚洲欧美综合网站| 亚洲精品丝袜-不卡成人免费…… 久久久久成人蜜桃精品 | 久久久久久亚洲中文| 亚洲本色精品一区二区久久| 日韩欧美传媒一区国产| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 中文熟女五十乱码在线| 伊人国产视频| 亚洲色图加勒比| 观看免费区二区三区二| 久久久久9| 新版天堂中文资源8在线| 操www| 人人干黄色| 亚洲天堂五月天国产| TS人妖另类精品视频系列 | 97天天| 男人天堂资源| 91观看 国产白丝| 久操视频这里只有精品| 久久久久久久国产| 日韩精品怡红院| 亚洲天堂人人妻| 国产久久男人天堂| 日韩专区久久久| 9精品久久久久| 97久久超碰日韩精品| 亚洲一区中文字幕| 久久久久久久唑| 91天天综合日韩欧美| 人人操人人摸人人骑| 电家庭影院午夜69久久夜色精品国产69乱| www欧美91| 久久大黄片| 两女互慰AV高潮喷水在线观看| 日韩有码中文字幕女同性恋| 欧美精品庄| 超碰在线一区二区| 伊人96在线| 四虎精品亚洲| 欧洲一区二区三区四区在线观看| 国产AV天美传媒一区二区三区 | 久久9久久| 午夜性| 日韩精品99999| 国产精品人妻熟女aⅴ| 国产亚洲深夜激情| 人妻9117c| 东京热男人天堂| 色狠人在线99| 屌色在线97视频| 在线观看AV片| www四虎| 三上制服丝AV| 男人的天堂久久狠| 欧美se综合| 干少妇视频| 亚洲日韩精品久久久久一区壹牛| 人人妻人射| 亚洲av综合色区无码一| 手机看片1024你懂的国产| 色综合色色| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 天天操天天干一区二区 | 国产精品扒开腿做爽爽爽视频| 91伊人久| 三级三久久线久久99久目本WW| 免费一级欧美片片线观看| 伊人综合色网| 亚欧洲一区二区视频| 亚欧洲日韩国产精品| 国产又色又粗又黄又爽| 久久久久久久久久va| 久久一级无码精品毛片6| 25国产精品免费观看| 久久久穴999| 九九热男人天堂| 人妻内射一区二区在线视频| 97免费视频在线| 免费伦费视频在线观看| 欧美综合自拍成人自拍第二十页| 色五月69夫妻| 国产sv美女内射| 午夜AV人气不卡| 久久精彩视频| 99色婷婷中文字幕乱色| 另类图片五月天| 久久精品国产亚洲AV清纯| 精品成人av一区二区三区在线| 亚洲欧美日韩有码| 国产又大又粗又长视频| 日韩中文字墓| 操操啪| 97就爱干| 国产成人欧美精品在线| 中文字幕123| 偷窥自拍亚洲色图| 老熟女综合网| 日日日日做夜夜夜夜无码| 91美女视屏| 久久九操在线观看| 东京太热男人的天堂久久久| 欧美成人一级免费电影| 亚洲精品天天影视综合网| 酒色综合网| av网站国产主播在线| 亚洲精品三| 东北女人av| 高清无码学生妹高潮| 黄色片一区二区三区四区五区| 影音先锋中文字幕日本好一区二区| 久久9亚洲| 天天噜| 夜夜操狠狠操| 又黄又硬又粗又长国产视频| 日韩欧美午夜一区二区| 久久xxxx| 黑白配性爱AV成| 欧美日韩国产三级黄色| 中文字幕88av在线| 午夜国产综合视频在线观看 | 中文字幕老熟妇黄色视频| 在线观看啊啊啊啊啊| 人人摸人人叼| 91激情网| 午夜超爽| 求求你操操我| 成人av福利在线观看| 欧美九九爱|