亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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)行按鈕。它不直接引用任何具體工具的代碼只依賴一個(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)樗泄ぞ叨家蕾囁坏┙涌诤灻儎?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)型依賴會(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列表里顯示友好名稱 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)了依賴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)格的先后依賴所以我一般實(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依賴了Halcon的halcondotnet.dll但該dll沒(méi)有復(fù)制到插件目錄Assembly.LoadFrom只會(huì)把待加載程序集所在目錄作為探測(cè)路徑依賴解析失敗。解決把Halcon運(yùn)行相關(guān)的dll統(tǒng)一放到插件根目錄或者宿主程序啟動(dòng)時(shí)提前用Assembly.LoadFrom預(yù)加載halcondotnet.dll。我做這類(lèi)框架時(shí)會(huì)在插件目錄下建一個(gè)runtime子目錄把Halcon runtime、第三方依賴全放進(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à)是程序集的依賴上下文脫離后續(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)配置里而不是依賴系統(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里搭出一套稱手的Halcon工具鏈拿來(lái)即用也好改著用也好先把拖拉連線跑通后面的擴(kuò)展路就順了。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
一区二区三区国产在线播放| 91五月天| 91中出视频| 久久国产视频专区一二三| 国产综合网站在线播放| 国产乱伦性爱区| 天天干夜夜鈤| 97操碰| 久久久噜噜噜久久久| 天天综合网日韩7799| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 日韩国产在线观看av| 亚洲精品人体| 99rre在线精品99re8| 青久操| 婷婷香蕉欧美在线一区二区三区| 丁香五月影院| 爱做久久久久久| 韩国午夜理伦三级好看| av一区二区三区四区| 国产精品白丝| 在线有码中文字幕| 静品嫩模一区二区| 欧美视频中文字幕区| 日韩一级成人毛片免费观看| 岛国黄| A级国产欧美激情在线| 啊啊啊操死我| 亚洲情欲| 啪啪视频免费在线观看| 另类图片综合| 亚洲性爱成人| 欧美一级美片在线观看免费| 国产精品久久久久久久久久梁医生| 久久亚洲日韩熟女精品| 嗯嗯不要视频| 免费成人自拍视频在线| 最新亚洲黄色免费电影| 亚洲精品免费中文字幕| 激情视屏国产乱伦强奸| 一级性爱aaaa| ′ !γ}丶。。久久精品欧美一区二区三区| 97福利视频| 婷婷色婷婷| 天天综合网国产| 麻豆天美久久91| 欧美综合自拍成人自拍第二十页| 亚洲成人一二三区| 久久免费精品96| 91九九九小逼| 午夜精品久久999热蜜桃介男人用| 国产精品视频播放| 中文字幕AV中出| 91bbbbbb| 国产女人和拘做爰视频| 日韩精品在线观看网站| 亚洲国产成人高清在线| 成人A片男人的天堂| AV色五月天| 少妇天堂| 中国农村熟妇毛片视频| 国产刺激视频| 久久同城AV| 亚洲第一视频 欧美风情 日韩| 日韩无码服务区| 日本在线999| 2017av无码免费无线播| 久久久久国产精品喷潮免费观看臀 | 国产区91柔拿会所技师| 国产 码在线成人网站| 亚州成人a∨| 使劲用力艹少妇视频一区二区| 91久久精品美女高潮喷水| 99热这里都是精品| 天天激情综合站| 人妻嗯啊啊在线播放| 国产精品91ai| 久久伊人影院| 日韩欧美一级特黄大片| 女人妻一区| 日韩中文字幕精品一区在线| 高清国产av无码| 精品射1999| 日本中文字幕一区| 久久男人的天堂| 欧美综合娱乐久久| 国产suv精品一区二区四区999| 北条麻妃性愛视频| 精品人妻一区二区三区在线视频不卡| 综合免费无码中文| juliaann精品熟女一区| 2017,超碰| 成年人性爱日韩| 麻豆天美电影一区二区| 91精品国产长腿丝袜美女| CCYY草草影院地址入口| 熟妇一区二区三区| 97爱综合| 97天天搞在线| 99热销国产这里有精品| 国产高潮AA片免费看| 亚洲精品国语在线播放| 久久99网站| 超碰这里有精品| 在线中文字幕| 欧美色997| 91精品人妻| 熟女突然公开看18禁影片| 男生女生啊啊啊啊| 夜夜草我| 男人的天堂VA在线| 亚洲中文日韩欧美大香蕉视频| 欧美最婬乱婬爆婬性视频| 久久日韩肥臀| 婷婷五月成人| 亚洲人久久久久日| 蜜臀AV成人精品蜜臀AV久久| 久久青青草原免费视频| 99re6国产精品99re| 久久久亚洲高清不打码| 大香蕉伊然在亚洲91| 嗯啊视频免费在线观看| 91女优在线观看 | AV污污污污| 熟女一区二区三区| 亚洲一区二区中文字幕| 国内一区二区三区| 婷婷丁香五月激情啪啪| 97超碰色情| 天天操av懂色| 久操网视频| 亚洲日韩熟女人妻高清在线| 精品毛片久久久精品毛片| 国产精品丝袜久久亚洲不卡| 国产99久久99热这里只有精品15 | 国产精品呦一区二区三区| 白丝少妇一区二区| 一牛影视成人片免费| 亚洲污污网站| 久久xxxx| 老熟女乱伦片| 九九综合网| 九九热精彩视频| 无码WWW免费视频网站| 青青三级视频| 五月丁香成人网| 天天操天天舔| 亚洲综合图色在线| 综合激情五月丁香| 日韩成年人性爱视频| 人人澡人人爽人人精品| 欧美少妇性爱网站| 蜜臀久久久99久久久久| 久偷拍| 午夜一区二区三区国产| 强奸抽插av| 无卡一区=区| 婷婷色影院| 国产区日韩区在线观看| 一区二区三区四区五区久久久久久| 色综合色| 一区二区视频在线播放| 国产偷人伦激情在线观看| 亚州色图片在线色| 91女人的网站| ?亚洲伊人伊成久久人综合网| 天天欧美| 男人天堂网手机版婷婷| 91在线限制级| 91色色色| 天堂俺去俺来也www久久婷婷| 91天美免费| 熟女自慰久久久| 天天干,天天日| 久草色悠悠在线视频| 思思热在线cao| 日本影视久久免费| 亚洲成人AB| 性爱AV天堂| 伊人色综合超碰| 中字乱伦AV| 中文字幕乱在线伦视频中文字幕乱码在线 | 伊人加勒比| 997色在线| 亚洲情色五月天| 欧美日韩操逼嗦吊| 国产人妻天天干精品| 久久 国产 无码| 一二三区精品视频| 亚洲中文字幕av| 精品久久九| sss视频华人在线| 丁香啪啪| 色婷婷五月天| 亚洲精品99| 每日更新AV| av绯色| 精品人妻一区二区三区四区石在线| 久久99干一本高清| 妇女乱色二区| 伊人久久亚洲色欲综合网站| 久久久禁| 日本亚欧爱爱| 日本天天干天天日一区| 99热日| 伊人伊人LD| 久久国产精品熟女人妻| 久欲AV| 国产AV线| 性生活性生大爱77AV国产| 日韩精品影视| 日韩久射综合| 欧美传媒| 97人人操人人摸| 在线观看AV片| 欧美精品999| 日本久久天堂| 欧亚综合一卡二卡中文字幕| 欧美色图私拍91| 美国久久一二三四| 国产第二页| 99这里都是精品| 欧洲乱码视频| 美女诱惑1区2区| aaaa少妇高潮大片| 久久国模av| 国产一级舔足在线观看| 精品人妻一区二区三区免费视频| 啊啊啊啊操死我| 狠狠操狠狠操操| 亚洲一区二区三区春色| 中文人妻av高清一区| 亚洲成人日韩小说| 国产免费久久久久| 99啪啪视频| 中文字幕超碰CAO| 是还免费视频1727我| 91国精产品| 91网站18+| 日韩欧美中文字幕搭讪巨乳美人妻视频| 丰满欧美放荡少妇在线| 色牛aV| 国产乱色国产精品免费视| AAAAAAAAA黄片| 久久久18| 国产精品 午夜福利| 欧美成人国产精品| 综合网色| 粉嫩AV一区夜夜嗨| 日日躁夜夜躁狠狠躁超爽| 中英熟女操女| 国产精品青草综合久久| 欧美天堂日韩三级国产传媒| 欧美人妖内射| 99这里只有精品国产| 成人国产精品三级A片| www鬼畜国产男人的天堂| 欧美少妇第一页| 我想要啊 啊 啊| 97色综合中文网| 操婢日韩| 大香蕉十区| 国产精品白丝www| 激情抓乳插进去啪啪啪日韩| AV天天在线观看| 91久久久久久久| 97在线看| 色婷婷丁香五月| 免费成人在线熟妇网| 91狠狠综合久久| 无码WWW免费视频网站| 日本 欧美 亚中文字幕| 天天影视综合色| 黄色区免费观看中文字幕| 女色视频社区| 亚洲人天堂| 91麻豆va国产精品| 四虎免费视频| 亚洲啪啪视频一区二区| 美女91在线观看| 九九九九免费| 五月婷婷六月丁香| 国产精品熟女一区二区三区| 大香蕉久| 蜜臀99久久精品久久久久久| 久久精品国产72国产精品福利| 国产青视频| 久久久新亚洲AV| 精品一区二区三区蜜桃臀赵总 | 日本二区不卡| www…国产操逼| 校园春色综合香蕉| 激情视屏国产乱伦强奸| 欧美综合狠| 日本一区二区不卡精品| 久久久精品九| 亚码激情| 99久久久无码国产精品性啊聊| 亚洲天堂男人在线| 亚洲中字幕日本一区二区三区| 天天综合网国产| 久久久久久久精| 青青草在线成人视频| 99re在线| 国产青视频| 欧美日韩免费性爱| 69久久| 99热思思| 免费av高清无码| 成人天天看站长推荐| 中文字幕天堂在线| 欧美日韩天堂| 日本色色色| 亚洲高清综合网| 69精品在线| 亚洲影院无码在线| 干美女人妻| 亚洲少妇喷视频看| 国产色综合亚洲色综合吹潮| 国产精品久久久久999| 国产精点久久久成人| 东北女人性交| 成人日本精品九区| 午夜男人一级A片7777| 久久蜜桃一区二区| 日本日日色视频| 在线强奷到舒服的无码视频| 伊人操| 欲射影视| 亚洲城人男人的天堂| 操迟操逼在巾线Fre看| 国产麻豆一区二三区| 久久久久久午夜男人的天堂| 人人操人人搞人人草| com 首页 18岁 禁区 女优 免费 精选 同城 | 男人的天堂一区三区| 欧洲人妻视频| 2019午夜福利视频| 国产视频一区二区在线观看| 8050午夜少妇无码| 欧美日产国产在线成人第一区| 天堂亚洲精品| 青青草色插素人| 五月丁香影院| 国产亚洲中文不卡二区| 在线视频免费观看午夜| 夫妻日逼| 九九九九免费视频| av情色影音| 九九热AV| av天堂手机版追回| 亚洲精品国产日韩无码AV永久免| 我要色综合网站| 精品人妻一区二区乱码一区二区 | 欧美 亚洲 在线| 九九九九九九视频| 夜夜高潮夜夜爽| 欧美性生活综合| 国产精品成人久久一区二区三区| 天天干嫩逼网| 桑老女人九区| 久草色在线观看| 欧美白嫩在线放| 东北黄色电影| 欧美视频在线第3页| 亚洲色诱惑| 青青伊人这里只有精品| 黄色片一区二区三区四区五区| 91成人18| 中文字幕av亚洲精品| 欧美性性性| 91在线国产后入风骚翘臀美女素人| 国产精品。| 日韩内射视频| 日本999精品视频| 九九九网页| 五月综合色| 无码少妇精品一区二区60岁老人| 国语av最新自产拍在线观看| 偷拍自拍在线视频观看| 亚洲97久久精品亚洲| 一级@啪啪视频| 手机看片日韩人妻| 国产曰批免费观看久久久| 中文字幕高清精品一区| 亚洲av国产av综合av卡| 天天爽夜夜爽夜夜爽精| 免费日韩黄片| 日本成人电影资源网| 中国国产精品一区视频| 国产剧情AV不卡在线观看| 中国女人内射6XXXXX| 欧美另类综合久久| 国产又爽又黄| 色综合中文字幕不卡| 人人澡人人爽人人精品| 精品人妻一区二区三区夜夜| 超碰97首页| 果冻传媒A片一二三区| 久久精品成人一区二区三区蜜臀 | 成年女人18级毛片毛片免费观看| 99色热| 久超碰在| 九九九精品色乱九九九| 夜夜嗨一区二区三区直播内容| 婷婷国产精品一区二区| av三级电影在线播放| 伊人网青青| 国产高清无码一区三区二区| 日本午夜精品理论片A级APP发布| 亚洲色图大香| 久久97超碰香蕉| 欧美亚洲特P| 欧美性爽xyxOOOO| 天天日天天搞天天干| ?亚洲伊人伊成久久人综合网| 婷色五月天| 黄色高清久久无码依人| 九九九999久久久网站| 久久精品一区二区一8| 天天操夜夜嗨| 久久久久久久久久久97| 色五月AV在线| 日韩欧美性爱电影在线观看| 欧美性爱中文字幕无线码| 丁香六月综合激情| 91草草草| 日韩成人私密一级精品av| 久久久久久久久成人av解说| 亚洲色图欧美色图制服丝袜| 精品人妻一区二区蜜桃视频 | 99操99| 超碰人妻中文在线| 国产在线播放成人免费| 日本肏逼视频在线观看| 日本男人插女人的逼黄色| 日韩欧视频| 日本免费专区| 91网站视频在线观看| 亚洲人妻久久| 狠狠综合网| 国产视频第2页| 啊啊啊免费视频| 婷婷亚洲综合| 久久久久国产精品人妻aⅴ天堂| 亚洲中文字幕在现观看| 99热免费| 男人天堂导航| 高清国产av无码| 少妇专区一二三四五| 1769一区| 啊啊啊啊视频免费| 搡老女人老91二区| 99熟女| 久久成人东京热人妻| 日韩av不卡在线看| 天天看高清麻豆| 不卡中文字幕aⅴ在线| 你操综合| 天天综合欧美| 久久精品国产久精国产| 国产AAAAAABBBBB| 男人的天堂激情| 可免费观看的av毛片中日美韩| 婷婷五月天网| 91A欧美电影网站| 久久九九99| 欧美日韩制服| 男人亚洲91首页在线| 国产欧美另类久久久精品课程| 亚洲精品日日夜夜52| 伊人久久亚洲色欲综合网站| 午夜久久无码1000合集| 99re在线视频这里只有精品| 日韩精品一区二区三区色欲| 欧美同性恋 的搜索结果 - 91n| 熟女字幕| 久热这里只有精品9| 天天天天操| 一本色道熟妇| 不卡九肏| 精品国产丝袜一区二区三区乱码| 天天综合麻豆视频| 日本在线视频导航| 久久久日本电影| 久热69九色熟妇97| 欧美区亚洲区偷拍区 | 秋霞久久亚洲精品成人| 男人天堂久久精品不卡| 天天射影院| 成人免费性爱视视| 亚洲性少妇| 韩国黄色片精品久久久| 放黄片放3级黄片没穿衣服| 色哟哟-国产专区| 成人日韩3| 搡老熟女国产1000部| 五月色综合| 亚洲美女AV无码| 天天日天天舔东京热 | 黄久久| 免费观看欧美日韩操逼视频| 18禁止看精品中文字幕| 97在线观看免费| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 色综合 加勒比| 中文字幕五区| 中文字幕aⅴ在线视频| 亚洲精品91| 9999亚洲电影| 成人看片网站| 综合免费无码中文| 中文一区二区三区影院| 9997se| 和协无码影院| 婷婷五月天影院| 久久性生大片免费观看性| 风月影院男女十八禁| 麻豆久久视频在线地址| 亚洲免费成人精品电影| 色墦五月丁香| 九九久久一区二区伦理| www国产无码| 天天欧美97| 欧美伦乱爱| 91在线页| 六月天婷婷| 亚洲成人av电影在线| 97这里只有精品| 爱丝福利| 午夜毛片高清免费不卡| 啊啊啊啊啊在线观看网址 | 丰满少妇精品一区二区| 夜草欧美| 九月AV| 天天综合色电影| 亚洲精品视频在线播放| 欧美日本国产日韩激情视频| 69少妇一区二区| 污色区网站| 深夜国产福利| 大粗鳼巴久久久久| 96精品久久久| 国产av色网| 一二三四视频在线社区中文字幕| 国产精品乱码久久久久久久久久久久| 91在线|亚| 九九色色| 一区二区偷拍拍视频| 激情四射五月天| 欧美成人性爱视频大全| 人人做人人妻人人夜视频| 强奸乱伦大香蕉| αⅴ天堂| 黄片aaaaa一区| 温婉少妇玩3p| 玖玖玖玖精品国产剧情| 囯产乱伦一区二区三女 | 欧洲精品久久| 操老熟女AV| 91美女视频电影| 久久成人精品| 亚洲黄色电影| 一区二区三区视频| 色婷五月| 志村玲子视频一区二区| 好淫网一二三视区| 你草精品在线视频| 啊啊啊啊啊啊啊在线| 蜜桃臀一区二区aV| 日韩三级av片| 97香蕉网| 国产精品盗摄 偷窥盗摄| se01国产在线视频| av天堂手机版追回 | 亚洲图片视频小说| 亚洲图片欧美色| 绯色一区二区三区不卡少妇| 国产精品黑人一区二区三区| 操逼操逼逼操操逼91 | 9久超碰| 日少妇亚洲版| 久久成人午夜狠狠| 人爽不卡视频| 九九视频黄色片| 成人免费在线网站| 日韩亚洲美州欧洲综三区一品在线| 欧美色图亚洲色图成人在在线| 极品粉嫩少妇视频| 99re99在线视频| 久久精品一区二区三区四区五区| 欧美日日操| 日韩中文字幕二区| 超碰 另类 欧美 | 黄色电影观看久久9| 大香蕉乱伦视频网| 久久一区,青青青青草视频在线播放| 精品一区二区麻豆| 国产91 丝袜在线播放 | wwe 天天干.com| 操老熟女AV| 99无码狠狠久久| 操我无码| 国产亚洲欧洲在线观看| 精品玖九九久| 精品亚洲国产成人av网站| 欧州色图区| 91劲爆| 熟女精品一区二区三区| 日韩电影天堂视频二区三区| 精品久9| 强奸乱伦日韩AV| 天天摸夜夜摸| 色妺妺AⅤ| AV不卡在线| av在线人气| 人人澡人人干| 五月天婷精品激情| 美美91成人国产精品欧美精品久久久久久久| 国产后入式在线观看| 中文字幕在线观看永久| 91人妻超碰| 精品久久97| 久久精品国产亚洲AV高级北京| 久久久久久久 九九九九九九九| 久操电影网| 久久久无码av精| 欧美日韩婷婷中文| 国产又黄又爽又刺激久久久久久| 精品四五区| 久久精品国产亚洲av水密被窝| 成人无码影片视频在线| 午夜福利在线合集| www.99中文字幕| 在线视频五十市| 国产精品白丝在线播放 | 性爱乱伦视频免费| 91天堂视频| 国产无马在线| 欧美精品双插| 亚洲熟女精品| 97色涩| 国产精品久久久久久照片| 久久超碰、| 色欲三区| 久久婷婷亚洲欧| 蜜乳av一区二区| 国产免费久久精品99re韩国| 福利社区午夜一区二区| 欧美青青视频| 国产麻豆福利av在线播放| 无码人妻精品一区二区三区九九| 午夜福利无毒不卡| 国产精品久久久999| 亚洲国产精品无码AV在线| 人妻少妇精品久久久| 天天操夜夜嗨| 久久婷婷一区| A V少妇特黄三级| 农村女一级毛卡片| 69人妻精品丰满熟女区| 国产亚洲美日韩Aⅴ中文字幕无码成人| 97精品第3页| 国产91精品福利在线| 欧美色图97| 五月天激情四射| 亚洲自拍偷拍视频在线| 久久精品老司| 五月丁香社区婷婷日韩欧美精品影院| 欧美瑟综合| 亚洲一区二区麻豆影院| 免费精品国偷自产在线在线| 久久综合女优| 在线观看日韩av不卡| 超碰97COm中文| 丝袜综合| ?亚洲伊人伊成久久人综合网| 亚洲综合嫩| 97大色网| 丰满人妻大屁一区二区| 日韩十八禁| 亚洲无码超碰免费| www.亚洲黄色| 性爱视频久久| 欧美黄色手机在线观看| 91国产美女丝袜足交精品视频| 日韩性爱视频在线免费观看| 精品人妻一区二区蜜桃视频| 久久超碰爱| 亚洲精品一二区| 亚洲丝袜在线观看| 国产熟妇一区二区| 五月天激情网站| 1级午夜影院费免区| 999热日韩精品| 青青草视频久久久久| 国产成人久久久精品免费AV| 天天干天天操天天操夜夜操天天操 | 亚洲91极品| 国产曰批免费观看久久久| 亚洲中文字幕一区二区| 日本东京热大香蕉a片| 任你爽视频| 国产精品嫩草久久久久| 欧美日韩在线小说 | 亚洲国产精品成人综合| 91n处女在线观看| 校园春色中文字幕AV| 欧美日韩色图片| 人人射人人操人人摸| 欧美人与动性人交a| 久久久久女教师免费一区| jiujiujiujingpin| 亚洲综合113页| 精品国产一区二区三区av在线资源| 93人人操人人| 免费av在线播放二区| 综合欧美亚洲| 青青草原伊人网| 后入福利视频| 伊人一区二区三区| 亚洲国产综合久久天堂| 日韩精品一区二区三区四虎影视| 久久精品亚洲成a人天堂| 人人做天天爱| 自拍偷拍 日韩欧美| 91狠狠综合网| 91人人操| 久久区| 一本久道久久综合狠狠爱一密臀精| 久久9999 | 激情五月天社区| 干日本人少妇午夜寂寞影院| 免费的黄片有限公司| 久久久久久亚洲Av无码精| 蜜臀久久99精品久久久电影| 欧美黑人熟妇精品91| 国产精品不卡少妇白| 这里都是精品| 中文字幕精品码亚洲| 91熟女网| 欧美激情专区| 国产精品熟女一区二区三区| 久久久久久九九九| 亚洲天堂久久久久久粉红视频| 国产精品视频在线观看| 亚洲欧美色图片| 三上悠亚在线毛片91| 中国一级αV| 色综合一本| 亚洲成人在线高清| 青椒国产97在线熟女| 青娱乐国产精品| 亚洲色图亚洲无码强奸乱伦| 激情综合色| 97超碰jingpin| 精品无吗久久| 欧美色综合图片| 精品人妻高清麻豆av| 美女网站91| 麻豆视频国产一区二区| 啪啪资源网| 99在线精品观看99| 又大又黄国产| av东京热男人的天堂| 人妻美腿丝袜日韩| 午夜毛片亚洲精品片国产久久久| 中文字幕国产在线天堂| 性久久| 97色色视频| 成人网欧美风情| 公司1区2区3区精产精| 亚洲资源站| 第四色奇米影视777| 91精品无码人妻系列| 大香蕉宗合网在线| 色色色色色色色色综合| 亚洲 欧美 第一页 | 亚洲国产剧情少妇激情| 热的中文 热的有码 热的国产| 国语精品av| 手机午夜电影神马久久| 亚洲国产欧美中文永久| 97亚洲一区| 天操天操夜操夜月月年年操操| 好吊色青靑草| 午夜寂寞欧美| 影音综合网| 日天天九九天堂666| 蜜乳成人AV| 五月婷婷激情综合| 97操在线| 久久综合九色综合欧洲98| 蜜桃av综合网发布| 久婷婷一区| 97视频免费| 人妻日日干| 欧美中文字幕一区 | 久久亚洲AV无码专区国产精品| 亚洲色吧网| 欧美成人国产精品| 久久双插| 天堂av2019| 欧美高清91| 欧美熟女操屄| 亚州 综合 色图| A级在线视频| 日韩人妻少妇 一区二区三区| 老熟女中文字幕高清| 日本人妻伦在线中文字幕| 加勒比大香蕉视频在线| 大色网久久| 日本欧美亚洲高清在线看| 高潮嗯啊性感美女久久久| 火箭成精品视频884必出精品| 曰韩成人免费视频| 综合激情一一91| 香蕉久久AⅤ...| 国产精品网站www| 校园春色五月天| 婷婷五月天小说| 欧美高清91| 爱做久久久久久| 熟妇高潮二区三区| 精品黑人一区二区| 粉嫩久久久极品| 午夜无码精品免费看性色| oumeizonghese,www| 免费一级性爱久久| 青娱乐蜜桃臀AV色婷| 欧美爆乳精品一区二区| 色999偷自拍拍| 久久久久亚洲熟妇熟女| 亚洲最大的黄色电影网站。| 翔田千里AV无码秘 三区| 亚洲欧美激情另类色图| 97免费在线视频| 青青草在线成人视频| 蜜臀久久99精品久久久电影| 99久久com免费视频′| 日本精品五区| 骚乳在线| ji熟女.com| 天综合网欧美| 日本日皮视频逼| 国内一级精品| 久久发布国产伦子伦精品| 国产精品高潮久久久无码| 极品白嫩福利在线| 日韩黄色片子| 亚洲91大片| 婷婷视频网| 国产剧情在线| 鸥美精品一区二区久久婷婷| 国产高清免费不卡av| 中出人妻中文字幕91在线| 激情av| 亚洲九九九| 大香蕉综合久久| 国产区性爱在线视频秋霞豆| 91日韩网站| 又大又黄国产| 伊人精品久久网站| 久超碰这里只有精品| 亚洲成人碰碰| 成人a级高清视频在线观看| 亚洲色综网| 国产精品女同| 欧美大香蕉专区网| 酒色综合网| 美女毛片999| 日本99久久| 狠狠久久手机视频精品| 国产一| 麻豆精品久久久久久久| 国产乱伦亚洲| 国产伦精品| 亚洲成人妻日韩在线| 91狠狠综合久久| 边做饭边操逼逼| 欧美综合色| 大香蕉伊在线久草麻豆天堂故事| 怡红院一区二区熟女人妻| 久久精品国产亚洲5555| 久久精品无码不卡| 日韩成人午夜精品久久高潮| 极品极品色影院| 国产在线视频二区| 久久婷婷成人综合色怡春院| 人人澡人人弄| 欧美淫穴| 91free福利| 素人一区二区三区日韩| 日韩精品-原创伙伴| 免费超碰97久久| 人妻天天爽夜夜爽爽| 日本污ww视频网站| 国产亚洲女v在线观看| 激情小说亚洲| 伊人欧美大香蕉视频| 天天看高清麻豆| 91男女啊啊啊| 五月婷婷啪啪| 人人操人人大香蕉| 免费观看国产小粉嫩喷水精品午| 91欧美亚洲| 情色大香蕉| 精品久久9| 欧美青青视频| 亚洲av热热色| 亚洲天堂另类小说男人| 久久一二三四五六七八九区区区| 强奸乱伦av电影| 性影在线视频| 91精品久久久| 男女做爰猛烈动高潮A片免费应用| 玖玖久久久| 视频二区美腿制服人妻欧美| 后入式999| 久久偷偷色综合蜜桃| 亚洲欧洲色情高清| 亚洲精品骚逼| 草久久久| 日日夜夜国产综合| 嗯嗯啊啊操死我| 婷婷国产精品九区| 91九久| 性色avv| 强奸少妇AV导航网| 亚洲熟妇乱女区二区三区| 人人色97| 国产一区96在线| 好吊妞转入那个网| 污啪啪啪视频| 丝袜美腿诱惑亚洲欧美视频在线观看 | 国产综合网站在线播放 | 激情天天视频| 亚洲97成人在线观看| 操一操摸一摸| 干我久操| 91精品久久久| 青娱乐国产盛宴视频| 夜间福利片1000无码| 国产高清精品福利| 国产动漫操逼视频| 久久婷婷视频| 青青网三级视频| 清清一区二区三区四区不卡视频| 九九久久久久久爱| 青青草视频久久久久| 日欧毛片久久| 国产精品第一页国产大屁股视频免费区i| 加勒比五月天| 99热这里只有精品1| 91女日逼| 国产毛片毛片4p懂色| 色欲av一区二区三区蜜芽| 日韩无码黄色片| 综合一区中亚洲国产成人综合精品| 久久99精品视频| 少妇一线天久久久久久| 亚洲综合网图| 久久大精品乱码视频人妻熟女| 熟妇高潮二区三区| 男人的天堂va在线| 一区二区精品日韩欧美在线观看| 你想操日本小逼吗| 五月丁香久久| 欧美在线啊啊啊 | 熟女乱伦二区| 老女人日韩美91| 伊人精品国产| 亚洲日韩电影| 正在播放国产精品一区| 国产精品三级视频网站| 日韩内射视频| 一区二区不卡免费| 天天澡天天爽日日AV| 懂色av色欲av蜜臀av| www.狠狠| 97bbn| 精品一区二区三区麻豆| 青椒国产97在线熟女| 人妻熟女午夜精品在线| 99re99视频在线免费观看| 天天干夜夜鈤| 超碰色男人操熟女| 女优视频第10页| 久污| 国产家庭乱伦表演| 我爱大香蕉| 99精品丰满人妻| 亚洲人妻久久| 欧美日韩中文亚洲v在线综合| 97玖玖人妻| 亚洲图片 欧美电影| 精品中文字幕一区二区| 嗯啊不要啊在线| 天欧美在线| 欧美日韩午夜精品一区二区三区 | 91九九| 日本 欧美 国产一区| 日韩精品9999| 在线日韩精品一区二区三区| 国产超碰人人操| 97精品中文字幕| 免费国产电影一区二区| 婷婷激情五月| 老鸭窝成人| 91人妻做a观看视频| 午夜精品久久久99| 欧美色图 色综合图| 伊人久久大香大香线蕉中文| 女人的天堂大香蕉网| 中文操逼字幕| 日韩另类色图| 91性网| 九九香蕉网| 97日韩欧美亚洲| 国产 无码 一区二区| 久久综合超碰| 亚洲性爱电影| 激情亚洲天堂| 91人精品妻入口| 亚洲情色一区三区| 国产亚洲福利第一页丝袜| 加勒比在线视频| 欧美性爱第1 页| 91爱综合| 亚洲超碰97| 人人色97| 国产捆绑一区| 日韩欧亚太美不卡| 国产v亚洲v日韩v欧美v片另类| 嗯嗯啊啊视频在线看| 91欧美综合| 91色艳| 免费人成毛片乱码| 韩国轻伦国内自拍一区| www久久国产精品| 欧美久久婷婷| 欧美色视频在线| 日韩人妻丝袜美腿中文| 亚洲少妇综合在线播放| 老鸭窝日丰县女人| 丁香婷婷九月| 鸥美中出| 欧美亚洲国产自久久| 亚洲无码国产探花在线观看| 99re69| 国产三级多多影院2022国产AA一级毛片无码 | 欧美天天综合在线| 日韩99神马视频播放片在线播放| AVE乱伦| 97在线观看免费视频l| 久久亚洲AV成人精品无码| 国产深喉| 日韩欧美女优电影| 中文字幕天堂在线| 国产精品天干天干综合网麻豆| 人妻乱仑一区二区三区| 超碰色美女| 天综合网| 日本欧美韩国国产在线| 久久视频,这里只有精品| 超碰AV在线| 人人么人人操| 成人精品欧洲亚洲| 九九综合色| 乱伦一二三区| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 欧美色网| 久久精品视| 国产999精品久久久久久| 手机午夜电影神马久久| 97精品网站| 中文字幕91综合| 免费伦费视频在线观看| 60秒不遮不挡| 91nbbbbbb| 国产精品麻豆成人AV艾秋| 亚洲图片激情综合另类| 亚洲综合色图欧美| 久草婷婷| 可以看的av| 18禁精品网站在线看| 久久久久久久久一区二区三区| 啊啊啊啊啊啊好湿好爽视频| 婷婷亚洲综合| 国产精品国产自产高清AV| 亚洲色婷婷综合久久一区二区三区| 夜夜高潮夜夜爽高清视频一| 亚洲性爱无码乱伦av| 亚洲AV麻豆Aⅴ无码电影一| 久草色在线观看| 91国产美女丝袜足交精品视频| 九月色婷婷| 国产精品无码av| 91av熟女人妻| 欧美92| 九热超碰| 性色av一区二区| 91久热这里只有精品| 在线观看黄色电话| 天天谢天天干| 2017av无码免费无线播| 四虎av在线| 劲爆欧美人妖三区91| 熟啊v色欧美热| 国产精品久久久亚洲一区| 在线性黄高清免费视频| 91深夜夜| 国产一区二区成人av在线播放| 美女9118禁| 91痴汉| 在线观看午夜婷婷久久久久清性观看| 亚州操操穴网| 嗯啊不要啊在线 | 欧美色图亚洲激情| 91综合天天| 欧美日日人人天天| 中文欧丝袜诱惑| 欧美日动态视频| 台湾大香蕉99热| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 欧美少妇大量自拍视频在线观看| 99久久9| 亚洲欧洲综合视频在线| 日本在线播放不卡一区| 欧美不卡二区| 国产福利在线视频网站| 亚洲精品白浆高清久久久久久| 日本熟妇浓毛hdsex| 伊人五月天青青草婷婷| 久操 高清| 伊人97色天使| 青青草自拍视频在线播放| 日韩免费人妻色情网站| 九九在线视频| 91视频国品一二三区| 午夜天堂精品久久久久91| 婷婷激情五月| 天天干天天做| 人人人人人人少妇| 人妻AV 中文字幕的| 男人的天堂2010| 99热超碰| 久久嫩草国产成人一区| 97欧美精品综合| 亚洲情色在线| 亚洲色悠悠久久88| 蜜桃臀一区二区aV| 黄久久| 欧美性色欧美| 久久久久国产精品久久久| 人妻夜夜爽天天爽三区麻豆AV网站| 欧美狠狠干| 日韩免费高清大片在线| 国产日韩区| 精品性爱一二三区|