久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

C#聯(lián)合Halcon多相機(jī)OCR實(shí)時(shí)采集:上位機(jī)方案與踩坑指南

C#聯(lián)合Halcon多相機(jī)OCR實(shí)時(shí)采集:上位機(jī)方案與踩坑指南 簡(jiǎn)介需要快速搭建多相機(jī)OCR實(shí)時(shí)采集上位機(jī)的C#與Halcon開(kāi)發(fā)者可直接使用這份完整工程代碼。解決方案圍繞四相機(jī)同步采集與OCR識(shí)別展開(kāi)包含圖像獲取、窗口顯示及ROI區(qū)域生成等核心操作代碼中可見(jiàn)GetImageSize、SetPart、DispObj、GenRectangle1等Halcon算子調(diào)用便于理解聯(lián)合編程流程。壓縮包共100個(gè)文件約2.54MB主要包含C#工程源碼34個(gè).cs、編譯運(yùn)行所需的動(dòng)態(tài)庫(kù)14個(gè).dll、項(xiàng)目配置與資源文件resx、resources、config、xml等同時(shí)附有調(diào)試符號(hào)文件pdb和數(shù)據(jù)庫(kù)腳本sql工程結(jié)構(gòu)采用Models、DAL、TDDSE等多層劃分適合直接打開(kāi)、修改與二次開(kāi)發(fā)。已有1865人學(xué)習(xí)使用適合需要快速驗(yàn)證四相機(jī)OCR方案并完成上位機(jī)落地的相關(guān)技術(shù)人員。1. 4 個(gè)相機(jī)同時(shí) OCR 實(shí)時(shí)采集這套 C# 聯(lián)合 Halcon 的上位機(jī)方案解決什么問(wèn)題一條產(chǎn)線(xiàn)上四個(gè)相機(jī)拍同一個(gè)工件的四個(gè)面或者拍四個(gè)工位每一幀都要把銘牌、序列號(hào)、批號(hào)這些字符實(shí)時(shí)讀出來(lái)交給上位機(jī)判定和存檔。這是 C# 聯(lián)合 Halcon 做多相機(jī) OCR 實(shí)時(shí)采集最典型的場(chǎng)景Halcon 負(fù)責(zé)取流、預(yù)處理和 OCR 識(shí)別C# 負(fù)責(zé)界面、線(xiàn)程調(diào)度、結(jié)果對(duì)齊和落庫(kù)兩邊各干各擅長(zhǎng)的部分。標(biāo)題里那種可直接運(yùn)行的 Camare 壓縮包本質(zhì)上就是把這套流程封裝好拿到手改相機(jī) IP、改 ROI 就能跑。別對(duì)可直接運(yùn)行抱太高期待所謂直接跑前提是你的相機(jī)型號(hào)、Halcon 版本、.NET 平臺(tái)位數(shù)和作者當(dāng)時(shí)的環(huán)境一致否則第一步就會(huì)卡在 OpenFramegrabber 報(bào)錯(cuò)上。這套方案適合兩類(lèi)人剛接手機(jī)器視覺(jué)上位機(jī)開(kāi)發(fā)的 C# 工程師需要快速理解 Halcon 在 C# 里的調(diào)用模型和 4 路相機(jī)并行的基本框架以及已經(jīng)用 Halcon 做單相機(jī)檢測(cè)、準(zhǔn)備擴(kuò)展到多相機(jī)的視覺(jué)工程師想看看別人把線(xiàn)程、隊(duì)列、OCR 結(jié)果對(duì)齊做成什么樣。下面按「選型 → 最小代碼 → 并行框架 → 踩坑 → 調(diào)優(yōu)」往下講每段都可以照抄。2. 選型先于編碼Halcon 調(diào)用方式、4 路相機(jī)連接與 OCR 模型怎么定2.1 C# 調(diào)用 Halcon 的三種姿勢(shì)HDevEngine、導(dǎo)出代碼與 HALCON.NETC# 和 Halcon 協(xié)作常見(jiàn)做法有三種選錯(cuò)后面全在返工。第一種HDevEngine 方式。Halcon 腳本存成 .hdev 或 .hdvpC# 里用 HDevEngine 執(zhí)行。好處是算法改動(dòng)不用重新編譯 C# 工程視覺(jué)工程師改完腳本你直接生效壞處是變量來(lái)回傳遞麻煩每個(gè)圖像變量和設(shè)備句柄都要通過(guò) SetInputIconicObject 塞進(jìn)去多相機(jī)場(chǎng)景里這種反復(fù)拷貝很浪費(fèi)而且調(diào)試時(shí)錯(cuò)誤棧隔了一層定位慢。我不建議在 4 路實(shí)時(shí)采集上用這種方式。第二種導(dǎo)出代碼方式。在 Halcon 的 HDevelop 里把寫(xiě)好的腳本通過(guò) File - Export 導(dǎo)出成 C# 文件得到一個(gè) HDevelopExport 類(lèi)里面每個(gè)腳本步驟對(duì)應(yīng)一個(gè)方法。這是工業(yè)上位機(jī)里最常見(jiàn)的形態(tài)標(biāo)題里那個(gè)壓縮包大概率就是這種結(jié)構(gòu)。好處是算法邏輯所見(jiàn)即所得導(dǎo)出方法可以單獨(dú)調(diào)用壞處是代碼里有大量中間變量和 DispObj 調(diào)用需要手動(dòng)刪改不然 UI 線(xiàn)程會(huì)被 Halcon 窗口刷新拖死。第三種直接用 HALCON.NET 的 HOperatorSet 寫(xiě) C# 代碼完全不經(jīng)過(guò)腳本。適合我們這種對(duì)算子熟的工程師代碼最直接對(duì)象生命周期自己掌控多線(xiàn)程下最好排查問(wèn)題。我自己的項(xiàng)目基本都是這種方式后面所有代碼也按這個(gè)風(fēng)格寫(xiě)。無(wú)論選哪種都要引用 HalconDotNet.dll并且工程平臺(tái)目標(biāo)x64/x86和安裝的 Halcon 版本位數(shù)必須一致。32 位 Halcon 配 AnyCPU 編譯出來(lái)的程序經(jīng)常在開(kāi)發(fā)機(jī)上好好的部署到現(xiàn)場(chǎng)就報(bào) BadImageFormatException 或者 Halcon 類(lèi)型轉(zhuǎn)換錯(cuò)誤這類(lèi)問(wèn)題排查起來(lái)比寫(xiě)代碼還耗時(shí)間。2.2 四路相機(jī)的連接規(guī)劃GigE 帶寬、巨型幀與觸發(fā)方式4 路相機(jī)接什么接口決定了你后面所有代碼怎么寫(xiě)。工業(yè)現(xiàn)場(chǎng)最普遍的是 GigE Vision走網(wǎng)口線(xiàn)可以拉到 100 米而且 Halcon 的 GigEVision 接口最成熟。但千兆網(wǎng)的帶寬賬要先算清楚一臺(tái) 900 萬(wàn)像素相機(jī)Bayer 8bit 單幀約 9MB跑到 30fps 就需要 270MB/s千兆網(wǎng)實(shí)際有效載荷只有 110MB/s 左右一臺(tái)相機(jī)就把一條網(wǎng)線(xiàn)吃滿(mǎn)了。所以 4 路 GigE 相機(jī)要么降低幀率、縮小 ROI要么上雙口網(wǎng)卡相機(jī) 1、2 走網(wǎng)卡 A相機(jī) 3、4 走網(wǎng)卡 B再配靜態(tài) IP 分流。巨型幀是個(gè)高頻坑。Halcon 的 GigEVision 采集默認(rèn)依賴(lài) Jumbo Frame網(wǎng)卡、交換機(jī)、相機(jī)三方都得開(kāi) 9000 字節(jié)缺一樣就會(huì)丟幀、抓圖超時(shí)表現(xiàn)是4 個(gè)相機(jī)只能打開(kāi) 2 個(gè)。另外相機(jī) IP 要提前規(guī)劃Halcon 的 GigE 相機(jī)啟動(dòng)后往往不在 192.168.1.x 網(wǎng)段先拿廠(chǎng)商工具把 4 臺(tái)相機(jī) IP 改成同一網(wǎng)段的不同地址再讓 InfoFramegrabber 枚舉否則 OpenFramegrabber 連設(shè)備名都看不到。觸發(fā)方式也要在選型階段定。多相機(jī)實(shí)時(shí)采集有兩種走法軟觸發(fā)上位機(jī)發(fā)一個(gè)命令讓 4 臺(tái)相機(jī)同時(shí)曝光簡(jiǎn)單但抖動(dòng)有幾十毫秒硬觸發(fā)PLC 給每臺(tái)相機(jī)的 Line0 接口同時(shí)發(fā)脈沖多臺(tái)相機(jī)曝光時(shí)刻嚴(yán)格同步。產(chǎn)線(xiàn)上有 PLC 的項(xiàng)目我一般會(huì)堅(jiān)持硬觸發(fā)否則第 4 章講到的結(jié)果對(duì)齊會(huì)讓你痛不欲生。還有一批廉價(jià) USB 相機(jī)走 DirectShow 或 UVC 接口回調(diào)里區(qū)分多攝像頭靠枚舉序號(hào)加序列號(hào)雙保險(xiǎn)但這種接口延遲高、幀率不穩(wěn)做 4 路 OCR 實(shí)時(shí)采集不推薦除非你對(duì)成本極度敏感。2.3 OCR 模型選型MLP 還是 CNN字符集不是越大越好Halcon 的 OCR 模型分兩類(lèi)。傳統(tǒng) MLP 分類(lèi)器ReadOcrClassMlp 加載工業(yè)場(chǎng)景最常用的是 Industrial_0-9A-Z_NoRej字符集覆蓋數(shù)字和大寫(xiě)字母NoRej 表示不拒絕非字符區(qū)域適合噴碼、鋼印、激光打標(biāo)這種字符密度高的場(chǎng)景。新版 Halcon 還有 CNN 模型 ReadOcrClassCnnUniversal_0-9A-Z_NoRej 這類(lèi)對(duì)復(fù)雜背景、字符變形、打印不清晰的魯棒性明顯更好代價(jià)是每幀推理多幾毫秒。四相機(jī)并行的場(chǎng)景里每幀多 3 毫秒會(huì)被放大成整體吞吐下降所以我一般這么選字符是標(biāo)準(zhǔn)印刷體、背景干凈、光源固定MLP 就夠字符有殘缺、背景有紋理、產(chǎn)品表面反光嚴(yán)重直接上 CNN 省得后面天天為識(shí)別率加班。Halcon 也提供基于深度學(xué)習(xí)的 OCR 方案需要自己采集樣本訓(xùn)練產(chǎn)線(xiàn)項(xiàng)目里除非上述兩種都試過(guò)且不達(dá)標(biāo)否則不建議一上來(lái)就上訓(xùn)練數(shù)據(jù)的量級(jí)和標(biāo)注成本遠(yuǎn)超你想象。字符集的選擇很多人會(huì)犯一個(gè)錯(cuò)以為越大越好。實(shí)際恰恰相反你只讀數(shù)字就選純數(shù)字庫(kù)混進(jìn)字母后 O 和 0、I 和 1、Z 和 2 這些相似字符會(huì)把置信度拉下來(lái)誤判率翻倍。先把現(xiàn)場(chǎng)字符范圍摸清楚再定庫(kù)這是 OCR 項(xiàng)目的第一步也是絕大多數(shù)識(shí)別率問(wèn)題的根源。3. 最小可運(yùn)行代碼C# 打開(kāi) 4 個(gè)相機(jī)并實(shí)時(shí)抓圖的完整流程3.1 枚舉相機(jī)與 OpenFramegrabber 參數(shù)逐個(gè)拆解先寫(xiě)最小的打開(kāi)邏輯。Halcon 在高版本里對(duì) GigE Vision 相機(jī)的枚舉方式是這樣using HalconDotNet; using System; HTuple info, values; HOperatorSet.InfoFramegrabber(GigEVision, device, out info, out values); for (int i 0; i values.Length; i) { Console.WriteLine($Device[{i}] {values[i].S}); }values 里返回的就是類(lèi)似 CAMERA1、CAMERA2 這樣的設(shè)備名Halcon 按相機(jī) MAC 或序列號(hào)生成不是按插線(xiàn)順序。重插網(wǎng)線(xiàn)或者換相機(jī)后名字會(huì)變所以設(shè)備名到工位號(hào)的映射要寫(xiě)進(jìn)配置文件不要寫(xiě)死在代碼里。拿到設(shè)備名后逐個(gè)打開(kāi)OpenFramegrabber 的參數(shù)順序一個(gè)都不能錯(cuò)public class HalconCamera { private HTuple _acqHandle; public string DeviceName { get; } public HalconCamera(string deviceName) { DeviceName deviceName; } public bool Open() { HOperatorSet.OpenFramegrabber( GigEVision, // 采集接口類(lèi)型 0, 0, // 水平/垂直分辨率0 表示用相機(jī)默認(rèn) 0, 0, // 圖像寬度/高度0 表示默認(rèn) 0, 0, // 水平/垂直偏移 default, // 輸入格式像素格式 -1, // 外部觸發(fā)模式-1 不限制 default, // 相機(jī)像素格式 -1, // 線(xiàn)掃描寬度面陣相機(jī)傳 -1 false, // 是否使用相機(jī)自帶連接 DeviceName, // 設(shè)備名從 InfoFramegrabber 枚舉來(lái) port, // 端口類(lèi)型 0, // 端口號(hào) out _acqHandle); return _acqHandle ! null; } }這段代碼最容易抄錯(cuò)的就是前面那一串 0 和 default 的順序。OpenFramegrabber 是 Halcon 里參數(shù)最多的算子之一每個(gè)參數(shù)位置都對(duì)應(yīng)一個(gè)硬件特性你把寬度和高度寫(xiě)反了不會(huì)報(bào)錯(cuò)出來(lái)的圖就是裁剪的。打開(kāi)后先 GrabImage 試讀一幀能拿到圖再繼續(xù)往下寫(xiě)別一口氣把 4 臺(tái)全開(kāi)了再調(diào)。3.2 GrabImageAsync 異步抓圖與圖像隊(duì)列界面卡頓的解藥同步 GrabImage 在取流時(shí)會(huì)阻塞當(dāng)前線(xiàn)程4 臺(tái)相機(jī)如果一個(gè)線(xiàn)程輪流同步抓整體幀率被最慢的那臺(tái)拖死。常見(jiàn)做法是每臺(tái)相機(jī)一個(gè)采集線(xiàn)程循環(huán)調(diào) GrabImageAsyncusing System.Collections.Concurrent; using System.Threading; public class GrabWorker { private readonly HTuple _acqHandle; private readonly ConcurrentQueueHObject _queue new ConcurrentQueueHObject(); private volatile bool _running true; public GrabWorker(HTuple acqHandle) { _acqHandle acqHandle; } public void Loop() { while (_running) { HObject image; // timeout 設(shè)為 -1 表示無(wú)限等待200~500 更適合斷線(xiàn)檢測(cè) HOperatorSet.GrabImageAsync(out image, _acqHandle, -1); _queue.Enqueue(image); // 隊(duì)列超過(guò) 5 幀說(shuō)明消費(fèi)端處理不過(guò)來(lái)丟最舊幀防止內(nèi)存膨脹 while (_queue.Count 5 _queue.TryDequeue(out HObject drop)) { drop.Dispose(); } } } public void Stop() { _running false; } }GrabImageAsync 的第三個(gè)參數(shù)是超時(shí)毫秒數(shù)-1 表示一直等下一幀。這個(gè)參數(shù)很關(guān)鍵相機(jī)斷線(xiàn)時(shí) GrabImageAsync 會(huì)一直阻塞線(xiàn)程就掛死了所以我實(shí)際項(xiàng)目中會(huì)設(shè) 200 到 500 毫秒超時(shí)后做一次相機(jī)連接檢查再?zèng)Q定重新打開(kāi)還是報(bào)警。隊(duì)列上限是背壓策略識(shí)別線(xiàn)程跟不上時(shí)寧可丟幀也不能讓內(nèi)存無(wú)限漲——HObject 是非托管資源一個(gè) 900 萬(wàn)像素的 HObject 就是 9MB積壓 200 幀就是 1.8GB內(nèi)存爆掉只是時(shí)間問(wèn)題。這里要特別強(qiáng)調(diào) HObject 必須手動(dòng) Dispose。C# 的 GC 管不到非托管內(nèi)存你光等 Finalize 讓 Halcon 自己回收吞吐一大內(nèi)存還是只增不減。隊(duì)列里每個(gè)對(duì)象要么被消費(fèi)線(xiàn)程釋放要么在丟幀邏輯里釋放沒(méi)有第三條路。3.3 OCR 識(shí)別調(diào)用鏈ReadOcrClassMlp 與 DoOcrMulti 的輸入輸出抓圖回路穩(wěn)定后接 OCR。初始化時(shí)把模型讀一次整條鏈路共用同一個(gè)句柄public class OcrEngine { private HTuple _ocrHandle; public void Load(string modelName) { // 初始化階段只調(diào)用一次不要在識(shí)別線(xiàn)程里反復(fù)讀文件 HOperatorSet.ReadOcrClassMlp(modelName, out _ocrHandle); } public string Recognize(HObject image) { HObject thresholdRegions, connectedRegions, selectedRegions; HTuple classes, confidences; try { // 字符區(qū)域分割閾值 連通域 形狀篩選 HOperatorSet.Threshold(image, out thresholdRegions, 0, 128); HOperatorSet.Connection(thresholdRegions, out connectedRegions); HOperatorSet.SelectShape(connectedRegions, out selectedRegions, height, and, 10, 200); // 多字符 OCR輸入候選區(qū)域和原圖輸出字符和置信度 HOperatorSet.DoOcrMulti(selectedRegions, image, _ocrHandle, out classes, out confidences); var sb new System.Text.StringBuilder(); for (int i 0; i classes.Length; i) { sb.Append(classes[i].S); // confidences[i].D 是 0~1 的置信度后面判定用 } return sb.ToString(); } finally { thresholdRegions?.Dispose(); connectedRegions?.Dispose(); selectedRegions?.Dispose(); } } }DoOcrMulti 輸出兩個(gè)數(shù)組classes 是識(shí)別出的字符confidences 是對(duì)應(yīng)的置信度。閾值 128 是拍腦袋值實(shí)際要按現(xiàn)場(chǎng)圖像灰度直方圖定后面第 6 章展開(kāi)。這里最典型的錯(cuò)誤是每幀都調(diào)用 ReadOcrClassMlp模型文件加載一次要幾十毫秒4 臺(tái)相機(jī)一疊加幀率直接腰斬所以必須初始化時(shí)加載好所有線(xiàn)程共享同一個(gè)句柄。另外注意 DoOcrMulti 只接受單通道圖像相機(jī)出的是彩色圖先轉(zhuǎn)灰度ConvertImageType 或 ReductionDomain 都行直接喂彩色圖大概率報(bào)錯(cuò)。區(qū)域分割這里只用了最簡(jiǎn)單的 Threshold 加 SelectShape真實(shí)場(chǎng)景還要考慮光照變化這塊放到第 6 章一起說(shuō)。4. 四相機(jī)并行與結(jié)果匯總線(xiàn)程模型、時(shí)間戳對(duì)齊與 SQLite 落庫(kù)4.1 每相機(jī)一線(xiàn)程的三層架構(gòu)采集線(xiàn)程、識(shí)別線(xiàn)程、UI 線(xiàn)程4 路相機(jī)并行最穩(wěn)的結(jié)構(gòu)是每臺(tái)相機(jī)兩個(gè)后臺(tái)線(xiàn)程采集線(xiàn)程 識(shí)別線(xiàn)程加上一個(gè) UI 線(xiàn)程三層之間用 ConcurrentQueue 解耦。采集線(xiàn)程只負(fù)責(zé) GrabImageAsync 入隊(duì)識(shí)別線(xiàn)程從隊(duì)列取圖做 OCRUI 線(xiàn)程通過(guò)事件或者定時(shí)器批量刷新界面。任何 Halcon 算子都不允許在 UI 線(xiàn)程里跑這是鐵律。為什么采集和識(shí)別要拆兩個(gè)線(xiàn)程因?yàn)?OCR 算子再快也要幾毫秒如果同一個(gè)線(xiàn)程先抓圖再識(shí)別抓圖間隔就變成曝光、傳輸、識(shí)別三者的總和幀率上不去。拆開(kāi)后采集線(xiàn)程永遠(yuǎn)在等下一幀識(shí)別線(xiàn)程只處理最新幀互不阻塞。識(shí)別線(xiàn)程里取隊(duì)列要用取最新幀邏輯private void OcrLoop(string ocrModel) { HTuple ocrHandle; HOperatorSet.ReadOcrClassMlp(ocrModel, out ocrHandle); // 只加載一次 while (_running) { if (_grabQueue.TryDequeue(out HObject latest)) { // 隊(duì)列里可能還積壓著舊幀全部丟掉只處理最新的 while (_grabQueue.TryDequeue(out HObject stale)) { stale.Dispose(); } var text _ocr.Recognize(latest); latest.Dispose(); // 觸發(fā)結(jié)果事件事件里只入隊(duì)不做 UI 刷新 OnFrameResult?.Invoke(new OcrResult(text, DateTime.Now, DeviceName)); } else { Thread.Sleep(5); } } }OnFrameResult 用 Action 委托或者自定義事件都行但事件處理器里絕對(duì)不能直接去 update UI、寫(xiě)數(shù)據(jù)庫(kù)。識(shí)別線(xiàn)程一被阻塞隊(duì)列就漲上來(lái)丟幀率跟著上升。我一般讓事件處理器只做一件事把結(jié)果放進(jìn)另一個(gè) ConcurrentQueueUI 用一個(gè) 100ms 的 Timer 批量拉取刷新寫(xiě)庫(kù)交給獨(dú)立線(xiàn)程。這樣界面再卡也不會(huì)拖垮識(shí)別。4.2 多相機(jī)結(jié)果對(duì)齊同一個(gè)工件四相機(jī)拼讀的三種策略如果 4 個(gè)相機(jī)拍的是同一個(gè)工件的不同面最終要把 4 路結(jié)果拼成一個(gè)完整記錄再判定。這里最坑的是同一幀的認(rèn)定光靠時(shí)間戳對(duì)齊是最省事但也最容易出錯(cuò)的做法。第一種時(shí)間戳對(duì)齊適合軟觸發(fā)場(chǎng)景。上位機(jī)同時(shí)給 4 臺(tái)相機(jī)發(fā)觸發(fā)命令抓到圖后打上 Environment.TickCount 或 Stopwatch 時(shí)間戳識(shí)別完把同一觸發(fā)周期內(nèi)的結(jié)果歸組。軟觸發(fā)本身有幾十毫秒抖動(dòng)工件走快了一個(gè)相機(jī)早拍了 50ms字符位置和樣貌已經(jīng)變了識(shí)別率不穩(wěn)。第二種 PLC 流水號(hào)對(duì)齊這是工業(yè)現(xiàn)場(chǎng)最靠譜的方案。每個(gè)工件過(guò)觸發(fā)傳感器時(shí)PLC 發(fā)一個(gè)流水號(hào)給上位機(jī)上位機(jī)把當(dāng)前收到的 4 路結(jié)果關(guān)聯(lián)到這個(gè)流水號(hào)上。相機(jī)漏拍或重拍時(shí)流水號(hào)能明確告訴你缺哪一路直接標(biāo)記 NG 等待復(fù)判。光靠時(shí)間戳遇到漏拍就全線(xiàn)錯(cuò)位后面所有數(shù)據(jù)都對(duì)不上這是血淚經(jīng)驗(yàn)。第三種圖像特征對(duì)齊用工件上本來(lái)存在的二維碼或關(guān)鍵字符做關(guān)聯(lián)。每個(gè)工位識(shí)別出同一枚唯一碼后按碼歸組適合產(chǎn)品自帶碼的場(chǎng)景但前提是每個(gè)拍攝面都能讀到同一個(gè)碼很多工位布局滿(mǎn)足不了。我現(xiàn)在的習(xí)慣是現(xiàn)場(chǎng)有 PLC 就一定接流水號(hào)沒(méi)有 PLC 才退而求其次用時(shí)間戳并且把時(shí)間戳容差設(shè)到 100ms 以上寧可多等一幀也別錯(cuò)配。4.3 結(jié)果落庫(kù)與異常重拍SQLite 記錄、超時(shí)與 NG 處理OCR 結(jié)果、原圖路徑、時(shí)間戳、工位號(hào)都要落庫(kù)。工業(yè)上位機(jī)最務(wù)實(shí)的選擇是 SQLite單文件、免安裝、部署零成本。每幀一條記錄字段大致是 id、timestamp、camera_id、ocr_text、confidence、image_path、is_ngprivate static readonly string ConnStr Data Sourceocr_results.db; public void SaveResult(OcrResult r) { using var conn new SQLiteConnection(ConnStr); conn.Open(); using var cmd conn.CreateCommand(); cmd.CommandText INSERT INTO ocr_log(timestamp, camera_id, ocr_text, confidence, image_path, is_ng) VALUES(ts, cam, text, conf, img, ng); cmd.Parameters.AddWithValue(ts, r.Timestamp); cmd.Parameters.AddWithValue(cam, r.CameraId); cmd.Parameters.AddWithValue(text, r.Text); cmd.Parameters.AddWithValue(conf, r.Confidence); cmd.Parameters.AddWithValue(img, r.ImagePath); cmd.Parameters.AddWithValue(ng, r.IsNg); cmd.ExecuteNonQuery(); }這里有個(gè)必踩的坑SQLite 寫(xiě)庫(kù)有鎖4 個(gè)識(shí)別線(xiàn)程同時(shí)寫(xiě)同一張表很快報(bào) database is locked。解決方式兩種一是給寫(xiě)庫(kù)加全局鎖簡(jiǎn)單但吞吐受限二是單寫(xiě)線(xiàn)程 ConcurrentQueue 批量落庫(kù)寫(xiě)庫(kù)線(xiàn)程每 200ms 把隊(duì)列里的結(jié)果攢成一個(gè)事務(wù)批量插入一次事務(wù)插幾十條效率高也不會(huì)鎖。超時(shí)重拍的邏輯要單獨(dú)設(shè)計(jì)。置信度低于閾值比如 0.8或者干脆沒(méi)讀到字符時(shí)先判斷是不是曝光、焦距問(wèn)題重拍最多兩次重拍還 NG 就把原圖歸檔、標(biāo)記人工復(fù)判。不要無(wú)限制重拍產(chǎn)線(xiàn)節(jié)拍會(huì)被你堵死NG 圖保留下來(lái)反而是后面訓(xùn)練和調(diào)優(yōu)最值錢(qián)的資產(chǎn)。5. C# 聯(lián)合 Halcon 的 5 個(gè)高頻翻車(chē)現(xiàn)場(chǎng)現(xiàn)象、原因與解決辦法5.1 Access Violation C0000005對(duì)象的釋放順序現(xiàn)象程序運(yùn)行一段時(shí)間后或者關(guān)閉窗口時(shí)C# 拋出 System.AccessViolationException錯(cuò)誤碼 C0000005調(diào)用棧指向 HalconDotNet 的某個(gè)析構(gòu)函數(shù)或者 HOperatorSet 調(diào)用。原因HObject 和 HTuple 是非托管資源的包裝C# 的 GC 可能在你還用著圖像時(shí)觸發(fā)了終結(jié)器或者你在別的線(xiàn)程 Dispose 了正在使用的對(duì)象。最常見(jiàn)的場(chǎng)景一個(gè) HObject 進(jìn)了隊(duì)列兩個(gè)線(xiàn)程都持有引用消費(fèi)線(xiàn)程用完 Dispose采集線(xiàn)程還在往窗口畫(huà)這一幀一崩一個(gè)準(zhǔn)。解決跨線(xiàn)程傳遞的 HObject 所有權(quán)必須明確誰(shuí)最后使用誰(shuí)釋放。生產(chǎn)線(xiàn)程只負(fù)責(zé)入隊(duì)消費(fèi)線(xiàn)程負(fù)責(zé) Dispose中間不允許第三方觸碰。調(diào)試期可以在項(xiàng)目屬性里打開(kāi) GC 并發(fā)回收的開(kāi)關(guān)來(lái)復(fù)現(xiàn)但這種問(wèn)題要靠規(guī)范根治每個(gè)線(xiàn)程的局部 HObject 用 using 塊包裹回調(diào)到 UI 的 HObject 一定先深拷貝或者只傳句柄。這個(gè)報(bào)錯(cuò)很玄學(xué)不是每次都崩取決于 GC 時(shí)機(jī)現(xiàn)場(chǎng)復(fù)現(xiàn)極其痛苦。我現(xiàn)在寫(xiě)多相機(jī)代碼第一步永遠(yuǎn)是畫(huà)清楚每個(gè) HObject 的流向圖誰(shuí)生產(chǎn)、誰(shuí)消費(fèi)、誰(shuí)釋放畫(huà)不清楚不寫(xiě)代碼。5.2 License 報(bào)錯(cuò)腳本跑得好好的一加線(xiàn)程就報(bào)無(wú)授權(quán)現(xiàn)象單線(xiàn)程調(diào)試時(shí) Halcon 算子全部正常把 GrabImageAsync 或者 DoOcrMulti 放進(jìn)后臺(tái)線(xiàn)程后報(bào) H9991 無(wú)可用授權(quán)或者 license 無(wú)效。原因Halcon 授權(quán)機(jī)制綁定到調(diào)用上下文試用授權(quán)只允許單線(xiàn)程執(zhí)行多線(xiàn)程并行跑算子會(huì)直接觸發(fā)授權(quán)校驗(yàn)失敗。另外 HDevEngine 和導(dǎo)出代碼的授權(quán)校驗(yàn)方式不同同一個(gè) license.dat 換個(gè)調(diào)用方式可能就不認(rèn)了。解決第一確認(rèn)用的是正式 Runtime 授權(quán)而不是試用授權(quán)正式授權(quán)支持多線(xiàn)程試用授權(quán)跑單線(xiàn)程是它的設(shè)計(jì)邊界不是 bug第二確認(rèn) C# 工程平臺(tái)目標(biāo)和 Halcon 位數(shù)一致位數(shù)不匹配經(jīng)常誘發(fā)奇怪的授權(quán)和類(lèi)型錯(cuò)誤第三license.dat 的路徑要保證所有線(xiàn)程都能讀到別放在用戶(hù)臨時(shí)目錄或者相對(duì)路徑部署到 Windows 服務(wù)里路徑一變就授權(quán)失敗。還有個(gè)常見(jiàn)的連帶坑license 文件到期時(shí)間是半夜第二天早上產(chǎn)線(xiàn)一開(kāi)機(jī)就報(bào)錯(cuò)。生產(chǎn)項(xiàng)目一定要在代碼里做授權(quán)剩余天數(shù)檢查提前三天在界面上告警別讓操作員大早上對(duì)著紅屏找你。5.3 4 個(gè)相機(jī)只能打開(kāi) 2 個(gè)GigE 帶寬與驅(qū)動(dòng)配置現(xiàn)象OpenFramegrabber 打開(kāi)前兩個(gè)相機(jī)正常第三個(gè)或第四個(gè)報(bào)無(wú)法連接、超時(shí)或者都打開(kāi)成功了抓圖一多就開(kāi)始丟幀、卡頓。原因網(wǎng)卡、交換機(jī)、相機(jī)三者沒(méi)同時(shí)開(kāi) Jumbo Frame巨型幀4 路相機(jī)在千兆網(wǎng)上的小包傳輸把帶寬和 CPU 中斷都打滿(mǎn)了。900 像素相機(jī)單幀 9MB不開(kāi)巨型幀一個(gè)幀被拆成幾百個(gè)小包CPU 中斷風(fēng)暴一來(lái)網(wǎng)卡先崩。解決所有網(wǎng)絡(luò)設(shè)備包括相機(jī)都設(shè)置 Jumbo Frame 9000單路帶寬按 寬×高×位深×幀率 計(jì)算保留 30% 余量雙口網(wǎng)卡靜態(tài) IP 分流相機(jī) 1、2 走網(wǎng)卡 A相機(jī) 3、4 走網(wǎng)卡 B再把網(wǎng)卡中斷的 CPU 親和性分散到不同核心避免所有中斷擠在一個(gè)核上。現(xiàn)場(chǎng)還有一個(gè)容易忽略的點(diǎn)相機(jī) IP 與上位機(jī)不在同一網(wǎng)段Halcon 枚舉時(shí)看得到設(shè)備但 OpenFramegrabber 就是連不上先用廠(chǎng)商工具改 IP 再上代碼。5.4 OCR 準(zhǔn)確率早晚差異大曝光與 ROI 沒(méi)固化現(xiàn)象同一套代碼白天識(shí)別率 99%傍晚太陽(yáng)斜照進(jìn)車(chē)間誤識(shí)別率直線(xiàn)上升8 認(rèn)成 3O 認(rèn)成 0。原因環(huán)境光變化導(dǎo)致圖像整體灰度偏移你閾值分割寫(xiě)死了 128早上字符灰度 150傍晚掉到 100分割出來(lái)的區(qū)域不是缺筆畫(huà)就是多粘連。Halcon 的 OCR 對(duì)光照變化比人眼敏感得多。解決光源固定是第一優(yōu)先能加遮光罩就加遮光罩能用頻閃光源就用頻閃光源把環(huán)境光的影響壓到最低相機(jī)曝光和增益鎖成固定值絕對(duì)不要開(kāi)自動(dòng)曝光自動(dòng)曝光會(huì)讓字符灰度反復(fù)橫跳閾值不要寫(xiě)死用灰度直方圖定位峰谷或者用 MedianImage 降噪后配合 dyn_threshold 做動(dòng)態(tài)分割。ROI 也一定要按基準(zhǔn)圖像標(biāo)定好不要每幀全圖找字ROI 固定后還能順手把光源邊緣的偽區(qū)域?yàn)V掉。5.5 關(guān)程序就崩潰句柄銷(xiāo)毀順序現(xiàn)象點(diǎn)關(guān)閉按鈕界面退了進(jìn)程還賴(lài)在任務(wù)管理器里或者退到一半崩潰主窗口關(guān)了但報(bào) Halcon 窗口無(wú)效。原因UI 線(xiàn)程關(guān)閉時(shí)銷(xiāo)毀了 HWindowControl但采集、識(shí)別線(xiàn)程還在向窗口推送圖像或者調(diào)用 disp_obj。Halcon 的窗口句柄一旦銷(xiāo)毀任何往這個(gè)窗口畫(huà)的算子都直接崩潰。解決退出順序必須是「停線(xiàn)程 → 釋句柄 → 關(guān)窗口」protected override void OnFormClosing(FormClosingEventArgs e) { _running false; // 1. 通知所有線(xiàn)程退出 _grabThread?.Join(1000); // 2. 等采集線(xiàn)程退出帶超時(shí) _ocrThread?.Join(1000); // 3. 等識(shí)別線(xiàn)程退出 _acqHandle?.Dispose(); // 4. 釋放相機(jī)句柄 _window?.Dispose(); // 5. 最后釋放 Halcon 窗口 base.OnFormClosing(e); }順序反了就是玄學(xué)崩潰先 Dispose 了相機(jī)句柄采集線(xiàn)程還在等圖線(xiàn)程內(nèi)部訪(fǎng)問(wèn)已釋放句柄Access Violation。Join 一定要帶超時(shí)參數(shù)不然線(xiàn)程卡死在 GrabImageAsync 里窗體永遠(yuǎn)關(guān)不掉。這個(gè)退出流程我現(xiàn)在每個(gè)項(xiàng)目第一個(gè)寫(xiě)寫(xiě)完再動(dòng)其他代碼。6. 把 OCR 準(zhǔn)確率從 90% 提到 99%預(yù)處理順序、自定義訓(xùn)練與回歸驗(yàn)證6.1 預(yù)處理三板斧OCR 識(shí)別之前必須過(guò)三關(guān)順序不能反。第一關(guān)灰度化彩色圖 ConvertImageType 轉(zhuǎn)灰度Halcon 的 OCR 算子只吃單通道第二關(guān)去噪增強(qiáng)字符印在紋理背景上時(shí)先做高斯差分DoG把低頻背景濾掉再分割效果立竿見(jiàn)影普通工況用 MedianImage 或 GaussFilter 就夠第三關(guān)形態(tài)學(xué)清理開(kāi)運(yùn)算去掉孤立鹽噪點(diǎn)閉運(yùn)算把斷掉的筆劃接上。之后再做閾值分割和字符候選提取。濾波核大小的經(jīng)驗(yàn)值按字符高度比例定取字符高度的十分之一到五分之一。字符高度 30 像素濾波核取 3 到 5太大字符糊掉太小不起作用。這個(gè)參數(shù)值得用驗(yàn)證集調(diào)多花半小時(shí)調(diào)濾波后面少加一個(gè)月班。6.2 自定義字符庫(kù)訓(xùn)練自帶庫(kù)實(shí)在扛不住時(shí)用 Halcon 的 OCR Training 工具自己訓(xùn)。流程是固定的抓一批現(xiàn)場(chǎng)圖像框出字符逐個(gè)標(biāo)注字符值生成 .trf 訓(xùn)練文件用 create_ocr_class_mlp 生成分類(lèi)器最后 write_ocr_class_mlp 導(dǎo)出。C# 里不需要改一行代碼ReadOcrClassMlp 加載你導(dǎo)出的模型文件就行。訓(xùn)練集每類(lèi)字符至少要 50 個(gè)樣本覆蓋不同光照、偏移、粗細(xì)、缺損程度。只標(biāo)幾張圖訓(xùn)出來(lái)的分類(lèi)器實(shí)際就是記住了你那幾張圖換一幀就露餡。訓(xùn)完用驗(yàn)證集測(cè)準(zhǔn)確率達(dá)不到就回去補(bǔ)樣本這一步不能省。6.3 批量回歸驗(yàn)證改任何參數(shù)之前先建驗(yàn)證集。從現(xiàn)場(chǎng)歷史圖里挑 500 張好的壞的都要跑一個(gè)批處理腳本統(tǒng)計(jì)字符級(jí)準(zhǔn)確率和整串準(zhǔn)確率。整串準(zhǔn)確率才是產(chǎn)線(xiàn)真正關(guān)心的指標(biāo)因?yàn)榕卸ㄊ钦葘?duì)。某個(gè)字符識(shí)別率 99% 聽(tīng)著不錯(cuò)但產(chǎn)品碼 12 位整串全對(duì)的概率是 0.99 的 12 次方87%這數(shù)據(jù)上不了線(xiàn)。我平時(shí)用一個(gè)簡(jiǎn)單的控制臺(tái)命令做回歸輸入圖片目錄和期望識(shí)別結(jié)果輸出每張圖的識(shí)別文本和置信度跑完自動(dòng)和期望值對(duì)比打印整串通過(guò)率。每次改曝光、改預(yù)處理、換模型都把同一批圖跑一遍通過(guò)率不能比上一次低。這是我在現(xiàn)場(chǎng)唯一認(rèn)可的驗(yàn)收標(biāo)準(zhǔn)做不到 99% 整串通過(guò)率別急著交產(chǎn)線(xiàn)。這套多相機(jī) OCR 上位機(jī)的框架說(shuō)到底就是「線(xiàn)程隔離 資源管理 數(shù)據(jù)對(duì)齊」三件事。我現(xiàn)在的習(xí)慣是接到項(xiàng)目先寫(xiě)退出流程和對(duì)象流向圖再談識(shí)別率優(yōu)化。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
插穴性爱视频在线观看| 国产精品久久天天干| 骚货人妻偷情自拍在线视频| av最新免费中文字幕| www欧美91| 嗯嗯啊啊的视频| 99少妇精品视频| 婷婷丁香六月天| 国产精品亚洲天堂网址| 亚洲国产97| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 亚洲人妻AV| 韩日性爱av| 国产亚洲精品无码三区| 88xx成人精品视频| 乱伦一二三区| 久操com| 家庭乱伦麻豆| 午夜精品久久99蜜桃的功能章节| 999国产精品999久久久久久| 婷婷人妻激情| 日韩BBN| 手机久操欧美综合色码| 91亚洲不卡一区| 日本超碰在线国产一区| 亚洲情色第一页| 国产成人自拍视频在线| 黑丝少妇| 蜜臀久久一区二区| 志村玲子视频一区二区| 看一级黄色视频| 曰韩无码777| 亚洲第一精品在线视频| 人人操人人操人人操人人操人人操人人人11.CM| 精品视频一区二区| 97超碰欧美| www欧美91| 丝袜视频网国产90| 久久精品超碰| 啪啪视频免费在线观看| 人人操 欧美| 欧美日韩性爱操大逼| 午夜福利免费福利视频| 户外裸露刺激视频第一区| 中文字幕AV乱伦| 一级性爱视频免费观看 | 肉嘟嘟www视频在线观看高清| 久久中文字幕一区不卡| 亚洲va有码在线天堂| 日韩黄片视频试看| 免费看A片毛毛片在线播| 久久久久久AV无码免费网站| 五月婷婷综合在线| 国产精品一区二区在钱播放| 加勒比少妇AV婷婷六月天超碰超碰| 是还免费视频1727我| 欧美 综合 亚洲| 欧美色91| 九九热久久99精品re| 国产高清在线观看欧美| 精品国产少妇高潮视频| 中文字幕人妻色偷偷久久皮 | 无码精品久久| 热99这里只有精品| 丝袜综合色图| 久久精品91| 国产在线激情| 中文字幕亚洲热播人妻| 免费啊啊啊| 欧洲站一级二级三级h| 久久二| 99婷婷一区二区| 人妻干天天| 五月丁香综合激情| 加勒比av官网在线| 亚洲一区二区三区不卡国产欧美| 99热最新| 国产精品熟女九九九| 日韩干B| 91色综合| 色综合网1| 精品久久久无码| 精品一区二区麻豆| 综合97| 秋霞无码av鲁丝片一区| 亚州色交| 欧美性爱超碰97| 天天看夜夜看日日干| 乱伦AVxx| 俺去啦自拍| 色网站导航大全| 丁香五月激情网| 97视频在线视频| 高潮精品| 六月丁香网| 热热热热日日漂亮永久永久国产日| 日韩99999| 色成人Www精品永久观看| 人人色97| 熟妇一区二区| 精品久久久av无码免费| 狠狠做深爱婷婷久久二区| 大香蕉中文| 99re不伦| 在线啊啊啊啊| 色色激情五月天| 大香蕉一区二区在线观看.| 久操免费电影| 91n.欧美| 美女让帅哥通她小鸡鸡| 日韩精品第3页| 玖色AV| 国产精品视频精品一二| 亚洲图片偷拍视频区| 日本天天操| 丰满美女一级毛片在线播放| 国内精品嫩模A∨私拍小视频| 怡春院久久| 99re在线视频国产| 粉嫩久久久极品| 啊啊啊啊在线播放| 91白嫩| 色哟哟av| 一区二区三区国产在线播放 | 日韩啪啪啪啪啪| 色婷婷激情| 青青草中出视频| 亚洲精品男人的天堂| 99福利社| 9/A片 | 亚洲综合影院| 色哟哟 日韩精品| 亚洲天堂2020| 清纯唯美亚洲综合| 国产亚洲精品农村妇女| 丁香激情网| 精品高清一区二区三区三州| 亚洲av总站| 熟女视频久久| 久久久久骚| 超碰欧美| av天天在线观看| 亚洲日韩资源| 超碰av人人人| 久久9精品| 男人天堂久久精品| 丝袜AV一区二区三区| 人人看人人插| 另类av综合久久| 日韩啊V| 亚洲天堂热| 久热大香蕉网站| 97天天在线| 狠狠爱综合网| 97视频免费播放| 久久婷婷苹果| 日本中文字幕高跟| 亚洲drav色图| 精品一区二区人妖| 91天堂丝袜美腿| 欧美大干日韩| 久久久久9999| 日产精品久久久一区二区| 日本操逼视频在线| 天天干一区二区| 91爱| 日韩精品国产精品五码一区二区| 天天欧美97| 大香蕉久操| 黄页av| 五月天婷婷色| 久久综合国产精品国产| 日本中文字幕熟妇| 亚州国产精品乱| 99re在线| 高清不卡 中文 人妻| 999岛国大片| 91欧美经典| 韩日男人的天堂| 亚洲天天做日日做天天谢日日| 精产国品一区二三产品| 亚洲情色1区| 日本αv| 九七毛片九九毛片| 韩国一区二区精品亚洲| 少妇无码av专区线| 好属操| 91天美传媒在线观看| 成年女人18级毛片毛片免费观看| 热思思免费视频| 精品少妇人妻| 国产嫩草精品A88AV在线| 国产乱码精品一区二区三区四川| 九九九九国产| 九九操久久国产免费视频| 99抽插| 五月天婷婷激情| 中国一级特黄大片护士| 人人摸人人入| 国产欧美另类久久久精品课程| 人人澡综合涩| 精品视频97| 亚洲有薄码区日本系列中文字幕| 日逼国产| 五十路熟女工口 | 国产综合久| 青青欧洲黑| 日韩AV中文字幕电影| 日韩精品99999| AV高清一区| 国产成人自拍视频在线| aV中亚| 国产美女销魂在线观看不卡| 依人大香蕉| 色情综合网| 色999五月色| 人妻熟女一区二区| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 黄页视频网站野外| 韩国成人精品久久久免费看 | 97国产精品| 久久熟女嫩草成人片免费| 国产激情在线| 91激情国产| 麻豆区久久久久亚| 亚洲a色| 中文字幕成人乱码熟女精品国50| 亚洲天堂男| 精品人妻一区二区三区在| 国产精品美女视频诱惑| 欧美gv在线观看| se01国产在线视频| 99啪啪视频| 午夜精品99久久久久传媒| 久久9精品视频| 青青草在线视频欧美| 欧美一区二区三区成人性生活| 91处女在线视频| 日韩精品午夜操呦呦不卡影院| 欧美综合亚洲综合| 日本免费一区二| 亚洲欧洲色情高清| 丝袜AV一区二区三区| 日韩性爱小视频| 日本一区视频在线观看| 婷婷五月天成人| 大香伊人在线一区| 综合欧美亚洲| 午夜福利成人免费视频| 新视频sss国产| 久草免费在线视频| 日本一级性爱| 搡老女人老91妇女熟女| 婷婷色综合欧美日韩| 成人午夜小视频手机在线看| 亚洲最大黄网| 日韩少妇无码| 夜色五月天| 色97欧美| 亚洲日韩国产欧美综合v| 欧美天天谢综合网| 老司机午夜精品视频| 防屏蔽在线视频| 女人18精品一区二区三区| 影音先锋日本乱伦| 国产高清成人免费视频| 天天日天天舔| 国产欧美另类久久久精品课程| 狠狠色噜噜狠狠狠狠狠色综合久久| 精品无码一区二区| 国产偷人伦激情在线观看| 91高潮喷水美女| 国产一级高清免费观看| 日本操大逼| 国产色呦呦| 激情天天视频| 人人操人人摸人| 亚洲色人妻综合| 久久精品国产精品亚洲艾通辽熟妇 | 蜜臀在线免费观看在线免费观看| 日本成人在线不卡一区二区三区| 亚洲精品视频在线| 日韩视频中文字幕| 中文字幕黄色片| 玖色av| 无码 黑人一区二区三区| 青青草在线成人视频| 日韩性爱长视频免费| 欧亚第一综合网| 精品成人亚洲午夜电影| 性高潮久久久| 欧美熟妇操操视频| 超碰在线看| 久久精品一区二区三区四区五区| 啊啊啊不要啊啊受不了了视频在线| 一区二区免费电影久久| 91中出视频| 2019天天操天天爽天天拍| 色噜噜人妻丝袜a∨先锋影 | 97在线欧洲| 91干熟女| 久久久久亚洲av综合波多野制衣| 久久国产乱子伦精品免费女,网站| 超碰97色色| www超碰| 日本熟女免费視颖| 成人一二| 9Ⅰ老熟女| 我想要啊 啊 啊| 屌妞视频久久久久久久久久久久| 乱精品一区字幕二区| 欧美日日夜夜| 国产美女激情| 快灬快灬 一下爽蜜桃在线观看| 欧美成人贴图| 播播亚洲小说亚洲| 亚洲视频一二区| 欧美东京热青青草| 亚洲av影音先锋| 黄色免费网页无码| 亚洲精品一二三四区| 超碰人妻中文在线| 美国精品国产精品| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 97WW精品| 97超碰精品| 五月黑AⅤ| 蜜臀久久99精品久久久久久无删减| 丁香婷婷九月| 精品欧美老熟女一二区| 精品国产一区二区三区av在线资源| 1024午夜激情男人的天堂| 懂色aV一区二区天美传媒| 国产尹人在线视频免费| 97超碰9| 97人人模人人爽人人| 综合网少妇| 中文字幕在线高清男人的天堂| 粉嫩AV输入| 日本东京热加勒比久久| 美女让帅哥通她小鸡鸡| 日本精品成人无码| 麻豆久久精品亚洲精品88| 久久这里都是精品| 欧美另类精品xxxx| 麻豆精品一区二区三区四区免费观看| 亚洲av总站| 亚洲一本大道中文字幕无码在线| 精品999999| 亚洲无线观看久久| 久草线上视频免费看| 黄色成年| 久久久久久性爱视频| 欧美综合加勒比在线| 国产乱伦亚洲| 人妻超碰青青草98| 欧美久久草熟女| 久久首页| 亚洲天堂男人的天堂| 人妻无码久久一区二区三区免费| 成人av免费观看| 蜜乳视频网站| 色操逼网| 久久五月天婷婷丁香中文字幕| 人人妻人人澡人人爽久久av| 密臀成人视频久久久| 亚洲AV无码久久精品蜜桃小说| 国产精品乱人伊人网| 亚洲动态色图| 午夜操一视频一区| 超碰九九| 狠狠躁伊人中文字幕| 精品欧美日韩在线观看| 丰满搜索结果 -第18页- 久久高清无码 | 尻女朋友一夜| 人妻美腿丝袜制服诱惑综合天堂-| 大胆91| 小少妇| 青青操青娱乐| jiujiujiujingpin| 国产精品久久久无码AV网站| 国产操逼网站亚洲一级黄色| 日本道人妻久久久在线不卡色视频| 色五月69夫妻| 亚州综合色图| 欧美在线大香999| 国产三级中文字幕粉嫩| 加勒比色99999| 欧美熟女操屄| 国语精品内射在线观看| 久热9| 9热9热综合网| 欧美性爱一区二区三区| 九九精品99| 欧亚乱色熟女一区二区| 亚洲国产第一页综合视频| 婷婷五月丁香五月| 日韩图区| 精品午夜福利| 久久精品毛片免费不卡| 91neishe| 丰满少妇精品一区二区| 1区2区3区视频| 午夜啪啪片| 人妻丝袜无 码视频专区| 91五月天| 日本三级A片网站com| 丰满人妻大屁一区二区| 久久欧洲| 亚洲欧美色图| 在线播放中文字幕| 亚洲天堂日本| 久久超碰国产一区二区三区| 最新国产精品久久精品| 色色综合97| 欧美激情视频一区二区| 人人透人人操| julia国产在线| 欧亚在线视频| 91国产丝袜白虎| 在线观看一卡二卡| 亚州综合在线| 色哟哟-国产专区| 美女91网站| 91啪啪| 中文乱码字字幕在线第5页| 综合操逼| 亚熟hd视频在线| 在线午夜成人无码视频| 青青草国产亚洲精品久久| 免费操逼91| 丝袜综合色图| 亚洲欧美中文日韩视频中国语| 四虎影视国产精品| 18精品一区| 做爱A级亚欧| 一区二区 电影 亚洲| 日韩AC| 亚洲在高跟鞋自慰久久在色线| 男人天堂2019| 欧美淫穴| 内射小黄片| 2026国产精品视频| 久久国产视频性吧| 在线无码视频| 亚洲高清91| 天天综合~91入口| 在线岛| 深夜国产福利| 亚洲怡春院| 人妻少妇精品一区二区三区| 国产日韩精品人妻久久久久色欲网站| www.AV有限公司一区| 欧美性爱伊人| 中文字幕在线免费观看2| 伊人色综合欧美| 亚洲日韩美女中文字幕乱| 亚洲91射| 亚洲国产中文字幕| 老司机久久| 男人的天堂.com| 成人日韩欧美| 天天综合网站| 激情久久久| 精品国产91av一区二区三区| 东京热男人天堂| 日本高清一本二本免费不卡| 好好的日:com久久九九| 国产欧美伊人| 欧美日韩国产中文超碰| 亚洲欧洲另类| 黄色网址久久精品欧美喷水| 亚洲天堂,男人| 中文字暮97| 天综合中文| 大香蕉手机视频| 欧美少妇色综合| 超碰诱惑| 亚洲有码 视频一区| 婷婷午夜| 色av中文字| 久久思思热| 欧美黑人XXXⅩ高潮交| 六月丁香啪啪| 精品一区96| 欧美日韩222| 骚熟女吞| 2017天天插| 性爱视频免费网址| 色综合网1| 蜜臀久久99精品久久久老,,| 青娱乐av在线| 4虎在线视频| 9九九国产| 综合97| 无码区蜜乳| 搡老熟女老女人老熟妇免费视频| 日韩有码免费视频| 青青草中日韩在线| 免费人成毛片乱码| 无码99| 狼人综合婷婷激情四射| 国产精品视频播放| 91欧洲入口| 91天堂网| 国产免a费看黄片在线| 女人被男人桶爽视频网站| 亚洲欧美日韩精品久久久一区二区| 久久草在线综合视频| 少妇啪啪自拍| 国产一区自拍欧美日韩| 麻豆这里只有精品| 日本精品国产视频| 欧美色图电影| 国产成人一级av88| 日韩一级二级三级免费看完整版 | 丰满熟女一区二区三区在线播放| ,成人免费啪啪视频| 五月丁香六月| 91在线色综合| 九区国产| 性在久久久久久| 天堂精品小草| 亚洲天天艹| 91综合天天看| 亚洲导航深夜福利| 欧美色图成人网一区二区| 上床啊啊啊| 欧美国产欧美在线观看| 精品乱子一区二区三区99| 亚洲精品人体| 任我爽视频在线观看| 亚洲本色精品一区二区久久| 精品精品精品| 伊人麻豆传媒| 一区二区偷拍拍视频| 欧美同性恋 的搜索结果 - 91n| 啪啪视频亚洲第一| 久久夜精品一区二区三区| 国产精品久久久久久久AV大片| 天天影视射综合网| 日韩中文字幕在线视频观看| 东京热综合久久一区二区| 久操综合在线| 国产一区二区三区高清视频| 嗯啊不要啊啊在线观看视频| 91精品国产日韩欧美综合| 欧美综合第一| 97欧美色资源| 岛国精品视频在线观看| 国产400孕妇孕交群| 国产中文福利| www.久久| 亚洲国产美女久久久久| av麻豆啪啪| 婷婷伊人綜合中文字幕| 欧美男人天堂| 天躁夜夜躁2021| 色噜噜人妻丝袜AV资源| 99热自拍| 久久99午夜精品一区人妻| 最新日本中文字幕| 日韩久射综合| 日韩精品9999| 青青草啪啪网| 婷婷美人网| 午夜精品视频777| 操逼操逼视频操逼| 国产AV无码AV| 亚洲AV无码国产精品久久久久 | 26UUU欧美激情一区二区| 一起草三级AV电影在线观看| 天天视频黄| 另类亚洲一区二区三区| 欧美大香蕉久| 色yeye成人免费视频| 操逼操网| 欧美十八禁在线看| 超碰av在线| 乱日视频| 久久久久元码视频| 熟人人妻少妇精品久久| 麻豆天美传媒毛片| 天天插夜夜操| 亚洲精品日韩国产欧美| 女优视频第10页| 久久色激情一区二区三区| 国产超碰在线一区| 日韩中文字幕宗合在线| 老熟女天天操| 欧美精品精品一区二区| 亚一综合久久久久久久久久| 日韩精品一区二区三区色欲| 91老司机在线视频免费观看| 亚洲综合夜色| 超碰97COm中文| 亚洲精品成人动漫在线| 欧美十八禁在线看| 色诱avtt| 中文字幕AV中出| 亚洲熟女乱色一区二区三区| 91动漫操逼视频| www.91色综合| 激情人妻另类| 中文乱码字幕观看| 欧美激情中文字幕另类小说| 艳美熟妇先锋一二三区| 亚洲交换| 热无码中文亚洲H一道本一区二区| 91c色| 青青草视频久久| 男人把坤坤插入女人的下体| 精品亚洲天堂| 蜜乳AV色欲AVAV无码| 欧美 色 亚洲| ji熟女.com| 婷婷五月在线视频| 97国产伦理| 国产午夜精品在线观看| 色九区| 久久综合av| 国产资源中文字幕在线| 天天干天天拍| 久久久久久无码人妻中文字幕| 国产偷拍网站| 日本有码久久| 97亚洲综合在线| 久久精品国产亚洲AV高级北京| 欧美日韩黄色片一区二区三区四区人与兽做爱| 可乐操亚洲蜜911| 在线观看亚洲专区| 欧美成人综合| 影音先锋少妇| 麻豆国产av网| 亚洲一级黄色毛片| 亚洲色图超碰在线| 97久久国产精品女不卡| 久久美女福利是上海美女| 久久日本熟女精品一区| 国产在线综合网| 清柠毛片| 中文字幕在线观看网址| 夜夜一区二区| 日韩猛交| 九月丁香婷婷| 精品免费视频国产一区| 青青操97| 精品国产av一区二区三区四区入口| 久久小视频| 91性网| 天天做天天爽| 天天cao在线| 99热亚洲天堂| 色波多| 亚州操操穴网| 精品美女久久久久| 91网站18在线| 国产精品呦一区二区三区| 330dv亚洲成年视频网| 中字幕人妻一区二区三区| 精品免费一区二区三区在线亚洲人成 | 暴力av在线| AA丁香综合激情| 五十路熟女人妻一区二区在线观看 | 中文字暮97| 五月亭亭六月丁香| 美日韩在线不卡人妻| 人妻 中文 日韩| 欧美人妻一区二区| 青青国产精品在线| 高清无码久操视频| 亚洲91大片| 婷婷五月天av| aa片毛片| 日韩精品国模| 婷婷久久综合| 色欲Av人妻精品一区二| 欧美在线色| 国产精品老师| 超碰在线人人射| 亚洲成人妻日韩在线| 亚洲AV无码国产成人| 97爱爱爱| 一本色道久久综合精品婷婷| 丝袜熟女2P| 色97欧美| 国语国产操逼伊人AV网| 91撸色网 玖玖网 欧美| 亚洲图片91| 午夜精品久久久久久久| 中文字幕在线观看永久| 欧美一区二区三区不卡高清视频| 五月天激情四射| 综合久久97| 天天日美女的B| 丁香五月综合| 亚洲天堂人妻熟妇视频| 久久久青青草| 香蕉免费一区二区三区不读 | 欧洲色色| 精品久久久高清无码| 麻豆熟妇乱妇熟色A片在线看| 亚洲中文字幕乱码无码一区二区| 成人午夜小视频手机在线看| 国产精品香蕉| 91AV国产精品| 人妻人人澡人人爽人人| 99久久99久久综合| av在线一区二区三区| 午夜精品久久久| 久久9999 | 免费一二区| 亚洲好色人妻| 大香蕉欧美国产日韩高潮| 999在线电影香蕉| 日本123区操B视频| 久久69精品久久久久久久| 中文字幕在线免费观看 | 中文有码第五页| 五月天婷婷综合网| 亚洲免费人妻在| 91深夜夜| 三男一女不戴套的A片| 少妇的嫩逼图片| 亚洲亚洲亚洲天堂天堂| 少妇内射www在线观看视频| 啪啪91| 91九色首页| 女人双腿搬开让男人桶| 一级黄色视频网| 国产精品4p在线观看| 欧美91精品国产自产| 久久女人| 天天噜| 久久粉色| 94色色电影网| 快灬快灬 一下爽蜜桃在线观看| 欧美,亚洲,日韩,v,天堂,手机在线观看| 美女AV一区二区| 久久综合精品一区二区三区| 日韩无码嘿咻黑热久| 伊人成人中文字幕久久网| www.99热| 欧洲色色| 乱日视频| 日本女厕偷拍| 美女大乳久久久久久久女人18| 亚洲男人天堂2012| 熟女天天干| 情侣操 逼视频99| 天堂伊人久久| 久久久免费懂色| 一摸二插三插| 欧美春色| 亚洲另类春色| 襙一襙| 国产乱伦性爱区| 日本精品无码三级网站| 黄色欧美性爱视频| 激情五月天色色网| 9久综合网| 岛国AV一区二区电影| 九九英色视频| 人妻夜爽夜夜爽| 大茄子熟女AV导航| 亚洲视频一二区| 欧美日韩国产人人| 夜夜精品视频一区二区| 欧美在线干| 亚洲熟女性高潮久久久| 五月天亚洲网| 啊啊啊久久| 日韩精品资源专区二区| 能在线播放的国产三级| 成人免费在线网站| 3571色综合一区二区二区| 色性欧美| 欧洲自拍色图gif在线| 十八禁黄色| 国产午夜精品理论片a大结局| 岛国片在线播放| 中国探花熟女| 91 丝袜在线| 懂色影视久久| 亚洲精品久久久久毛片A片拉屎 | 色爱三区| 久久久久久久久久久97| 呦女网站| 操东北女人| 五十路三级片| 啊啊啊啊啊在线观看网址 | 黄色成年| 干b在线性社区| 在线情色电影 91大| 97干com| 一本一首道人妻少妇免费久久| 激情情色五月天| 女性喷水高潮在线观看| 久久精品国产免费观看99| 蜜伊人色综合97| 91青青在线| 99这里只有精品国产| 色婷五月| 国产精品久久久久久久久久久久久久久久| 国产精品丝袜在线| 欧美一级国产一级| 国产精品青青草| 蜜臀99久久精品| 成人av在线播放| 久久秀这里有精品| K8久久久久| 探花一区二区三| 国产av青草| 亚洲欧美97| 免费中文在线| 日日噜噜夜夜久久亚洲一区二区| 起碰97| 婷婷尹人大香蕉免费| 91劲爆| 亚洲精品天堂久久A∨51成人漫| 性感女人网页在线观看视频| 国际精品久久久| 日本国产欧美高清在线| 亚洲男人的天堂在线看| 美国日韩黄片| 18精品一区| 干超碰碰熟女| 色噜噜狠狠色综合日日| 久久人妻一区二区三区高清| 亚洲蜜乳av| 日本欧美色| 少妇一区二区三区精选| 亚洲A色| 成人av性爱电影在线观看| 麻豆视频test| 成人怡红院| 艹我哪美一区无码| 亚洲另类天堂| 操人妻少妇中文 | 影音先锋新男人| 蜜臀AV成人精品蜜臀AV久久| 精品无码久久久久久久杏吧| 91久久国产综合久久| 啊啊啊啊网站| 日本免费一区二| 国产精品不卡高清在线观看| 午夜呻吟欧美| 国产午夜在线观看视频| 中文字幕超碰CAO| 国产精品干干干| 97天天在线| 五月天色图| 97天堂| 一二三啪啪专区| 欧洲黄色网| 久久久久网站-538在线视频-欧美永久乱码 | 亚洲字幕一区二区| 亚洲一二三四区在线免费看视频 | 好爽要喷了| 99热国产| 久久夜夜| 欲香欲色天天天综合和网| 久久亚洲AV无码专区首页| 久久人体一区二区| 99热久| 女沟厕偷窥piss小便| 青青久操| 国产精品老师| 69天堂| 性爱欧美五月| 国产一区二区三区影片| 综合97| 无码视频一区二区| 中文字幕日本久久| 亚洲黑人在线| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 成人AV在线网站| 天堂九九九九九九九九九| 国产在线观看91精品一区| 激情情色五月天| 欧美色三级片91| av网页一区二区三区| 加勒比aⅴ| 日韩 欧美 校园一区| 欧美成va视频网站| 亚洲男人综合| 99在线观看视频在线高清| 爱干爱射网啊啊啊| 美女黄频a美女大全免费皮| 97超碰碰| 后入式999| 亚洲瓯美色图| 日本女人操逼| 成人av影院在线观看| 99热一区二区三区四区| 日本大香蕉| 欧美|91色综合| 国产又操| 国产日韩欧美中文在线播放| 啊啊啊啊免费视频| 超碰日韩美妻| 爱欲AV| 国产久久久久久久久一区二区| 国产婷婷综合在线观看| 亚洲情色 自拍| 97在线无精品| 亚洲另类久操网| 色优久久| 国产一级黄色片在线观看| 国产亚洲深夜激情| 国产99999| 超碰97综合网| 激情婷婷丁香| 日韩av在线精品观看| 久久九九99| 欧美se亚洲| 亚洲精品一区中文字幕乱码| 日本性爱不卡视频| 一级日本牲交大片好爽在线看| 成人性生活高清视频在线播放| 99日免费视频中文字幕| 麻豆性爱视频在线播放| 久久精品视频久久久| 韩日精品四区| 婷婷色导航| 国产精选三级在线观看| 久久黄色性爱视频| 久久精品欧美一区二区三区不卡| 国产视频人人网| 性色A∨91| 婷婷激情四射| 清纯唯美亚洲综合| 九七色图| 中文字幕三四五区| 国产免费内射视频| 狼人狠干| www国产精品| 亚州色综合| 国产精品视屏| 欧美成人性活片| 久久东京热久久| 97免费视频在线| 99999国产精品| 人人妻人人爱人人玩| 久久色精品视频在线| 国产97亚洲| 在线视频 亚洲精品| 午夜舔阴达高潮视频免费看| 免费一二区| 91被操| 麻豆国产视频精品观看| 欧美精品一区二区少妇免费A片 | 丁香九月激情啪| 婷婷五月天av| 亚洲色图超碰在线| 日本啊啊啊啊啊视频| 亚洲激情天堂网| 大香蕉色欲AV| 久区视频| 日日干天天干夜夜爽| 亚川综合视频| 欧美劲爆视频一区二区| 天天爽天天操| 国产天天骚| 91天天爱| 国产日韩美女小穴视频网站不卡| 天天日天天看| 性爱网站一区二区| 国精精品无码一二三区水多多| 免费看日产一区二区三区| 中文字幕五区| 免费网站观看www在线观| 女上位精品在线| 男女国产精品| 青青免费在线视频一区| 国产一区二区在线电影| 69超碰综合| 91天美传媒在线观看| 精品国产乱码久久久久久久| 精品久| 综合五月婷婷亚洲一区| 久久九九综合| 亚洲欧美国产中文字幕| 九九久久国产精品怡红院| 麻豆天美一区二区| 美国一区二区三区视频| 五月婷婷激情网| 青草香蕉网| 九九热精品| 亚洲无码免费看| 91粉芽高清在线一区二区| 亚洲视频,小说| 日日骚网站| 一区二区三区亚洲| 91在线页| 一区二区三区四区五区久久久久久| 色吧91| 搡老熟女老女人老熟妇免费视频| 观看视频图片一区二区三区| 国产天天噜一噜久久久| 玖玖爱在线视频免费观看| 99热精品在线播放| 99只有精品| 国产女大学生AV| www.天天干| 99热国产| 午夜国产乱伦视频| 超碰人人乐97| 97 国产精品| 亚洲三区视频| 欧美日韩人人早| 伊人网高清| 欧美做爰无码A片视频| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 亚洲性爱成人| 天美传媒国产原创中文字幕亚洲欧美另类| 97视频在线视频| 欧美精品久久久久久久丰满| 九九热在线视频| 女人香蕉久久毛毛片精品| 综合在线导航一区| 操b网站亚洲无码| 91天天综合| 大香蕉碰碰| 9Ⅰ超碰| 5278欧美一区二区三区| #NAME?| 午夜一级免费毛片| 9精品在线| 国产丝袜欧美在线视频| ss久久| 凹凸视频在线一区二区| 一区二区你上我| JuliaAnn丝袜熟女系列| 超碰av在线| 天天肏夜夜肏| 超碰99在线观看| 999热日韩精品| 国产又色又爽又舒服的三级视频| 欧美91色| 国产激情片在线观看| 亚洲脚交| 久久老子无码午夜伦不卡| 亚洲影视高清第一页| 亚洲aV无码成人在线观看| 欧美性第1页| 熟女乱伦二区| www.男人的天堂| 欧美人妻精品| av一区二区三区不卡| 天天天肏屄欧美| 欧美1区二区三区公司| 国产精品视频| 亚洲强奸乱伦影视网| 久久精品女同亚洲女同13| 亚洲AV无码久久久国产精品| 中国和日本人色哪个不下载能放| 九九99精品| 性一级黄色录像片网站导航| 蜜色网色哟哟| 国产精品ⅴ无码大片在线看.| 求求你操操我| 一区二区三区 日韩欧美| 黑丝制服中文字幕| 久久,精品一二三| 99久久久无码国产精品性啊聊| 欧美在线伊人色| 午夜AV人气不卡| 亚洲清纯综合| 成人贴图日韩欧美| 天天艹天天日| 婷婷精品久久av影视| 欧美综合自拍成人自拍第二十页| 男女一进一出视频久久| 天天天天做夜夜夜夜做| 欧美成人性爱视频大全| 七月婷婷综合| 日本九九久久99| 五月激情视频| 国模无码人体一区二区三| 国产精品午夜福利视频| 亚洲天堂电影精品一区| 影音先锋日本乱伦| 综合熟妇一区二区三区| 国产视频一区二区三区久久亚洲天堂 | 男人的天堂啪啪| 国内偷自视频区视频综合| 熟女久久| 91伊人大香蕉| 操99| 高潮的A片激情扒开一区| 狠狠入| 日韩钢筋无码高清啾啾啾| 久久精品99| 日本狂喷奶水在线播放212| 欧美综合色,www| 77国产精品| 淫色网综合| 九九热最新| 中日韩久久久| 肏逼视频日本| 亚洲a色| 狠操91,com| 少妇天堂网络| 日本在线一二 | 日韩精品一二三四| 午夜无码精品免费看性色| 久久精品一区二区三区四区五区| 色情婷婷久久五月天| 淫色网综合| 骚逼高潮久久精品| 国产呦精品一区二区三区下载| 欧美v亚洲v综合v国产v妖精| 96超碰网| 超碰偷拍| 91色色综合| 97色色国产视频| 久草精品热视| 激情丁香五月| 四虎影院成年人片| 欧美亚洲另类在线蜜桃| 亚洲图片色图欧美另类| 人妻三级在线中文字幕| 熟妇人妻丰满久久久久久久无码| 色天堂在线观看| 九九英色视频| 亚欧美天堂在线| 玖玖视频在线资源一区二区三区| 色色色色电影网| 熟女字幕| 欧美三级中文字幕hd| 韩国黄片aaaa| 美国一区二区三区视频| 国内毛片国产欧美拍| 中文字幕精品探花视频| 999综合网| 人妻久久一区二区三区 | 超碰久热| 五月婷婷综合网| 婷婷综合五月| 91超碰人人操| 久久五月综合| 婷婷香蕉| 91大学精品激情戏| 婷婷六月天| 少妇高潮99p| 美女露胸露奶头| 大香蕉伊人亚洲| 天天干天天日天天射黄色大片| 人妻日日夜夜精品| 日本一区二区三区精品| 亚洲熟女乱色| 久久大线蕉一区| 亚精品无码毛片一区二区三区| 91天美传媒在线观看| 韩日精品福利视频一区不卡在线免 | 天天射日日干| 超碰在线一区二区| 欧美一区二区男人天堂| 黄色成人网久久久久久|