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

ARTICLE DETAIL

資訊詳情

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

仿VisionPro的C# WinForm視覺(jué)框架:用Halcon封裝可拖拽工具流

仿VisionPro的C# WinForm視覺(jué)框架:用Halcon封裝可拖拽工具流 簡(jiǎn)介面向機(jī)器視覺(jué)開(kāi)發(fā)者的通用圖像處理工具源碼基于Halcon和C# Winform實(shí)現(xiàn)交互方式仿照VisionPro的拖拽設(shè)計(jì)用戶通過(guò)拖拽不同功能模塊即可構(gòu)建流程模塊間自動(dòng)完成參數(shù)與結(jié)果傳遞使JOB運(yùn)行走向直觀可控。工具采用插件體系每個(gè)圖像處理功能獨(dú)立封裝支持動(dòng)態(tài)加載易于擴(kuò)展與二次開(kāi)發(fā)適用于檢測(cè)、測(cè)量、識(shí)別等視覺(jué)場(chǎng)景。資源包共715個(gè)文件約21.94MB主要包含C#源代碼、資源文件、類(lèi)庫(kù)與界面圖標(biāo)其中cs文件398個(gè)、resx文件114個(gè)、dll文件34個(gè)、png圖片70個(gè)并附有可執(zhí)行程序與工程配置方便編譯與學(xué)習(xí)。目前已有237人學(xué)習(xí)下載。通過(guò)該源碼讀者可以掌握插件式圖像處理框架的設(shè)計(jì)方法了解Halcon與Winform的集成技巧、工具間數(shù)據(jù)流的銜接方式以及JOB流程管理思路也可基于現(xiàn)有模塊快速擴(kuò)展新功能縮短項(xiàng)目開(kāi)發(fā)周期。1. 一套仿VisionPro的WinForm通用圖像工具把Halcon引擎裝進(jìn)可拖拉的流程里做機(jī)器視覺(jué)上位機(jī)的人大概率都摸過(guò)VisionPro它那種把圖像源、定位、測(cè)量、通信拖到流程框里、用連線把工具的輸出喂給下一個(gè)工具的設(shè)計(jì)確實(shí)比在代碼里一個(gè)個(gè)調(diào)Halcon算子要直觀得多。這套資源做的就是同一件事基于C# WinForm把Halcon的算子封裝成一個(gè)個(gè)獨(dú)立工具工具之間仿照VisionPro的ToolBlock做值傳遞整套流程按JOB方式組織運(yùn)行。說(shuō)白了就是用Halcon代替VisionPro的底層算法把它的交互體驗(yàn)搬到自家上位機(jī)上。適合正在做視覺(jué)檢測(cè)項(xiàng)目、被Halcon腳本維護(hù)逼瘋、想在WinForm里搭一套可復(fù)用流程框架的C#工程師。底層引擎還是Halcon能干多少活全看你對(duì)算子的熟悉程度這一點(diǎn)先擺清楚。2. 總體架構(gòu)宿主、插件契約、值傳遞與JOB運(yùn)行器怎么拆拿到這套工程壓縮包第一步別急著編譯先把它的分層邏輯看明白。這類(lèi)工具做得好不好不取決于單個(gè)算子用得多花哨而是看宿主程序能不能讓工具之間干凈地協(xié)作。下面把這套資源里最常見(jiàn)的一版架構(gòu)拆開(kāi)講這也是我認(rèn)為它最值得參考的部分。2.1 先分三層宿主界面層、插件契約層、運(yùn)行管理層宿主界面層就是WinForm主窗體負(fù)責(zé)擺放工具列表、畫(huà)布區(qū)域、屬性面板和JOB運(yùn)行按鈕。它不直接引用任何具體工具的代碼只依賴(lài)一個(gè)定義好的接口。插件契約層是關(guān)鍵所有工具采集、預(yù)處理、找圓、模板匹配、測(cè)量、OCR之類(lèi)都實(shí)現(xiàn)同一個(gè)接口這樣宿主程序才能在不修改主程序的前提下把新工具dll丟進(jìn)插件目錄就完成加載。運(yùn)行管理層是JOB運(yùn)行器它持有當(dāng)前流程的工具鏈和連線關(guān)系按順序把前一個(gè)工具的輸出值寫(xiě)入后一個(gè)工具的輸入。這套資源里應(yīng)該能看到類(lèi)似的目錄結(jié)構(gòu)主程序工程、工具接口工程、若干獨(dú)立工具工程。工具工程之間互相不認(rèn)識(shí)只認(rèn)得契約工程里定義的接口。這種拆法和VisionPro的ToolBlock里工具是插件的思路是一致的好處是以后加新算法不需要?jiǎng)又鞒绦驂奶幨墙涌诙x得夠不夠穩(wěn)直接決定了后期的開(kāi)發(fā)體驗(yàn)。我在自己項(xiàng)目里一般把這個(gè)契約工程單獨(dú)編譯成一個(gè)dll版本號(hào)管得很?chē)?yán)因?yàn)樗泄ぞ叨家蕾?lài)它一旦接口簽名變動(dòng)整個(gè)插件目錄要重新編譯一遍。2.2 值傳遞的核心先定數(shù)據(jù)結(jié)構(gòu)再定接口VisionPro里每個(gè)工具都有輸入和輸出工具A的輸出連到工具B的輸入靠的是一個(gè)通用數(shù)據(jù)類(lèi)型。Halcon世界里這個(gè)通用類(lèi)型天然就是HTuple它既能裝整數(shù)、浮點(diǎn)、字符串也能裝圖像句柄之外的大多數(shù)標(biāo)量數(shù)據(jù)。工具接口里會(huì)定義輸入集合和輸出集合集合里每一項(xiàng)有名字、類(lèi)型、當(dāng)前值運(yùn)行時(shí)按名字從上游工具的輸出集合里取值塞進(jìn)下游工具的輸入集合。這套資源里有一個(gè)細(xì)節(jié)值得關(guān)注就是工具間的值傳遞不是靠強(qiáng)類(lèi)型對(duì)象而是用類(lèi)似鍵值對(duì)的方式。我拆過(guò)不少類(lèi)似工程這里用鍵值對(duì)是務(wù)實(shí)的選擇因?yàn)楣ぞ咛唷㈩?lèi)型各異強(qiáng)類(lèi)型依賴(lài)會(huì)把插件體系搞死。HTuple本身是弱類(lèi)型的傳圖像之外的參數(shù)特別方便但如果傳的是HObject圖像就得另開(kāi)一條通道比如在值傳遞包里包一層對(duì)象引用。2.3 JOB運(yùn)行器的走向按連線順序驅(qū)動(dòng)工具鏈JOB在這類(lèi)框架里就是一條完整的檢測(cè)流程。運(yùn)行器拿到當(dāng)前JOB的工具鏈表和連線表從起始工具開(kāi)始逐個(gè)執(zhí)行執(zhí)行完一個(gè)就查它的輸出連接到哪些工具把值推過(guò)去再執(zhí)行下游。這種執(zhí)行模型對(duì)應(yīng)VisionPro里的Job運(yùn)行邏輯也對(duì)應(yīng)Halcon里HDevelop腳本里順序調(diào)用算子的過(guò)程只不過(guò)把腳本文本變成了圖形化連線和參數(shù)面板。運(yùn)行時(shí)要做三件事解析連線表、組裝配料、按順序執(zhí)行。連線表在內(nèi)存里通常就是一個(gè)列表每個(gè)條目記錄上游工具ID、上游輸出名、下游工具ID、下游輸入名。這部分看清了后面寫(xiě)JOB運(yùn)行器就不會(huì)跑偏。3. 核心實(shí)現(xiàn)從ITool接口到插件動(dòng)態(tài)加載再到流程運(yùn)行的落地代碼3.1 先定ITool契約輸入、輸出、執(zhí)行三件事工具接口是整套體系的基石。按VisionPro的思路一個(gè)工具必須能回答三個(gè)問(wèn)題需要什么輸入、產(chǎn)出什么輸出、執(zhí)行時(shí)干些什么。工程里對(duì)應(yīng)的接口大概長(zhǎng)這樣public interface ITool { string Name { get; set; } string ToolType { get; } ListParamItem Inputs { get; } ListParamItem Outputs { get; } bool Execute(JobContext context, out string errorMsg); object GetConfig(); void LoadConfig(string json); ToolStatus Status { get; set; } } public class ParamItem { public string Name { get; set; } public Type DataType { get; set; } public object Value { get; set; } }Execute里的JobContext是運(yùn)行時(shí)上下文它至少應(yīng)該攜帶當(dāng)前幀的HObject圖像、當(dāng)前工具鏈的執(zhí)行日志、以及一個(gè)全局對(duì)象池用來(lái)臨時(shí)存放圖像句柄這些不適合塞進(jìn)HTuple的東西。我在自己的工程里還會(huì)往JobContext里塞一個(gè)CancellationToken配合Halcon算子的SetCheck機(jī)制流程冗長(zhǎng)時(shí)能及時(shí)中斷執(zhí)行。參數(shù)說(shuō)明Inputs和Outputs是運(yùn)行時(shí)值傳遞的懸掛點(diǎn)界面上的拖拉連線本質(zhì)上就是在編輯這兩個(gè)列表中的條目引用。GetConfig和LoadConfig負(fù)責(zé)把工具的參數(shù)序列化成JSON這是后面做JOB保存和回放的基礎(chǔ)建議你在自己的接口設(shè)計(jì)里也預(yù)留這兩個(gè)方法否則后面做項(xiàng)目保存功能時(shí)屁股要擦很久。3.2 插件掃描與動(dòng)態(tài)加載Assembly.LoadFrom的正確姿勢(shì)工具都實(shí)現(xiàn)ITool宿主程序怎么發(fā)現(xiàn)它們常見(jiàn)做法是啟動(dòng)時(shí)掃描指定插件目錄用Assembly.LoadFrom加載所有dll再通過(guò)反射找出ITool的實(shí)現(xiàn)類(lèi)并實(shí)例化。下面是這套資源里插件掃描的典型實(shí)現(xiàn)public ListITool LoadToolsFromDirectory(string pluginDir) { var tools new ListITool(); var files Directory.GetFiles(pluginDir, *.dll); foreach (var file in files) { var assembly Assembly.LoadFrom(file); var types assembly.GetTypes() .Where(t typeof(ITool).IsAssignableFrom(t) !t.IsAbstract); foreach (var type in types) { var instance Activator.CreateInstance(type) as ITool; if (instance ! null) { tools.Add(instance); // 工具自帶描述特性用來(lái)在UI列表里顯示友好名稱(chēng) var attr type.GetCustomAttributeToolDescriptionAttribute(); instance.ToolType attr?.DisplayName ?? type.Name; } } } return tools; }拿到實(shí)例之后界面上的工具箱就把它們列出來(lái)用戶拖一個(gè)到畫(huà)布就復(fù)制出一個(gè)工具實(shí)例加入當(dāng)前JOB。這里有兩個(gè)參數(shù)值得注意插件目錄我建議放成獨(dú)立文件夾不要和exe挨在一起因?yàn)檫\(yùn)行時(shí)更新dll時(shí)文件占用會(huì)帶來(lái)麻煩LoadFrom之后的dll會(huì)被鎖定這個(gè)問(wèn)題在避坑清單里會(huì)展開(kāi)講。邏輯說(shuō)明GetTypes()會(huì)觸發(fā)該程序集所有類(lèi)型的加載如果某個(gè)工具dll里混進(jìn)了依賴(lài)Halcon運(yùn)行時(shí)但其實(shí)沒(méi)被正確引用的類(lèi)型這里會(huì)拋ReflectionTypeLoadException。項(xiàng)目初期最容易翻車(chē)的點(diǎn)在這常見(jiàn)做法是捕獲異常后把未加載的類(lèi)型列表打印出來(lái)而不是放掉整個(gè)掃描過(guò)程。3.3 JOB運(yùn)行器按連線順序驅(qū)動(dòng)工具鏈JOB運(yùn)行器是整個(gè)框架的發(fā)動(dòng)機(jī)。VisionPro里按連線走向執(zhí)行工具這里用一張鄰接表跑BFS式順序執(zhí)行但視覺(jué)工具的JOB通常不是并發(fā)而是嚴(yán)格的先后依賴(lài)所以我一般實(shí)現(xiàn)成帶循環(huán)檢測(cè)的拓?fù)渑判驁?zhí)行。核心代碼框架public void RunJob(Job job, HObject frame, JobContext ctx) { // 先做拓?fù)渑判虼_認(rèn)沒(méi)有環(huán)形連線 var order TopoSort(job.Tools, job.Connections); ctx.Image frame; ctx.Log.Clear(); foreach (var toolId in order) { var tool job.ToolMap[toolId]; // 把上游傳下來(lái)的值灌進(jìn)工具輸入 foreach (var input in tool.Inputs) { if (ctx.RemoteValues.ContainsKey(input.Name)) { input.Value ctx.RemoteValues[input.Name]; } } // 執(zhí)行工具 string err; tool.Execute(ctx, out err); ctx.Log.Add(${tool.Name}: {err}); // 把輸出寫(xiě)入上下文供下游工具拾取 foreach (var output in tool.Outputs) { if (ctx.RemoteValues.ContainsKey(output.Name)) ctx.RemoteValues[output.Name] output.Value; } } }參數(shù)說(shuō)明ctx.RemoteValues是全局值表工具A輸出了一個(gè)叫CenterX的HTuple寫(xiě)入這張表工具B的輸入里也聲明了CenterX運(yùn)行器就用這個(gè)名字去匹配。這里要特別注意命名沖突兩個(gè)工具輸出同名值時(shí)后者會(huì)靜默覆蓋前者踩過(guò)坑的都知道這問(wèn)題在聯(lián)調(diào)時(shí)有多難查。邏輯說(shuō)明TopoSort是這套代碼里最值得優(yōu)先讀的方法工具數(shù)量超過(guò)10個(gè)之后連線會(huì)復(fù)雜到肉眼看不出來(lái)此時(shí)排序結(jié)果里若出現(xiàn)環(huán)運(yùn)行器應(yīng)當(dāng)直接報(bào)錯(cuò)而不是死循環(huán)。我習(xí)慣在排序失敗時(shí)把環(huán)的路徑拼成字符串打到日志里這個(gè)細(xì)節(jié)比工具本身更救命。4. 值傳遞與拖拉交互把ToolBlock的連線體驗(yàn)搬進(jìn)WinForm4.1 輸入輸出怎么映射HTuple與C#類(lèi)型互轉(zhuǎn)VisionPro里連線傳輸?shù)氖欠盒蛿?shù)據(jù)Halcon這邊的HTuple天生就是干這個(gè)的。但團(tuán)隊(duì)里新來(lái)的同事經(jīng)常直接把HTuple到處傳導(dǎo)致工具內(nèi)部全是if (hTuple.Type HTupleType.DOUBLE)這種分支工具多了以后代碼臭得沒(méi)法聞。這套資源里做了專(zhuān)門(mén)的值轉(zhuǎn)換層把HTuple轉(zhuǎn)成C#強(qiáng)類(lèi)型再交給算子使用這一步我認(rèn)為是整個(gè)工程最清醒的設(shè)計(jì)之一。public static double GetDouble(HTuple h, double defaultValue 0.0) { if (h null || h.Length 0) return defaultValue; try { return h.D; } catch { return defaultValue; } } public static Listdouble GetDoubleArray(HTuple h) { var list new Listdouble(); if (h null) return list; for (int i 0; i h.Length; i) list.Add(h.DArr[i]); return list; }邏輯說(shuō)明Halcon的算子返回值經(jīng)常是數(shù)組形式比如FindCircle返回的一組圓心的行列坐標(biāo)必須用h.DArr取完整數(shù)組不能只拿第一個(gè)。我在看這套資源的源碼時(shí)特別注意了它對(duì)空HTuple的處理默認(rèn)值兜底寫(xiě)得很全這直接提升了工具在缺參場(chǎng)景下的健壯度。4.2 拖拉連線的數(shù)據(jù)流UI層如何記錄連接關(guān)系WinForm原生控件里沒(méi)有現(xiàn)成的連線畫(huà)布所以工程里大概率用自定義控件或第三方圖形控件來(lái)實(shí)現(xiàn)拖拉交互。核心不在于畫(huà)線而在于每次拖拽完成時(shí)要記錄一條連接記錄存到Connection對(duì)象里public class ToolConnection { public string OutputToolId { get; set; } public string OutputParamName { get; set; } public string InputToolId { get; set; } public string InputParamName { get; set; } }這套資源的UI交互方式我的理解是工具箱在左側(cè)中間畫(huà)布擺工具圖標(biāo)右側(cè)屬性面板顯示當(dāng)前選中工具的輸入輸出參數(shù)網(wǎng)格。用戶從A工具的輸出行拖動(dòng)到B工具的輸入行界面畫(huà)一條線同時(shí)生成上面的ToolConnection記錄。落庫(kù)后運(yùn)行器就用它做值路由。這也是建議新手先讀的部分因?yàn)樗裊I事件和數(shù)據(jù)流解耦了。如果你正在自己寫(xiě)類(lèi)似的WinForm視覺(jué)框架這個(gè)對(duì)象模型可以直接抄比在控件Paint事件里畫(huà)線然后順手改數(shù)據(jù)要干凈得多。4.3 值傳遞的運(yùn)行時(shí)機(jī)制解析連線、填充輸入、收集輸出有了ToolConnection列表運(yùn)行時(shí)值傳遞的實(shí)現(xiàn)就水到渠成。執(zhí)行到工具A之前先掃描所有連線找出OutputToolId等于當(dāng)前工具ID的記錄從工具的輸出集合里取出對(duì)應(yīng)參數(shù)值寫(xiě)入全局值表。執(zhí)行完工具A后再掃描連線把輸出值推送到目標(biāo)工具的輸入集合。private void ResolveConnections(ToolConnection conn, ITool source, ITool target) { var srcOut source.Outputs.FirstOrDefault(o o.Name conn.OutputParamName); if (srcOut null) { LogError($輸出參數(shù)不存在: {conn.OutputParamName}); return; } var tgtIn target.Inputs.FirstOrDefault(i i.Name conn.InputParamName); if (tgtIn null) { LogError($輸入?yún)?shù)不存在: {conn.InputParamName}); return; } tgtIn.Value srcOut.Value; }參數(shù)說(shuō)明這里有個(gè)坑源工具的輸出類(lèi)型和下游工具的輸入類(lèi)型要保持兼容。比如上游輸出的是HTuple整數(shù)下游聲明的是double賦值時(shí)HTuple的隱式轉(zhuǎn)換沒(méi)問(wèn)題但如果下游聲明的是HObject圖像賦值就會(huì)直接拋異常。所以工具接口里ParamItem.DataType字段在UI上要做類(lèi)型顏色區(qū)分我一般給圖像類(lèi)參數(shù)標(biāo)藍(lán)色、數(shù)值類(lèi)標(biāo)綠色操作者連錯(cuò)線時(shí)能一眼看出來(lái)。邏輯說(shuō)明ResolveConnections的調(diào)用時(shí)機(jī)是執(zhí)行每個(gè)工具前且只解析直接相連的上游連線不跨層傳遞。VisionPro里ToolBlock也是這個(gè)邏輯工具B的輸入不會(huì)自動(dòng)拿到工具A的輸入值除非工具A把它作為輸出暴露出來(lái)。這一點(diǎn)跟新同事講流程走向時(shí)經(jīng)常被誤解建議你在自己的工程里注釋里寫(xiě)清楚。5. 避坑清單Halcon引擎、插件加載與WinForm交互的六條血淚經(jīng)驗(yàn)5.1 現(xiàn)象插件掃描時(shí)拋ReflectionTypeLoadException所有工具都加載不出來(lái)原因插件dll依賴(lài)了Halcon的halcondotnet.dll但該dll沒(méi)有復(fù)制到插件目錄Assembly.LoadFrom只會(huì)把待加載程序集所在目錄作為探測(cè)路徑依賴(lài)解析失敗。解決把Halcon運(yùn)行相關(guān)的dll統(tǒng)一放到插件根目錄或者宿主程序啟動(dòng)時(shí)提前用Assembly.LoadFrom預(yù)加載halcondotnet.dll。我做這類(lèi)框架時(shí)會(huì)在插件目錄下建一個(gè)runtime子目錄把Halcon runtime、第三方依賴(lài)全放進(jìn)去再用AppDomain.CurrentDomain.AssemblyResolve事件兜底手動(dòng)按名解析這樣插件更新時(shí)不會(huì)把主程序拖下水。5.2 現(xiàn)象程序運(yùn)行中替換插件dll提示文件被占用原因Assembly.LoadFrom加載的程序集默認(rèn)不卸載dll文件被進(jìn)程鎖定。在開(kāi)發(fā)環(huán)境里每次編譯插件前都要先關(guān)主程序聯(lián)調(diào)效率極低。解決把LoadFrom改成Assembly.Load(File.ReadAllBytes(file))可以繞開(kāi)文件鎖定但代價(jià)是程序集的依賴(lài)上下文脫離后續(xù)更新不愛(ài)生效。更實(shí)用的方案是把插件加載放進(jìn)獨(dú)立AppDomain整個(gè)JOB的加載和卸載都在子域里做。如果項(xiàng)目剛起步建議先接受換插件必須重啟程序的約束優(yōu)先用文件復(fù)制方式隔離插件版本等到插件數(shù)量超過(guò)10個(gè)再折騰獨(dú)立AppDomain不遲。5.3 現(xiàn)象跑的挺好但時(shí)不時(shí)閃退看日志發(fā)現(xiàn)是跨線程更新界面原因Halcon算子通常放在后臺(tái)線程執(zhí)行執(zhí)行結(jié)束后要把圖像和結(jié)果顯示在WinForm控件上。但HWindowControl或其他自定義繪圖控件的句柄只能在UI線程操作跨線程直接調(diào)用會(huì)拋異?;螂S機(jī)崩潰。解決執(zhí)行完成后用BeginInvoke把結(jié)果顯示邏輯切回UI線程。注意Halcon的HWindowControl在后臺(tái)線程里可以調(diào)用算子和HImage.SetWindowAttr但凡是綁定到控件的操作必須在UI線程把控件句柄當(dāng)作普通資源處理就會(huì)翻車(chē)。我在工具執(zhí)行耗時(shí)統(tǒng)計(jì)里專(zhuān)門(mén)加了一項(xiàng)UI刷新耗時(shí)避免把界面卡頓誤判成算法慢。5.4 現(xiàn)象工具輸出的HTuple到下游變成空值定位半天找不到原因原因工具輸出的HTuple是引用類(lèi)型某些算子失敗時(shí)會(huì)把輸出HTuple清空但工具本身沒(méi)有返回錯(cuò)誤狀態(tài)運(yùn)行器照樣把空值寫(xiě)進(jìn)了連線。下游工具拿到空值后算子直接異常。解決在Execute里強(qiáng)制約定算子失敗時(shí)必須返回false并攜帶錯(cuò)誤信息運(yùn)行器檢測(cè)到任一工具執(zhí)行失敗就終止整條JOB而不是繼續(xù)往下跑。這樣做的代價(jià)是調(diào)試時(shí)需要手動(dòng)單步跳過(guò)失敗工具但這個(gè)決策能避免一大半跑著跑著結(jié)果不對(duì)的玄學(xué)問(wèn)題。5.5 現(xiàn)象JOB里放了圖像采集工具但運(yùn)行時(shí)內(nèi)存持續(xù)上漲最后程序被殺掉原因Halcon的HObject是句柄式資源垃圾回收器不會(huì)立即釋放底層內(nèi)存。反復(fù)采集圖像不釋放舊圖像句柄內(nèi)存呈階梯式上漲這就是經(jīng)典的內(nèi)存泄漏。解決工具執(zhí)行完凡是輸出圖像到連線的上游工具要把圖像句柄登記到JobContext的ObjectPool里JOB結(jié)束后統(tǒng)一dispose。HObject實(shí)現(xiàn)了IDisposable但為了在插件場(chǎng)景下不跨dll卡Release我最終改成在JobContext里集中管理所有圖像生命周期比在每個(gè)工具里寫(xiě)using穩(wěn)妥得多。5.6 現(xiàn)象換了一臺(tái)機(jī)器運(yùn)行報(bào)許可證錯(cuò)誤Halcon窗口彈出來(lái)又消失原因Halcon的運(yùn)行時(shí)許可證是按機(jī)器綁定的。開(kāi)發(fā)機(jī)上能用不代表部署機(jī)能用大坑之一就是HALCONROOT和HALCONIMAGES環(huán)境變量沒(méi)配齊或者裝了64位程序但誤用32位license文件。解決部署時(shí)先手動(dòng)運(yùn)行一下Halcon自帶的檢查工具h(yuǎn)develop或license相關(guān)腳本確認(rèn)當(dāng)前機(jī)器能正常打開(kāi)HDevelop再跑主程序。然后把HALCONROOT、HALCONARCH寫(xiě)進(jìn)程序啟動(dòng)配置里而不是依賴(lài)系統(tǒng)環(huán)境變量。我在這上面吃過(guò)虧后來(lái)在自己的框架里加了一個(gè)啟動(dòng)自檢界面專(zhuān)門(mén)列出Halcon版本、license路徑、dll加載是否成功聯(lián)調(diào)時(shí)非常頂用。6. 把JOB保存成快照序列化工具鏈配置到JSON的一個(gè)落地習(xí)慣工具鏈的價(jià)值不止在于跑通一次更在于能把一條調(diào)試好的流程存檔下次換工件、換相機(jī)時(shí)只需改參數(shù)不重搭流程。這套資源里如果看了ITool里的GetConfig和LoadConfig你會(huì)發(fā)現(xiàn)幾乎所有工具參數(shù)都是可序列化的我在此基礎(chǔ)上補(bǔ)了一個(gè)JobSerializer用來(lái)把整套JOB配置落地成JSON。public class JobSnapshot { public string JobName { get; set; } public ListToolNode Tools { get; set; } public ListToolConnection Connections { get; set; } public DateTime SavedTime { get; set; } } public class ToolNode { public string Id { get; set; } public string ToolType { get; set; } public string ConfigJson { get; set; } }保存時(shí)遍歷JOB里的工具逐個(gè)調(diào)GetConfig()拿參數(shù)JSON連同連線表一起塞進(jìn)JobSnapshot。加載時(shí)先按ToolType去插件池找類(lèi)型創(chuàng)建實(shí)例再調(diào)LoadConfig()把參數(shù)灌回去最后重建連線關(guān)系。這樣整條流程從能跑變成可復(fù)現(xiàn)換線換產(chǎn)品時(shí)不用重新調(diào)一遍所有閾值這是做視覺(jué)框架后期幸福感提升最明顯的功能。斷點(diǎn)調(diào)試也是這套快照機(jī)制的直接受益者。我給運(yùn)行器加了一個(gè)調(diào)試模式每執(zhí)行完一個(gè)工具自動(dòng)把當(dāng)前JobContext的全局值表和圖像句柄導(dǎo)出到調(diào)試目錄這樣產(chǎn)品出問(wèn)題時(shí)能在事后復(fù)現(xiàn)當(dāng)時(shí)數(shù)據(jù)長(zhǎng)什么樣不用守在產(chǎn)線前干瞪眼。調(diào)試文件按時(shí)間戳命名配合JOB快照能定位到是哪一版參數(shù)跑出了異常結(jié)果。另外提醒一個(gè)實(shí)戰(zhàn)習(xí)慣我每次改完一套視覺(jué)流程都會(huì)強(qiáng)制走一遍保存快照 → 清空J(rèn)OB → 從快照恢復(fù) → 跑一遍的閉環(huán)確認(rèn)序列化沒(méi)有丟參數(shù)才敢把工程交給下一個(gè)人改。這個(gè)習(xí)慣幫我擋掉過(guò)無(wú)數(shù)次你昨天調(diào)的挺好的怎么今天就不行了的尷尬局面。希望這套資源的拆解筆記能幫你在WinForm里搭出一套稱(chēng)手的Halcon工具鏈拿來(lái)即用也好改著用也好先把拖拉連線跑通后面的擴(kuò)展路就順了。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
麻豆国产97在线| 亚洲男人的天堂一区二区| 国产黄a三级三级三级av在线看| 9精品久久久久| 国产乱色国产精品免费视| 嗯嗯嗯好爽| 超碰在线1234区| 内射小黄片| 青青11操操操操操操操操| 正宗无毛一线天嫩逼| 丰满人妻一区二区三区大胸懂色| 97精品综合久久网| 可以在线观看AV的网站| 亚洲限制级| 日韩免费中文字幕视频| 视频在线观看一二三区| 欧美日韩资源| 99这里有精品| 高清在线不卡一区二区 视频| 大鸡巴久久久| 成人av在线播放| 嫩草伊人久久精品| 最新国内自拍av免费| 婷婷五月天久久精品视频一区二区三区 | 亚洲综合888| 色波多| 骚逼高潮久久精品| 91丨国产丨白浆秘 洗澡动漫| 亚洲色天堂日韩中| 国产操逼网站亚洲一级黄色| 久久久久久久久久黄色网| 操逼日批| 久夜操| 婷婷色一区| 色婷婷国产精品一区在线观看| 婷婷五月天成人网| 97精品| 色九九九| 狠狠色噜噜狠狠狠狠狠色综合久久 | 天天操天天看| 色综合久| 国产乱伦性爱区| 男人网站婷婷| 国产亚洲精品自在线亚洲情侣| 97久久久久久久久久| 欧美99热| 91久久免费视频互動交流| 极品内射| 色九九综合| 精品久久久久久中文字幕视频免费| 国产13区| 免费操逼视频下载| 大香蕉78| 日韩美女高潮喷水视频| 国产精品久久久久av| 天天操天天插| 性饥渴少妇av无码毛片| 久草毛片| 国产熟妇一区二区| 婷婷亚洲综合| 欧美大波激情xxxx| 欧美色图20P| 宅男91视频在线播放| 操操逼视频| 亚洲在线A| 天美传媒国产原创中文字幕亚洲欧美另类| 久久久久久久九九九九九九| 激情欧美97| 久久人妻四季| 无码黑人精品一区二区三区三| 97伊人超碰| 青苹果影院男人的天堂| 性爱视频久久| 国产激情av女片自拍| 亚洲欧美国产成人综合不卡| 视频在线观看青青99国产| 婷婷五月天AV| 精品亚洲黄色片 国产精品导航一区二区| 97久久超碰亚洲| 国产精品久久发布| 国产成人无码网站在线视频| 亚洲国产另类在线中文| 男人的天堂三级| 国产传媒1234区| 亚洲成人免费电影| 成人三一级一片aaa| 高清无码人妻久久久一区二区三区aⅴ| 97青娱乐超碰久久| 精品无吗久久| 亚洲五区熟女| 操操操操操操| 91亚洲黑人| 蜜臀操逼黄色视频操的好爽| 无码精品久久久天天影视| 日本大香蕉综合网红本杳社区| 日本啊啊啊啊啊视频| 最新欧洲欧美日本激情网站| 久久精品中文字幕无码l| 激情色图| 蜜乳AV免费观看| 亚洲自拍97| 久久亚洲日韩熟女精品| 亚洲最大成人a毛毛片| 96麻豆精品一区二区三区| 小草av不卡亚洲二区| 天天综合AV| 国产伦精品一区二区三区在线观| 亚洲囯产精品女人久久久| 色牛aV| 神马麻豆福利院| 97jingpin| 2000亚洲男人天堂| 亚洲淫乱骚妇AV| 嗯嗯嗯啊啊啊操的我好爽| 九九综合| 毛片17S| 天天综合,91综合永久| 亚洲欧美经典一区二区| 欧美一区二区亚洲天堂| 99久久精品国产高潮| 18禁美女裸体无遮挡啪啪| 老子午夜伦不卡影院| 97免费在线| 大逼色网站| 黑人性欧美| 久久久999国产| 丝袜视频网国产90| 亚洲区小说| 久久风骚城市| 女人香蕉久久毛毛片精品| 天天天堂影视日韩亚洲91| 亚州 综合 色图| 欧美日韩亚洲高清不卡一区二区三区| JULIA人妻风俗店中出电影| 麻豆 欧美 日韩| 欧美日韩性感| 久操高青| 人妻人人澡人人爽人人| 二三四区精品| 人人爽夜夜玩视频| 97中文字幕一区| 东京热,男人的天堂| 亚洲人妻色图| 欧美亚洲国产91在线| 第四色奇米影视777| 国产亚洲精品美女久久久m| 国产成人久久久精品免费AV| 日韩免费人妻色情网站| 亚洲日韩青青草色月| 天天综合网在线| 香蕉免费一区二区三区不读 | 清柠毛片| 久久e6只有精品| 久草婷婷| 美女上床网站| 久久久久免费看少妇A片特黄| 色色色色日本| 国产9l 大屁股| 亚洲精品97| 国产探花日韩援交| 曰韩av中文字幕专区| 日韩精品区二区三区不卡| 丁香五月天婷婷姐| 欧美熟女丝袜| 97干在线视频| 高清无码一区二区三区| 日韩久久激情精品| 天美传媒Av在线| 日天天九九天堂666| 欧美天天性| 一起草日韩| 99熟女| 熟女中出视频| 午夜精品久久久久久久久久久久久| 不卡av免费在线网址| 天天搞在线综合网| 欧美成人精品一区二区三区| 蜜乳av一区二区三区| 欧美一二三| 精品国产丝袜一区二区三区乱码| 日日干日日| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 黄色激情电影在线观看| 99性爱视频| 99热导航| 亚洲丝袜诱惑| 免费操逼视频下载| 日少妇亚洲版| 亚洲男人天堂av| 国产传媒操逼视频| 欧美天堂日韩三级国产传媒| 亚洲 欧美综合| 免费1级a做爰片观看| 95人妻爽爽人人做人人澡 | 狠狠操夜夜| 红杏大香蕉| 锕锕好爽 死我在线观看| 84YTCOM性无码| 免费强奸av| 性色乱AV一区二区| 成·人免费午夜在线观看| 国产激情av女片自拍| 色 婷97| 欧美草草高清日韩视频| 秋霞曰韩R级| 欧美爆操91| 九久久精| 婷婷探花久久精品一区| 天天看天天干| 蜜桃久久一区二区三区| 91久久久久久久| 999精品乱码| 色爱国产| 青青草大香蕉视频| 亚洲蜜桃V妇女| 欧美91网站| 日本成熟少妇A∨网站| 人妻激情偷乱视频一区二区三区 | 欧美熟女少妇| 欧美色图20p| 在线99热| 男人综合网| 婷婷久月| 99久久99九九99九九九| 91蜜桃婷婷狠狠久久综合9色| 国产女人9999| 久久精视频美日韩在线视频| 欧美综合网1| 免费的黄片有限公司| 97资源超碰| 日日爱99| 青苹果影院男人的天堂| 色就色综合| SS久久| 欧洲亚洲国产综合在线| 日本久久综合| 亚洲天堂7777| 91亚洲黄色网| 97操操| 日本女人久久久| 亚洲精品男人的天堂| 精品玖九九久| 久久手机好看网站| 日韩精品一区二区日韩| AV中文字幕剧情1区2区3| 国产美女自拍AV| 人妻在线大香蕉| 眼镜人妻101.com| 久草精品一区 | 影音先锋中文字幕日本好一区二区| 性交一区二区在线播放| 天天干一干| 国产综合久久久麻桃个| 久久夜嗨| 天天精品| 亚洲性网| 国产青视频| 思思热久久成人| 91欧洲入口| 激情五月综合网| 中文字幕丰满子伦无码专区在线视频最新| 黄网站黄视频网站进入口| 欧美综合娱乐久久| 夜夜高潮夜夜爽夜夜爱爱一区| 丁香激情五月| 色乱二区| 亚洲欧美电影| 9精品久久| 白嫩国模丰满一二三区| 麻豆国产97在线| 久久久男人的天堂| 五月天婷婷基地| 色呦呦国产精品免费看| 亚洲诱惑天堂| 亚洲综合在线高清| 成人性爱电影网| 黑人娇小av在线播放| 亚洲欧美精品久| 日韩一级片| 精品久久久av无码免费| 久久久久921| 一本道综合色图| 日本孕妇一区二区视频操逼免费看| 青青草色插素人| 日本色婷婷| 成人AV超碰免费在线| 精品一区二区久久| 视频在线观看一二三区| 曰韩无码777| 2024黄色视频| 97 国产精品| 熟妇人妻一区二区| 超碰在线国产| 欧美黑人精品在线播放| 亚州男人天堂| 91在线一起| 狼人综合婷婷激情四射| 午夜男人一级A片7777| 国产精品人妻一区二区| 啊啊啊好大好深| 欧美91网站| 小草精彩毛片| 五月丁香综合网| 嗯啊抽插大香蕉网页| 国产精品美女| 欧美se综合| 偷拍色图| 污污污8888| 欧美亚洲性爱一区二区| 五月丁香在线| 极品极品色影院| 亚洲精品国产专区在线观看| 欧美性xxxxx狂欢| 91中出在线| 中文字幕AV片| 久久夜色一区二区| 热天堂一区二区| 91超碰在线观看| 国内操逼视频二区| 一区中文字幕二区日韩| 五月天婷婷欧美三区| 亚洲美女自拍偷拍视频| 无码日韩人妻av一| 26uuu欧美日韩| 久久AV无码AV| 欧美综合91| 九九精品网| 欧美综合网站999| 色老久久| 国产中文字幕在线观看| 久久噜| 伊人伊人LD| 美女91在线观看| 清清一区二区三区四区不卡视频| 天天爽天天| 大香网伊人久久综合| 欧美黑人精品一区二区| 国产成人自拍视频在线| 人人操AV| 大香蕉97久久| 六月婷婷五月丁香| 五月婷婷丁香六月| 另类小说五月天| 九九AV| 99精品热| 久久国产精品91| 四虎影库国产精品免费| 亚洲欧美九九| 精品网站9999| 日本五十路在线| 久久动漫精品视频这里只有精品| 操91| 超碰 欧美| 4tube欧美女厕所| 国产激情在线| 欧美激情久操网| 看日韩黄片| 人人操人人插 - 百度 - 百度| 九九九精品成人免费视频小说| 欧美天天| 中文字幕一区二区三区四区在线视频| 免费观看性欧美一级| 日韩欧美成人综合在线| 日本一区二区做爱的视频| 欧美日韩操逼嗦吊| 欧洲综合视频| 色九九九九| 国产精品久久久久999| 九九九国产精品| 天天干18禁| 99精品国产户外露出| 国产精品嫩草影院午夜两性| 国产精品自在自拍视频| 国产高清1234区| 久久久久9999妇女| 精品免费成人久久| a片自拍直播视频| 成全在线观看免费观看| 中文字幕黄色片| 高清不卡一二三区视频......| 99热精品国产| 亚洲精品乱码久久久久久蜜桃麻豆| 五月综合色| 九九热免费国产视频婷婷伊人五月| 少妇69中文| 五月天欧美色图| 亚洲AV无码乱码| 国产AV色黄看到爽| 日韩一区二区精品视频| 骚熟女吞| 蜜臀久久99精品久久久电影| 中文字幕一区二区韩| 久久思思热| 夜夜騷av、一區二區| 天美久久久久| 国产精品成人久久一区二区三区 | 欧美中文字幕一区| 97操B| 性色av大全| 日本精品高清一二区一本到| 丝袜制服字幕在线| 正宗无毛一线天嫩逼| 91丨国产丨白浆秘 洗澡动漫| 久久av成人无码免费| 狼天天狼天天大香蕉| 99re6国产精品99re| 老熟妇91| 亚洲AV成人无码久久精品播放| oumeisetu综合| 2019亚洲男人天堂| 日产欧美电影一区二区三区| 加勒比大香蕉视频在线| AV色图| 婷婷色色五月天福利| 97久久久| 美女骚尻视频| 中文字幕奈奈美被公侵犯| 日本91白丝| 中文字幕午夜精品久久久| 欧美中文字幕日韩在线| 青娱乐大香蕉| 偷拍精品一区二区三区| a久久| 人妻少妇久久| 国产不卡免费在线视频| 亚州熟妇精品| www亚洲免费| 97超碰美国| 日本2020一区二区| 日日碰狠狠添天天爽超| 亚洲人久久久网| 内射老妇BBWX0C0CK| 啊…啊…操我用力操我 | 亚洲天天更新| 一区二区激情国产熟女 | 女人高潮抽搐喷水视频网站| 91色综合色| 国产一区二区三区久久久精品| 欧美熟妇视频| 试看60秒 爽| 97婷婷色| 欧美色九九| 国产67194| 日曰骚久久精品| 国产呦精品一区二区三区下载| 精品9区| 亚洲成人性爱网站在线播放| 91热情品| 日本不卡高清视频| 精品人妻一区二区三区夜夜| 国产高清26uuu| 97人亚洲综合字幕| 啊啊啊想要| 亚洲欧美不卡线| 香蕉综合网| 亚洲男人天堂网站| 五月婷婷激情| 放黄片放3级黄片没穿衣服| 久久国产精品91| 一区二区三区美女超清| AV高清一区| www.yeyecao| 久久伦理视频久久大香蕉视频| 免费精品人妻一区二区三| 老司机午夜福利视频一区二区| 久久男人精品| 成人开心网在线视频| 亚洲乱熟女一区二区三区大香蕉| 97精品人妻一二三四| 五月婷婷AV| 999久久久九九九九| 成人AV素股で擦久久| 成人精品久久久午夜福利| 国产丰满熟夫69mpp| 污污汅18禁网站在线永久免费观看| 久久999久| 欧美极品性爱天天射| 亚洲偷拍欧美激情| 丁香五月av| 欧洲性爱无码区| 超碰这里只有精品| 人人考人人摸人人干| 91性片| 无码heyzo高清一区| 最新av中文字幕高清| 亚州色阁| 99精品在线观看| 99婷婷一区二区| 中国小夫妻勾搭露脸淫荡对白 | 亚码激情| 欧美一区二区三区入口| 99999久久精| 嗯~啊~快点 死我视频| 中文字幕精品一区二区精| 欧美在线电影| 欧美少妇高潮久久91| 亚洲色欲天天人妻无码系列专区| 一起草高清无码| 91国精产品| 伊人AAA| 亚洲高清无毛一区二区| 人妻激情视频| 久久久久ab| 中文字幕永久在线| 天天色天天干天天射| 亚洲自拍小说| 国产白丝在线| 嗯啊不要啊在线 | 久久久91| 91艹| 怡红院怡春院| 日本色婷婷| 日韩精品碰碰| 蜜臀久久99精品久久久电影| 日韩欧美蜜桃精品久久中文字幕久久 | 亚洲午夜蜜臀| 日韩字幕一区| 精品人妻一区二区三区视频在线| 91久久国产综合精品| 一区二区激情国产熟女| 一区二区视频在线播放| 无码久久亚洲高清,| 视频在线97| 亚洲自拍一区夜夜操| 丰满人妻一区二区三区四| 丁香六月东京热| 激情小说日韩无码| 人妻丝袜美腿中文字幕| 97欧美资源| 强奸熟女一区二区三区| 91殴美大片| 欧美亚性天堂| 色婷婷香蕉| 国产第25页在线观看| 精品亚洲成人免费在线| 又粗又长又大国产不卡| 熟女少妇视频| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 午夜国产成人精品视频| 天美传媒AV在线播放| 欧美,日韩,中文,另类| 亚洲大胆人体av| 激情露脸爱| 国产精品小视频一区二区三区| 欧美久热| 亚洲丁香花色| 免费看一级a性色生活片久久无| 国产精品麻豆视频网站| 亚洲第一狼人丝袜美女另类 | 婷婷另类小说| 国产美女91视频| 欧美日本久久精品一区| 91人人爽人人爽| 超碰79人人乐| 人妻夜夜爽天天爽麻豆三区网站| 超碰97起碰| 开心激情站| 亚洲AV免费在线| 五月丁香| 日本三级久| 蜜臀久久99精品久久久久久久久| 亚洲日本加勒比在线| 久久久蜜桃一区二区三区| www.激情| 高清不卡视频| 综合 青草 伊久久 影院 综合| 精品久久久av| 久久综合精品一区二区三区| 美腿丝袜高跟网免费视频免费视频| 成人女人国产| 美性中文综合网| 色综合20p| 在线小说视频一区| 骚货操死你| 啪啪自拍九九综合| 秋霞Av理论一级在线| 国产在线综合网| 日韩簧片免费看| 亚洲熟女性高潮久久久| 日本国产欧美高清在线| 色色激情五月天| 欧美日韩性感| 欧美色天堂网在线视频| 日韩中文9| 78m啪啪啪| 91夜色| 国精综合一二三区影视| 天天躁狠狠躁av| 91无码西班牙视频在线| 青娱乐啪啪视频| 韩国午夜理伦三级好看| 日本91白丝| 91国产精品在线看| 加勒比综合a∨| 国产欧美成人精品| 欧美v亚洲v日韩v最新在线二区 | 亚洲综合888| 欧美亚洲在线| 久久久久久久人妻| 国产自产自拍| 成年人黄色视频免费| 亚洲在钱| 国产农村妇女精品1区二区| 国产精品久久成人免费| 日本操逼aaaaa| 激情久久日韩精品中文字幕麻豆| 97超碰无码网| 蜜桃视频一区二区三区在线观看| 96AV精品| 激情视频网址| 亚洲一区日韩精品中文字幕| 婷婷丁香一区二区三区| 操91| 大香蕉欧美| 后入内射蜜桃臀| AA特级绝黄| 综合少妇网| 中文字幕二区日韩天堂| 亚洲国产欧美另类自拍| 日韩综合97p| 欧美日韩青操| 久草色悠悠在线视频| 国产人伦a片信息免费片| 蜜桃臀av一区二区| 欧美另类自拍| 久久精品小视频| 温婉少妇玩3p| 97这里只有精品| 热热色青青草| 欧美高潮在线| 欧美日韩999| 亚欧视频在线| 牛牛操视频逼| 熟女熟妇一区二区三四区| 国产精品色色| 中文字幕一区二区三区字幕| 97视频网站| 伊人久大| 精品女同一区| 色www精品视频在线观看| 成人情色一区二区| 日韩免费性爱视频在线观看| 精品中文字幕一区二区l - 百度| 天天日天天搞天天干| 国产精品96| 中文字幕一区二区三区人妻不卡 | 黄色片大香蕉| 色婷婷视频| 张柏芝国产一区在线观看| 天天亚洲| 无码78| 4tube欧美女厕所| 天天躁狠狠躁av| 在线女人91| 精品区9| 女人高潮抽搐喷水视频网站| 成人黑料社久久| 91深夜夜| 午夜.DJ高清在线观看免费7 | 国产精品一二三免费网站| 国产啊v在线免费播放| 国产亚洲色停停久久99精品91| 色五月AV| 水多多映视AV| 久久国产逼| 日本加勒比无码专区| 嗯嗯不要 视频| 蜜区区视频79| 久久精品国产亚洲粉嫩| 大茄子熟女AV导航| 精人妻一区二区三区| 91天天看| www.黄色在线| 日韩av影片在线观看| 五月婷婷六月丁香网址| A片 AV一级在线播放观看免费 | 日韩性爱一级片| 天天爱天天操| 一区二区三区黄色片a| 亚洲 欧美 第一页| 美国三级日本三级久久99| 大香蕉伊人网WWWn0n| 香蕉久久国产AV一区二区| 八戒午夜福利理论片| 女生久久网| 人妻人久久精品中文字幕| 超碰天天久久79| 视频二区美腿丝袜制服人妻欧美 | 黄色电影在线播放综合网站| 日本久久超碰| 色婷婷A V一二三四区麻豆综合| 欧美狠狠鲁| 国产又粗又又黄又猛| 韩国一级做A片免费的| 日本视频一区二区三区| av网站在线观看了| 久久久一区二区三区三州| 99热在线播放| 91综合网在线| 精品人妻一区二区三区视频在线| 欧美色爱综合| 97资源站久久| 亚川综合视频| 男人久久天堂| 97欧美日韩| 黑人性欧美| 欧美图片校园春色| 9精品久久久久| 久久精品国产97欧美精品亚洲| 国产人妻精品一区二区三区秋霞| 色偷综合| 亚州高清AV| 欧美综合色图网| 992大香蕉| 日本媚薬中文字幕在线| 91精品导航| 九九热九九| 97国产人人| 日本孕妇一区二区视频操逼免费看 | 丝袜人妻av一区二区| 国产传媒一区二区三区| 色汉综合| 人妻一区二区三区四区视频| 欧美日韩大香蕉| 中文字幕人成乱码熟女香港| 亚洲成人日韩小说| 亚洲成熟国产精品美女| 婷婷综合网站| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 亚洲第2页| 天天插夜夜操| 日本国产成人亚洲精品无码| 91天天综合日韩欧美| 人人爱人人乐人人操| 久久久久亚洲三级电影| 亚卅熟女乱色| 中文字幕黑人大片| 久久综合中文国产| 夜夜嗨免费视频| 91肉片| 欧美性爱1080p| 激情五月天视频| 在线天堂999| 日本97久久| 东京热一区二区中文字幕| 久久av成人无码免费| 翘臀vidoes| 91成人社区| 粉嫩av一区二区三区天美传媒| 国产精品嫩草影院午夜两性 | 久久久久久9| 国产一区二区三区视频在线看| 丁香婷婷久久 | 人人摸人人干| 天天情欲宗合网| 国产美女口爆吞精视频| 黑人精品成人一区二区三区| Julia Annxxxxx| 欧美成人性活片| www色日本| 91黑丝美女| 色妺妺AⅤ| 久久精品国产96精品亚洲拳交| 青娱乐导航AV| 日本二三四区| 国产极品一区二区三区三州| 日韩国产十八禁| 人人妻人人澡人人爽人人精品浪潮| 高潮的A片激情扒开一区| 91亚洲黑人| 老熟女综合网| 干婷婷综合网| 久九9精品| 亚洲国产av中文字幕久久| 99热97| 亚洲 欧美 第一页| 久久九九视频九九视频| 老熟妇综合| 亚洲一区操| 激情文学网伊人| 日本幼女18+| 国产精品亚洲一区二区三区四区| 久久欧洲| 9国产超碰| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 欧美精品久久久久久久丰满| 欧美在线官网| 精品国产乱码久久久久久蜜臀| 亚洲图片欧美在线视频| 亚洲情色 自拍| 色色操| 国产97视频| 欧美在线色图| www.99中文字幕| 国产精品电| 日韩一级片在线看| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 黄色AV免费| 校园春色综合色| 九九热久久99精品re| 不卡一区视频| 激情综合网五月婷婷五月天| 国产97在线播放| 2010男人的天堂| 日日操免费视频| 九九九九九九视频| 777奇米影视777四色| 午夜九九| 中文字幕91综合| 91搞逼视频| 97欧美色综合| 色97| 蜜乳AV.COM| 久久久久久裸体| 夜夜嗨AV一区天天| 欧美一区二区福利在线| 亚洲欧美综合网| 九一亚洲国产免费| 人人摸人人干人人拍97| 亚洲一二三四区| 欧美少妇色综合| 亚洲欧洲综合视频在线| 一区二区三区美女超清| 日韩亚洲97| 欧美色棕合| 国产精品蜜乳AV| 亚洲天堂精品日韩电影| 亚洲影视第一页| 91国产在线精品| 激情六月婷婷| 蜜乳Av成人片网站| 酒色综合网| 人妻内射一区二区在线视频| 色99在线| 中文字幕一区电影在线观看| 九九热AV| 中文字幕一区二区三区人妻不卡| AND人妻系列| 国产激情在线| 国产日韩无码一区二区三区久久区| Julia Annxxxxx| 欧美内射少妇| 99热精品在线在线| 毛片电影一区二区三区| 国产又黄又爽又刺激久久久久久| 噜噜噜噜久久久精品免费| 97爱啪| 97碰碰日本乱偷人妻中文的| 午夜久久一区二区无码中出| 韩日精品四区| 亚洲AV成人无码一区二区三区在线观看| 欧美伊人久久综合网| 亚洲一区二区av| 99热精品在线观看| 性欧美精| yy少妇精品久久| 黑人中出21连凳花野真衣| 久久久久成人蜜桃精品| 婷婷综合激情| www.色操逼| 国产精品制服丝袜清纯唯美| 日韩Va亚洲va欧美Ⅴa久久| 国产成人在线观看网址| 蜜臀视频网站| 亚洲欧美日韩偷拍色图| 97Ai亚洲| AV中亚| 91亚洲欧美激情| 91综合网在线| 青娱乐国产剧情av一区| 久艹日日日| 91亚洲欧美| 乱抡国产91| 中文字幕在线免费观看| 欧美色91| 精品国产精品一区二区| 一级性爱网| 91美女视屏| 国产男女边吃边摸视频网站| 五月天婷婷色| 白丝被操91| 国产1727欧美| 一二三四免费视频| 国产成年精品高清在线观看91| 亚洲精品丝袜| 久草免费福利在线播放| 99少妇内射| 少妇被玩视频二三区| 人人操人人插人www| 亚洲情色 自拍| 久久综合99| 国产一区二区精品久久99| 啊啊啊慢点| 九九热免费视频| 久久9久久| 91校园春色长篇| 欧美精品成人一区二区在线观看 | AV 少妇 人妻 偷拍| 亚洲日韩久久精品一区| 国产综合永久精品日韩鬼片| 91伊人久久在线| 蜜乳AV色欲AVAV无码| 91色欧美| 熟女中出视频| 国产呦精品一区二区三区下载| 欧美综合网站999| 亚洲五月丁香花狠狠干一区二区三区| 亚洲男人电影天堂| 96AV久久久| 人妻aa| 欧美色图亚洲色,麻豆| 夜夜一区二区| 欧美大波激情xxxx| h色99999| 91色情黑丝搞鸡在线观看一区二区三区三州| 欧美日韩中文字幕不卡| 台欧久久精品视频| 亚洲色图殴美色图激情乱伦| 久久久久久久| 久久亚洲熟妇在线视频| 五月婷在线| 日韩性爱1级片视频| 国产精品在线一区二区| 91麻豆天美国产欧美日| 日本三级网页| 秋霞一级A片黄色视频| 欧美日本天堂| 97精品国产97久久久久久| 亚洲啪AⅤ永久无码| 激情一区二区| 日韩人妻精品| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 天美传媒麻豆一区二区三区国产精| 中文字暮97| 亚欧无码在线| 中国操逼无码| 熟女熟妇一区二区三四区| 久久久久久久久久久久久久久乱码 | 亚洲综合五月天婷婷丁香| 美女操逼A A| 综合网亚洲在线| 97天天插| 久热久| 欧美 青青草| 欧亚洲精品有视频| 曰韩精品九九无码| 在线播放成人网站| 欧美做爰无码A片视频| 伊人久操| 视频分类 国内精品| 天天综合影院91| 99热这里都是精品| 国产呦精品一区二区三区下载| 五月婷婷hd| 国产午夜精品在线观看| 日本三级久| 中文字幕在线观看网址| 日韩欧美视频青青| 欧美裸体美女日麻屄| 日产国产精品中文久久婷婷| 一级乱伦网站| 97ai亚洲| 人妻熟女午夜精品在线| 亚洲欧美黄| 超碰在线974| 人人贴人人摸| 9997se| 婷婷久久综合久| 男女无套 免费网站| 欧美 亚洲 大香| 亚洲精品无码成人久久久99| 日夜尻逼网| 久久久精品国产亚洲伊人| 男人女人18禁片免费看网站| 动漫av中文| 蜜桃无码AV一区二区| 96麻豆精品一区二区三区| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 色噜噜狠狠色综无码久久合欧美| 亚洲爽图| 日韩色女精品| 99激情| 亚洲第一免费视频| 成人性交免费视屏| 婷婷色香| 99欧美| 波多野42部无码喷潮在线观看| 五月天人妻综合| 中文一区二区婷婷视频| 人人操人人狠狠操| 超碰无码加勒比| 这里只有精品97| 人妻少妇精品久久久| 人人天天欧洲| 97精品在线| 日韩欧美视频青青| 亚洲高清无码AAA久久久精品| 91老女人| 少妇三p| 国产精品3| 久久婷婷亚洲欧| 中文字幕第页| 欧美成人黄网色网站| 亚洲啪啪视频免费| 亚洲人综合19| 国产精品九九| 妇人噜噜| 一区黄二区黄| 99久久99九九99九九九| 亚洲最新av无码成人精品区| 国产v亚洲v日韩v欧美v片另类| 白嫩妹子国产骚| 中国黄色特级精品一区二区三区片| 亚洲乱色视频一区、二区在线| 婷婷五月天成人网| 超碰91在线| 国产成人精品日本视频| 午夜激情成人在线观看| 中文字幕天堂在线| 97操| 国产高清成人免费视频| 91网站18禁| 人妻久久一区二区三区| 国产精品农村妇女| 96国产精品| 国产精品禁久久久精品| 精品国产乱码久久久久久日本公司| 九九热视频这里只有精品| 人妻一区二区三区| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 色情成人五月天| 天天精品| 你懂得91| 超碰人人妻| 96AV精品| 日本精品人妻少妇一区二区| 国产夫妻一区二区| 欧美另类自拍 | 青青操在线亚洲视频观看欧美在线| 人妻在线臀日韩| 91久久18禁| 91视频综合在线| 人妻熟女一区二区在线视频| 色综91| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 曰本人妻人人澡人人夹| 国产人妻天天干精品| 综合一区中亚洲国产成人综合精品| 日本123区操B视频| 91精品电影18| 91性高| 国产日产欧产美韩系列麻豆免费| 国产97在线播放| 成人小说另类在线| 秋霞无码av鲁丝片一区| 国产毛片精品一区二区色欲黄A片| 大香蕉免费中文| 夜夜狼人妻| 丝袜美女诱惑 91 视频| 欧美性高潮| WWW操逼| 伊人影院综合是一个与深夜成人在线| 一区三区啪啪| 麻豆亚洲Av成人无码一区精品| 日本精品国产视频| 骚日日av| 亚洲第一免费视频| 涩涩五月天| 国产偷人妻精品一区二区在线| 怡红院久久老司机| 亚瑟国产精品久久无码| 婷婷综合激情| 精品一二三区女同| 国产自制av蜜乳| 偷窥自拍A片| 久久久不卡区一区二区三区久久久| 美女黄色91| 正在播放国产精品一区| 天综合网| 欧美综合中文| 插穴性爱视频在线观看| 大香蕉 222| 色色97爱| 国产精品久久久久久久毛片1| WWW4虎| 97色欧洲| 日本国产高清色www视频在线| 久久不卡一区二区| 精品国产乱码久久久影院| 日韩精品1区2区中文字幕| 2025亚洲男人天堂| 999久久久| 五月激情综合网| 东京热AV男人的天堂| 國產尤物AV尤物在線觀看 | 97国产精品国| 国产精品国产精品国产| 探花精品视频| 亚洲欧美激情小说| 国产伦乱91| WWW美腿丝袜香蕉中文| 国产51色综合久久免费| 欧美韩国你懂得在线 | 精品一久久久| 亚洲诱惑天堂 | 国产精品久久久久久夜夜夜| 91伊人大香蕉| 美国三级日本三级久久99| 农村少妇久久久久久久| 超碰97人妻免费在线| 国产尤物AV尤物在线观看不卡| 清柠毛片| wuyechaopeng| 日韩欧美性爱电影在线观看| 人人操人人搞人人草| 天色综合网| 丰满人妻-区二区三区免费看| 日韩欧洲操屄视频| 五月婷婷性爱| 熟妇高潮精品一区二区三区下载| 東南亚性呦成人伦理资源在线视频| 欧美呦呦性爱| 亚洲少妇色| 欧美熟妇精品黑人巨大91| 亚洲夜色在线| 人妻另类| 99热在线播放| 久久只有精品| 亚州乱码中文字幕综合久久久| 色香AV| 69AV女优男人的天堂| 眼镜人妻101.com| 欧美青青草视频| 久久xx| 亚欧无码线免费观看视频| av中亚| 艹少妇网站| 色五月天AV| 欧美操逼熟女| 好爽,再快点啊哈嗯嗯嗯嗯| 亚洲成人激情小说视频| 精品久久久久,69国产成人精| 日韩精品啪啪啪| 美女黄色一级A视频| 久久99九九九九6666免费观看软件| 人成午夜免费大片| 成人夜夜| 99色综合| 亚洲在线91| 中文字幕加勒比海高清无码免费视频 | 26uuu国产免费观看| 欧美久久人体| 六月色色| 97超碰色| 岛国人妻少妇av在线观看| 欧美一区二区三区互相| 九九热精品在线| 欧美不在线| 青青草视频久久久久| 久久91视频|