99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

Halcon形狀匹配+MFC上位機(jī):可雙擊exe模板匹配Demo實(shí)戰(zhàn)

Halcon形狀匹配+MFC上位機(jī):可雙擊exe模板匹配Demo實(shí)戰(zhàn) 簡介面向機(jī)器視覺初學(xué)者與C桌面開發(fā)者的halconmfc模板匹配demo聚焦在Windows界面中完成基于形狀、形狀縮放與灰度的模板匹配驗(yàn)證。工程把Halcon圖像處理能力嵌入MFC對(duì)話框提供圖像加載、匹配模式選擇、參數(shù)設(shè)置、執(zhí)行匹配及位置與相似度結(jié)果展示等交互適合學(xué)習(xí)工業(yè)視覺定位、目標(biāo)識(shí)別與GUI集成的基礎(chǔ)流程。壓縮包共27個(gè)文件以8個(gè)h和6個(gè)cpp源碼為主配合ico、rc等界面資源vcxproj、sln等VS工程配置以及jpg預(yù)覽圖、exe可執(zhí)行程序和說明文檔rar整體約11.45MB。從目錄模塊看參數(shù)設(shè)置、形狀操作、結(jié)果封裝與主對(duì)話框邏輯劃分較清晰便于對(duì)照編譯、調(diào)試和二次修改。已有1246人學(xué)習(xí)可作為Halcon與MFC聯(lián)合開發(fā)模板匹配功能的入門參考。1. 一個(gè)能雙擊運(yùn)行的 exe這個(gè) HalconMFC 模板匹配 demo 到底解決什么問題某五金件產(chǎn)線上工件在傳送帶上隨機(jī)偏轉(zhuǎn)角度大概在正負(fù)十五度之間晃機(jī)械手要過去抓。算法同事在 HDevelop 里半小時(shí)就調(diào)通了create_shape_model建模板、find_shape_model拿 Row/Column/Angle 一氣呵成??烧嬉桓兜焦の徊僮鞴げ豢赡艽蜷_ HDevelop 點(diǎn)運(yùn)行。問題于是從“怎么匹配”變成“怎么把匹配包成一個(gè)能雙擊的 exe”——這正是 Halcon MFC 模板匹配 demo 的位置。它做的事很具體把形狀匹配的建模、查找、結(jié)果顯示、參數(shù)調(diào)節(jié)塞進(jìn)一個(gè) MFC 對(duì)話框程序里對(duì)外輸出一個(gè)四元組Row、Column、Angle、Score再把匹配到的輪廓疊畫在圖上。適合做課設(shè)畢設(shè)的、剛從腳本過渡到上位機(jī)的、以及要給現(xiàn)場交付獨(dú)立程序的人如果你只做純算法研究或者習(xí)慣 Python 調(diào)庫這套東西對(duì)你價(jià)值不大。2. 工程骨架把 Halcon 算子塞進(jìn) MFC 的三條路與一次編譯配置2.1 HDevEngine、導(dǎo)出 C、混合調(diào)用先選一條這一步選錯(cuò)了后面全是返工。三種接法我都在項(xiàng)目里用過差別不在性能在“誰改算法”這件事上。接法做法優(yōu)點(diǎn)代價(jià)適合HDevEngine運(yùn)行時(shí)加載 .hdev用HDevEngine執(zhí)行過程算法同事改腳本不用重編 exe多帶一個(gè)引擎 dll報(bào)錯(cuò)是腳本行號(hào)每次調(diào)用有解析開銷算法還在頻繁迭代、現(xiàn)場要臨時(shí)調(diào)參導(dǎo)出 CHDevelop 里“文件→導(dǎo)出 C”生成 .cpp執(zhí)行最快無額外依賴改一行腳本就要重新編譯整個(gè)工程算法已經(jīng)凍結(jié)、追求穩(wěn)定交付混合建模和調(diào)參走腳本查找和結(jié)果顯示走 C兼顧兩邊接口要自己設(shè)計(jì)狀態(tài)要管好我一般會(huì)選這個(gè)Demo 這種體量直接導(dǎo)出 C 最省事因?yàn)槟0迤ヅ涞恼{(diào)用鏈很短沒必要為它背一個(gè)腳本引擎。但如果你要做“現(xiàn)場工程師拿著 hdev 自己調(diào)對(duì)比度”的功能那就得走 HDevEngine并且把腳本里的過程名、輸入輸出參數(shù)用SetProcedure、SetInputIconicParamObject這類接口約定死否則腳本一改接口exe 直接報(bào)找不到過程。2.2 VS 工程配置位數(shù)、運(yùn)行時(shí)庫、頭文件順序Halcon 的庫和你的工程必須位數(shù)一致這一條沒有例外。新版本基本只提供 64 位所以 MFC 工程從新建那一刻就該選 x64別等編譯報(bào)一堆LNK2019再回頭改。屬性頁里要落的東西位置項(xiàng)值C/C → 常規(guī)附加包含目錄$(HALCONROOT)\include、$(HALCONROOT)\include\halconcpp鏈接器 → 常規(guī)附加庫目錄$(HALCONROOT)\lib\$(HALCONARCH)鏈接器 → 輸入附加依賴項(xiàng)halconcpp.libC/C → 代碼生成運(yùn)行時(shí)庫與 Halcon 保持一致一般/MDRelease、/MDdDebugMFC 使用方式—在共享 DLL 中使用 MFCHALCONROOT和HALCONARCH這兩個(gè)環(huán)境變量是安裝時(shí)寫進(jìn)系統(tǒng)的用$(HALCONROOT)引用比自己寫死路徑靠譜換機(jī)器不用改工程。頭文件包含順序上有一個(gè)老坑windows.h里的min/max宏會(huì)和標(biāo)準(zhǔn)庫打架而 MFC 又必然帶進(jìn)windows.h// pch.h或 stdafx.h里包含順序不要隨意調(diào)換 #define NOMINMAX // 擋掉 windows.h 的 min/max 宏 #include windows.h #include atlconv.h // 后面要用 CT2A 做編碼轉(zhuǎn)換 #include halconcpp/HalconCpp.h // 放在 windows.h 之后避免類型重定義 using namespace HalconCpp; // 只在 cpp 里用別寫進(jìn)頭文件污染全局NOMINMAX不加std::min之類的調(diào)用會(huì)莫名其妙編譯不過using namespace寫進(jìn)頭文件則會(huì)讓所有包含它的 cpp 都被拖進(jìn) Halcon 的命名空間后面和 MFC 的CRect、CPoint撞名是遲早的事。部署時(shí)別忘了把運(yùn)行時(shí) dll 拷到 exe 同級(jí)目錄halcon.dll、halconcpp.dll是必須的走 HDevEngine 還要加引擎那個(gè) dll。我在項(xiàng)目里放了個(gè)拷貝腳本打包前一鍵執(zhí)行# 打包前把運(yùn)行時(shí) dll 拉到輸出目錄避免現(xiàn)場機(jī)器裝沒裝 Halcon 的玄學(xué)問題 OUTbin/Release HALCON_BIN$HALCONROOT/bin/$HALCONARCH cp $HALCON_BIN/halcon.dll $OUT/ cp $HALCON_BIN/halconcpp.dll $OUT/ # 只有用 HDevEngine 才需要下面這兩個(gè) # cp $HALCON_BIN/hdevenginecpp.dll $OUT/ # cp $HALCON_BIN/hdevengine.dll $OUT/腳本本身沒什么技術(shù)含量價(jià)值在于把“哪些 dll 是必需的”這件事固化下來。現(xiàn)場機(jī)器往往裝的是運(yùn)行版而不是開發(fā)版多拷一個(gè) dll 頂多占幾兆少拷一個(gè)就是啟動(dòng)即崩。2.3 線程模型UI 線程只負(fù)責(zé)畫算子跑在工作線程MFC 的死穴是 UI 線程不能阻塞超過幾十毫秒而一次find_shape_model在高分辨率圖、多角度、多層金字塔的情況下跑到幾十甚至上百毫秒很常見。連續(xù)采圖時(shí)直接在OnBnClickedStart里循環(huán)調(diào)用界面必卡任務(wù)管理器里那個(gè)“未響應(yīng)”的標(biāo)題就是血淚經(jīng)驗(yàn)。更麻煩的是 Halcon 窗口有線程親和性O(shè)penWindow在哪個(gè)線程開的就只能在哪個(gè)線程操作它??缇€程去DispObj輕則不顯示重則直接崩。我一般這么切// 自定義消息工作線程算完把結(jié)果丟回 UI 線程去顯示 #define WM_MATCH_RESULT (WM_USER 100) UINT CMatchDemoDlg::MatchThreadProc(LPVOID pParam) { CMatchDemoDlg* pDlg static_castCMatchDemoDlg*(pParam); HObject ho_Image; HTuple hv_Row, hv_Column, hv_Angle, hv_Score; while (pDlg-m_bRunning) { try { // 1. 取圖這里換成你的相機(jī)采集或文件讀取 ReadImage(ho_Image, HTuple(data/part_01.png)); // 2. 匹配hv_ModelID 在 UI 線程建好后傳進(jìn)來建一次用一輩子 FindShapeModel(ho_Image, pDlg-m_hvModelID, HTuple(-15).TupleRad(), HTuple(30).TupleRad(), 0.6, 1, 0.5, least_squares, 0, 0.8, hv_Row, hv_Column, hv_Angle, hv_Score); // 3. 只傳結(jié)果和圖像句柄不碰任何窗口 pDlg-m_hoLastImage ho_Image; // HObject 是引用計(jì)數(shù)賦值是安全的 pDlg-PostMessage(WM_MATCH_RESULT, 0, 0); } catch (HException ex) { // Halcon 異常必須接住否則線程直接終止 pDlg-PostMessage(WM_MATCH_RESULT, 1, 0); } Sleep(10); } return 0; }這段的關(guān)鍵點(diǎn)有三個(gè)FindShapeModel的NumLevels傳 0 表示用建模時(shí)定好的層數(shù)不要在這里另設(shè)一個(gè)值SubPixel選least_squares比interpolation穩(wěn)代價(jià)是慢一點(diǎn)點(diǎn)HObject的賦值是淺拷貝加引用計(jì)數(shù)所以把圖像存到對(duì)話框成員上不會(huì)帶來一次完整的內(nèi)存拷貝但也意味著你在工作線程里對(duì)同一個(gè)ho_Image再ReadImage一次主線程正在顯示的那張會(huì)跟著變——想要每幀獨(dú)立就CopyObj一份。UI 線程那邊只做三件事接消息、DispObj、畫十字和矩形框。這樣即使匹配跑到 200 毫秒界面拖動(dòng)、縮放依然跟手。3. 模板訓(xùn)練與查找參數(shù)八個(gè)建模參數(shù)和四個(gè)查找參數(shù)怎么定3.1create_shape_model的參數(shù)一個(gè)個(gè)說清楚形狀匹配的建模參數(shù)直接決定“能不能找到”查找參數(shù)只決定“找得多準(zhǔn)”。順序別搞反。參數(shù)含義常用取值調(diào)錯(cuò)的表現(xiàn)NumLevels金字塔層數(shù)auto或 06太大丟小特征太小慢AngleStart起始角弧度按工件實(shí)際偏轉(zhuǎn)定范圍不夠直接找不到AngleExtent角度跨度弧度同上同上AngleStep角度步長弧度auto或按半徑算太粗定位抖太細(xì)建模慢Optimization模板點(diǎn)優(yōu)化方式auto、point_reduction_high高優(yōu)化會(huì)犧牲一點(diǎn)點(diǎn)精度Metric極性u(píng)se_polarity光照反了就全丟Contrast邊緣對(duì)比度閾值auto或 2060太高模板點(diǎn)太少M(fèi)inContrast查找時(shí)最低對(duì)比度建模值的 1/21/3太高現(xiàn)場找不到Metric這個(gè)參數(shù)是最容易被忽略的。默認(rèn)use_polarity要求待查圖像里邊緣的明暗方向和模板一致如果現(xiàn)場打光方式變了或者工件翻面邊緣極性反了score 會(huì)直接掉到 0.1 以下你還以為是角度范圍設(shè)小了。另一種是ignore_local_polarity允許局部極性變化魯棒性更好但誤匹配率上升我在有反光鋁件上用過得配合提高M(jìn)inScore一起用。// 建模先框 ROI再做域縮減最后建形狀模板 HObject ho_ModelRegion, ho_ModelImage; GenRectangle1(ho_ModelRegion, 120.0, 200.0, 380.0, 460.0); // 行1,列1,行2,列2 ReduceDomain(ho_Image, ho_ModelRegion, ho_ModelImage); // 只在 ROI 內(nèi)取邊緣 HTuple hv_ModelID; CreateShapeModel(ho_ModelImage, HTuple(0), // NumLevels0讓 Halcon 自己定 HTuple(-15).TupleRad(), // AngleStart注意單位是弧度 HTuple(30).TupleRad(), // AngleExtent覆蓋 -15°~15° HTuple(auto), // AngleStep HTuple(auto), // Optimization HTuple(use_polarity), // Metric HTuple(auto), // Contrast HTuple(25), // MinContrast現(xiàn)場光照波動(dòng)大就調(diào)小 hv_ModelID);ReduceDomain這一步不能省。整幅圖去建模板背景里的傳送帶紋路、料盤邊緣全會(huì)被當(dāng)成特征點(diǎn)模板點(diǎn)數(shù)暴漲建模慢、查找更慢而且容易在背景相似的地方誤匹配。ROI 盡量貼著工件外輪廓留 510 像素余量。MinContrast單列出來說是因?yàn)樗鼪Q定了“現(xiàn)場能不能找到”。建模時(shí)的Contrast是按當(dāng)前這張圖的對(duì)比度自動(dòng)算的換一批料、換一個(gè)班次的光照對(duì)比度可能掉三成。這時(shí)候MinContrast如果還等于建模值那些邊緣就被過濾掉模板點(diǎn)剩不下幾個(gè)。我一般把它壓到Contrast的三分之一左右寧可多留點(diǎn)噪聲點(diǎn)也別讓模板變成空殼。3.2 金字塔層數(shù)和角度步長不要讓auto替你做決定auto在大多數(shù)場景下是合理的但它有個(gè)隱含前提——你的模板 ROI 大小適中。ROI 特別大比如 800×600 的整塊鈑金時(shí)auto給出的層數(shù)會(huì)偏高最頂層只剩幾十個(gè)點(diǎn)粗定位直接飄ROI 特別小比如 30×30 的字符層數(shù)又會(huì)偏低查找慢得讓人懷疑人生。角度步長有個(gè)可以手算的經(jīng)驗(yàn)公式模板上離中心最遠(yuǎn)的邊緣點(diǎn)半徑記作 r旋轉(zhuǎn) Δθ 后這個(gè)點(diǎn)的位移約等于 r·Δθ。要求這個(gè)位移不超過 1 個(gè)像素就得到 Δθ ≤ 1/r弧度。半徑 150 像素的模板Δθ 差不多 0.0067 弧度也就是 0.38 度。// 由模板 ROI 的等效半徑反推角度步長比 auto 更貼合實(shí)際尺寸 double w 260.0, h 160.0; // ROI 寬高像素 double r 0.5 * sqrt(w * w h * h); // 最遠(yuǎn)邊緣點(diǎn)半徑 double stepRad 1.0 / r; // 旋轉(zhuǎn)位移不超過 1 像素 double stepDeg stepRad * 180.0 / 3.14159265; stepDeg stepDeg * 0.7; // 留 30% 余量 stepDeg max(0.1, min(1.0, stepDeg)); // 夾到工程可用區(qū)間 HTuple hv_AngleStep HTuple(stepDeg).TupleRad();算完之后可以反過來驗(yàn)證把AngleStep設(shè)成這個(gè)值建一次模板再用同一張圖在角度范圍的邊界處比如 14.5 度去查score 應(yīng)該還在 0.8 以上。如果掉得厲害說明步長還是粗了。這個(gè)“邊界自測”是我每次建完模板必做的一步比看任何文檔都直觀。層數(shù)這邊我的習(xí)慣是建完模板后打印一下每層的點(diǎn)數(shù)// 檢查金字塔各層剩下多少模板點(diǎn)頂層太少就手動(dòng)降層數(shù) HTuple hv_NumLevels, hv_Points; GetShapeModelContours(ho_ModelContours, hv_ModelID, 1); // 取第 1 層輪廓 // 更直接的辦法重建一次顯式指定層數(shù)對(duì)比匹配耗時(shí)和穩(wěn)定性頂層點(diǎn)數(shù)低于 20 個(gè)粗定位基本靠運(yùn)氣這時(shí)候要么把NumLevels手動(dòng)減 12 層要么擴(kuò)大 ROI 讓特征更豐富。別嫌麻煩這一步省下的時(shí)間會(huì)在現(xiàn)場調(diào)試時(shí)十倍還回來。3.3find_shape_model分?jǐn)?shù)、重疊和貪心度查找參數(shù)里真正需要?jiǎng)拥氖撬膫€(gè)MinScore、NumMatches、MaxOverlap、Greediness。MinScore是門檻低于它的候選直接丟棄。設(shè)太高光照一變就報(bào)“未找到”設(shè)太低背景里隨便一塊紋理都能湊到 0.4。經(jīng)驗(yàn)值是 0.60.7 起步等批量驗(yàn)證過 score 分布之后再收緊。MaxOverlap處理疊件。工件挨在一起時(shí)兩個(gè)匹配結(jié)果可能重疊 80% 以上其實(shí)是同一個(gè)目標(biāo)被重復(fù)報(bào)了。設(shè)成 0.30.5 能有效去重但設(shè)太小會(huì)把真正緊挨著的兩個(gè)工件誤殺。Greediness是搜索的“貪心程度”0 最徹底最慢1 最快但可能漏檢默認(rèn) 0.9。精密對(duì)位場景我一般降到 0.70.8多花 20% 時(shí)間換穩(wěn)定性值。// 查找并解析結(jié)果注意返回的是四個(gè) HTuple長度等于匹配個(gè)數(shù) HTuple hv_Row, hv_Column, hv_Angle, hv_Score; FindShapeModel(ho_Image, hv_ModelID, HTuple(-15).TupleRad(), HTuple(30).TupleRad(), HTuple(0.6), // MinScore HTuple(3), // NumMatches最多找 3 個(gè) HTuple(0.4), // MaxOverlap去掉重疊候選 HTuple(least_squares), // SubPixel亞像素精度 HTuple(0), // NumLevels0沿用建模層數(shù) HTuple(0.8), // Greediness hv_Row, hv_Column, hv_Angle, hv_Score); // 結(jié)果按 Score 降序排列取第 0 個(gè)就是最優(yōu) for (int i 0; i hv_Score.Length(); i) { double row hv_Row[i].D(); // Row 是行坐標(biāo)也就是 Y double col hv_Column[i].D(); // Column 是列坐標(biāo)也就是 X double ang hv_Angle[i].D(); // 弧度順時(shí)針為正 double scr hv_Score[i].D(); // 這里做你的坐標(biāo)轉(zhuǎn)換、發(fā)給 PLC }亞像素模式選least_squares它在初步定位后用最小二乘擬合邊緣重復(fù)精度能到 0.02 像素級(jí)別interpolation快一些但精度差一檔none只在極端追求速度時(shí)用。這個(gè)參數(shù)和Greediness是速度與精度這組矛盾的兩個(gè)旋鈕別同時(shí)往快的那頭擰。4. 顯示與坐標(biāo)從 HObject 到 Picture Control 的像素對(duì)齊4.1 把 Halcon 窗口嵌進(jìn)控件父句柄別傳錯(cuò)Halcon 的窗口本質(zhì)上是個(gè)子窗口OpenWindow的第五個(gè)參數(shù)就是父窗口句柄。傳對(duì)話框的m_hWnd圖像會(huì)蓋住所有控件傳 Picture Control 的句柄圖像才會(huì)老老實(shí)實(shí)待在框里。void CMatchDemoDlg::OpenHalconWindow() { // 重開前必須先關(guān)否則每切換一次分辨率就漏一個(gè)窗口句柄 if (m_hvWindowHandle.Length() 0) { CloseWindow(m_hvWindowHandle); m_hvWindowHandle HTuple(); } CWnd* pCtrl GetDlgItem(IDC_PIC_DISPLAY); CRect rc; pCtrl-GetClientRect(rc); OpenWindow(0, 0, rc.Width(), rc.Height(), pCtrl-GetSafeHwnd(), // 父句柄只認(rèn)控件不認(rèn)對(duì)話框 visible, , m_hvWindowHandle); SetWindowAttr(flush, false); // 批量繪制時(shí)先不刷最后統(tǒng)一 FlushBuffer }flush設(shè)成false是個(gè)明顯的性能開關(guān)尤其在一幀里要畫幾十個(gè)輪廓的時(shí)候。設(shè)完之后記得在繪制結(jié)尾調(diào)一次FlushBuffer(m_hvWindowHandle)否則畫面不動(dòng)你會(huì)以為程序死了。窗口大小變化時(shí)要重開或者用SetWindowExtents調(diào)整。重開更干脆但必須先把舊窗口關(guān)掉這一條我吃過虧——早期版本里每次OnSize都OpenWindow一次而不關(guān)舊的跑了一下午任務(wù)管理器里 GDI 對(duì)象數(shù)一路漲到幾萬最后整個(gè)界面變成一片白。4.2 三套坐標(biāo)圖像坐標(biāo)、控件坐標(biāo)、屏幕坐標(biāo)這是新手最容易翻車的地方也是我見過最多“匹配明明對(duì)了但框畫偏了”的原因。三套坐標(biāo)的換算方向必須記死Halcon 的Row對(duì)應(yīng)屏幕上的 Y豎直向下Column對(duì)應(yīng) X水平向右。寫代碼時(shí)row傳給了 X 參數(shù)結(jié)果就是整個(gè)框順時(shí)針轉(zhuǎn)了 90 度??丶鴺?biāo)的原點(diǎn)在控件左上角MFC 的OnLButtonDown給的point是相對(duì)對(duì)話框的得先ScreenToClient。圖像坐標(biāo)和控件坐標(biāo)之間隔著一個(gè)SetPart縮放比例和偏移都在里面。void CMatchDemoDlg::OnLButtonDown(UINT nFlags, CPoint point) { // MFC 給的 point 是相對(duì)對(duì)話框客戶區(qū)的先轉(zhuǎn)到顯示控件坐標(biāo)系 CPoint pt point; m_wndDisplay.ScreenToClient(pt); // 取出當(dāng)前顯示區(qū)域?qū)?yīng)的圖像范圍 HTuple hv_Row1, hv_Column1, hv_Row2, hv_Column2; GetPart(m_hvWindowHandle, hv_Row1, hv_Column1, hv_Row2, hv_Column2); CRect rc; m_wndDisplay.GetClientRect(rc); // 控件坐標(biāo) - 圖像坐標(biāo)線性映射別在這里加任何經(jīng)驗(yàn)偏移 double imgRow hv_Row1.D() (hv_Row2.D() - hv_Row1.D()) * pt.y / rc.Height(); double imgCol hv_Column1.D() (hv_Column2.D() - hv_Column1.D()) * pt.x / rc.Width(); // 記下來給 ROI 用 m_dClickRow imgRow; m_dClickCol imgCol; }另一種寫法是直接用GetMposition(m_hvWindowHandle, row, col, window)讓 Halcon 自己算。它更省事但有個(gè)前提調(diào)用它的線程必須是開窗的那個(gè)線程工作線程里調(diào)會(huì)返回一堆 0 或者拋異常。所以我在跨線程的場合一律手算寧可多寫三行。還有一個(gè)隱蔽的坑SetPart傳的參數(shù)順序是(Row1, Column1, Row2, Column2)而GenRectangle1的順序是(Row1, Column1, Row2, Column2)看著一致但很多人順手把Column2寫成了Row2結(jié)果顯示區(qū)域變成一個(gè)細(xì)長條。這種錯(cuò)誤編譯器不會(huì)報(bào)只能靠肉眼發(fā)現(xiàn)。4.3 句柄和內(nèi)存的生命周期別指望 GCHalcon 的HObject內(nèi)部是引用計(jì)數(shù)理論上離開作用域就釋放。但有兩類東西不在此列一是窗口句柄OpenWindow出來的必須CloseWindow二是HTuple里塞的數(shù)組如果在一個(gè)循環(huán)里不停TupleConcat內(nèi)存會(huì)一直漲。我的做法是給圖像加一個(gè)作用域守衛(wèi)避免在異常路徑上漏掉釋放// HObject 的作用域守衛(wèi)構(gòu)造時(shí)給個(gè)空對(duì)象析構(gòu)時(shí)強(qiáng)制 ClearObj class HObjScope { public: HObjScope() { m_obj.GenEmptyObj(); } ~HObjScope() { m_obj.ClearObj(); } // 引用計(jì)數(shù)歸零底層內(nèi)存立即回收 HObject* operator() { return m_obj; } // 支持 ReadImage(scope, ...) 這種寫法 HObject Get() { return m_obj; } private: HObjScope(const HObjScope); // 禁止拷貝防止引用計(jì)數(shù)被意外加一 HObjScope operator(const HObjScope); HObject m_obj; };ClearObj和讓它自然析構(gòu)的區(qū)別在于時(shí)機(jī)自然析構(gòu)要等棧展開異常路徑上如果被catch吞掉又沒重新拋出對(duì)象可能活到下一輪循環(huán)。顯式清一下內(nèi)存曲線會(huì)平得多。至于查看內(nèi)存任務(wù)管理器不夠用我一般掛個(gè)性能計(jì)數(shù)器看私有字節(jié)跑兩百幀不回落就是有泄漏。5. 避坑與排查模板匹配在 MFC 里翻車的五種現(xiàn)場5.1 Debug 能跑Release 一啟動(dòng)就崩現(xiàn)象Debug 下匹配正常切到 Release 雙擊 exe要么閃退要么ReadImage返回空、后面一路空指針。原因九成是運(yùn)行時(shí)庫不匹配。工程用/MT靜態(tài)鏈接而halconcpp.lib是按/MD編的兩套 CRT 同時(shí)在進(jìn)程里堆的分配和釋放跨了邊界HObject析構(gòu)時(shí)就會(huì)踩到別人的堆。解決C/C → 代碼生成 → 運(yùn)行時(shí)庫Debug 用/MDd、Release 用/MD和 Halcon 保持一致。改完記得全量重編只做增量編譯的話舊的 obj 還帶著老設(shè)置。5.2 換個(gè)角度就找不到score 掉到 0.3 以下現(xiàn)象工件擺正的時(shí)候 score 0.9 穩(wěn)如老狗一轉(zhuǎn)到十幾度就報(bào)未找到或者匹配到一個(gè)明顯錯(cuò)誤的位置。原因三個(gè)可能按概率排——AngleExtent沒覆蓋實(shí)際偏轉(zhuǎn)范圍AngleStep太粗邊界角度上模板和實(shí)際錯(cuò)開了半個(gè)像素以上MinContrast設(shè)太高轉(zhuǎn)到側(cè)面時(shí)邊緣對(duì)比度下降模板點(diǎn)被大量過濾。解決先把AngleStart/AngleExtent放寬到實(shí)際范圍的兩倍做一次驗(yàn)證能穩(wěn)定找到再收窄再按 3.2 的公式重算AngleStep最后把MinContrast降到建模Contrast的三分之一試試。三步做完還是不行那就是模板本身特征不足得換 ROI 或者加輔助特征。5.3 界面卡死匹配框畫在了按鈕上現(xiàn)象點(diǎn)開始之后界面卡住幾秒后圖像出來但畫在了對(duì)話框左上角蓋住了標(biāo)題欄和按鈕。原因算子在 UI 線程里同步跑消息泵被堵住同時(shí)OpenWindow的父句柄傳成了對(duì)話框的m_hWnd而不是 Picture Control 的句柄。解決算子挪到工作線程見 2.3結(jié)果通過PostMessage回主線程繪制父句柄改成控件句柄。改父句柄之后要檢查OnSize控件尺寸變了窗口得跟著調(diào)否則圖像會(huì)被裁掉一塊。5.4 跑一兩個(gè)小時(shí)內(nèi)存持續(xù)上漲現(xiàn)象剛啟動(dòng)時(shí)幾十兆跑一下午漲到一兩個(gè) G最后彈“內(nèi)存不足”。原因OpenWindow之后沒CloseWindow每次重開分辨率或切圖都漏一個(gè)循環(huán)里ReadImage出來的HObject掛在成員變量上沒清HTuple在循環(huán)里做TupleConcat累積。解決所有窗口操作成對(duì)出現(xiàn)寫一個(gè)ResetWindow()統(tǒng)一管圖像用 4.3 的守衛(wèi)HTuple在循環(huán)開頭hv_Result HTuple()重置。掛性能計(jì)數(shù)器觀察私有字節(jié)跑兩百幀不回落就是還有漏。5.5 中文路徑的圖讀不進(jìn)來現(xiàn)象ReadImage拋異常說文件不存在但資源管理器里明明有或者路徑里的中文變成一堆問號(hào)。原因MFC 工程默認(rèn) UnicodeHTuple接受const char*時(shí)按 ANSI 解釋寬字符路徑直接傳進(jìn)去就是亂碼。解決所有傳給 Halcon 的字符串都過一遍轉(zhuǎn)換CString strPath _T(D:\\圖像\\part_01.png); HTuple hv_File(CT2A(strPath)); // 轉(zhuǎn)成窄字符需要 atlconv.h ReadImage(ho_Image, hv_File);更徹底的辦法是工程目錄和文件名全用英文但現(xiàn)場拷貝過來的圖往往不聽話轉(zhuǎn)換這一步別省。6. 交付前的一次壓測用五十張圖驗(yàn)證穩(wěn)定性與節(jié)拍模板匹配調(diào)通不等于能交付。我踩過最疼的一次是現(xiàn)場跑了兩小時(shí)才開始偶發(fā)漏檢——光照隨時(shí)間漂移上午十點(diǎn)以后太陽斜射進(jìn)車間工件的對(duì)比度整體往下掉了三成MinContrast那關(guān)就過不去了。從那以后交付前必須跑一輪批量驗(yàn)證。驗(yàn)證分三塊缺一不可驗(yàn)證項(xiàng)做法判據(jù)覆蓋率五十張覆蓋全角度范圍的真實(shí)圖逐張跑漏檢 0 張誤匹配 0 張分?jǐn)?shù)分布統(tǒng)計(jì)所有 score 的最小值與均值最小值 MinScore× 1.3重復(fù)性同一張固定圖連查 100 次Row/Column 標(biāo)準(zhǔn)差 0.05 像素節(jié)拍連續(xù)跑 500 次取均值單幀耗時(shí) 產(chǎn)線節(jié)拍的 1/3最后一項(xiàng)留三倍余量不是保守是給現(xiàn)場的老工控機(jī)留的——開發(fā)機(jī)是 i7產(chǎn)線上那臺(tái)可能是十年前的雙核。批量腳本我一般直接寫在 demo 里加個(gè)隱藏的按鈕只在調(diào)試模式下顯示void CMatchDemoDlg::RunBatchTest() { double minScore 1.0, sumMs 0.0; std::vectordouble vRow; int nOk 0, nNg 0; for (int i 1; i 50; i) { CString strPath; strPath.Format(_T(data\\part_%02d.png), i); // 圖按序號(hào)命名覆蓋全角度 HTuple hv_File(CT2A(strPath)); HObject ho_Image; ReadImage(ho_Image, hv_File); LARGE_INTEGER t0, t1, freq; QueryPerformanceFrequency(freq); QueryPerformanceCounter(t0); // 計(jì)時(shí)只包住 FindShapeModel HTuple hv_Row, hv_Column, hv_Angle, hv_Score; FindShapeModel(ho_Image, m_hvModelID, HTuple(-15).TupleRad(), HTuple(30).TupleRad(), 0.6, 1, 0.5, least_squares, 0, 0.8, hv_Row, hv_Column, hv_Angle, hv_Score); QueryPerformanceCounter(t1); sumMs (t1.QuadPart - t0.QuadPart) * 1000.0 / freq.QuadPart; if (hv_Score.Length() 0) { nOk; minScore min(minScore, hv_Score[0].D()); vRow.push_back(hv_Row[0].D()); // 重復(fù)性用固定圖另外跑 } else { nNg; } ho_Image.ClearObj(); } // 結(jié)果直接彈個(gè) AfxMessageBox或者寫日志別只在調(diào)試器里看 CString strMsg; strMsg.Format(_T(通過 %d / 失敗 %d / 最低分 %.3f / 平均耗時(shí) %.1f ms), nOk, nNg, minScore, sumMs / 50.0); AfxMessageBox(strMsg); }計(jì)時(shí)的位置很講究QueryPerformanceCounter要把FindShapeModel單獨(dú)包起來別把取圖和繪制也算進(jìn)去否則測出來的是整個(gè)流程的耗時(shí)優(yōu)化的時(shí)候找不到重點(diǎn)。hv_Score[0]取第一個(gè)是因?yàn)榻Y(jié)果已經(jīng)按分?jǐn)?shù)降序這里只關(guān)心最優(yōu)的那個(gè)。重復(fù)性那項(xiàng)要單獨(dú)做拿同一張圖重復(fù)查 100 次把Row、Column存進(jìn)std::vector算標(biāo)準(zhǔn)差。如果標(biāo)準(zhǔn)差跑到 0.3 像素以上說明模板的邊緣特征不夠銳利或者Greediness設(shè)太高導(dǎo)致每次走的搜索路徑不同。這個(gè)指標(biāo)比 score 更能反映系統(tǒng)的真實(shí)精度因?yàn)?score 是相對(duì)的重復(fù)性是絕對(duì)的。還有個(gè)小技巧把五十張圖的 score 全部打到日志里畫個(gè)折線看一眼。如果是一條平線說明模板很穩(wěn)如果中間有個(gè) V 形谷那幾張圖就是薄弱環(huán)節(jié)單獨(dú)拎出來分析光照或者遮擋比現(xiàn)場出了問題再回頭查高效得多。我現(xiàn)在的習(xí)慣是只要這個(gè) demo 要交給別人用不管對(duì)方說得多急批量驗(yàn)證這一輪必須強(qiáng)制走完日志文件跟 exe 一起打包。不是為了證明什么是因?yàn)楝F(xiàn)場那臺(tái)機(jī)器和那張圖永遠(yuǎn)比實(shí)驗(yàn)室里多一個(gè)你想不到的變量。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天干夜夜想| 光棍影院日韩精品| 五月综合久久| 爱穴久久| 日本理论久久| 大香蕉99热| 激情av网| 婷婷五月天六点丁香五月| 91丨九色丨首页| 婷婷五月六月丁香综合| 5月丁香六月情| 电影蜘蛛女| 激情五月综合网最新| 色五月激情综合| 成人版视频在线观看| 亚洲在线视频321| 日本天天操| 六月婷婷久久| 中文字幕日产A片在线看| 伊久大香蕉| 国产毛片欧美毛片久久久| 噼里啪啦在线观看免费完整版视频 | 丁香五月伊人| 丁香婷婷五月色成人网站| 99在线视频资源| 久99在线视频| 婷婷六月啪啪| 婷婷综合干| 国产精品人妻在线网址| 五月丁香激情综合欧美| 丁香婷婷91在线观看视频| 天堂中文国产| 中文幕无线码中文字蜜桃| 欧美槡BBBB槡BBB少妇| 亚洲热久| 婷婷五月激情基地| 天天爽天天日| 丁香五月AV| 亚洲99热| 免费观看欧美成人AA片爱我多深 | 久久综合九色综合97婷婷| 深爱五月婷婷| 婷婷丁香色情| 欧州婷婷五月天综合| 91精品综合久久久五月天| 婷婷激情视频| 色五月影视| 99精品综合视频| 1024操逼视频| 噜一噜在线| 99精品视频在线观看| 亚洲 成人 电影av在线观看| 逼逼AV| 停停五月色宗合| 91久操| av一区二区电影免费在线观看| 婷婷丁香社区| 五月天色视频| 青青草伊人婷婷| 99热综合在线| www.99精品日操伊人乱碰在线| 久久综合55| 久热这里只有精品在线观看| 色狠狠色| 五月婷婷熟女| 久久久久婷 | 激情婷婷在线| 日 日干 日日做| 丁香九月婷| 99精品国产在热久久婷婷| 成人色情五月天婷婷丁香| 草综合14| 青青草99热久久精品国| 五月天激情影院| 六月丁香成人| 五月婷婷丁香| 六月丁香大香蕉| 99玖玖在线视频| 久久婷婷综合五月趴| 久草热8精品视频在线观看| 伊人综合色干| 精品久久人妻| 婷婷五月天综合网| 97干网站| 五月婷婷色播视频| 1024日韩| 爱iii做iiii日日| 99亚洲无码| 色色色色色色色色色色色色色色,网站| 琪琪理论片| 久久狼人天堂| 亚洲舔观看| 在线综合啪| 六月激情久久| 久久婷婷精品| 久久精品99国产精品日本| 色99欧洲色19| 婷婷五月天精品| 激情综合五月丁香| 国产偷人爽久久久久久老妇APP| 五月丁香亭亭成人电影| g00d人体西西| 色婷婷影视| WWW.开心五月天.COM| 五月婷婷色欲| 色色综合网站| 毛片新网地| 亚洲国产成人AV在线| 天天日天天插| 99re热视频| 一区视频网站| 五月情涩综合婷婷| 欧美97超碰| 欧美日韩成人高清在线| 另类小说色婷婷| 狠狠狠狠狠狠狠狠| 超碰久热| 香焦网五月天| 九九伦子片| 9999久久久久| 久久女人天堂| 色婷婷国产精品综合在线观看| 综合大香蕉| 久热A片| 深爱婷婷网| 婷婷社区五月天| 久久五月天色婷婷| 99re热精品在线视频| 婷婷色综合网日韩国产| 三男玩一女三A片| 综合激情肏逼网| 狼人久草| 五月婷婷黄色| 色呦呦美女| 五月婷婷欧美激情| 天天橾夜夜爽| 色色色色色网站| 美妞av| 丁香婷婷黄网站| 久久艹网| 五月色网| 一区二区三区四区五区| 全网最新网黄大秀直播高清,主播国产录屏在线 | 巴基斯坦粉嫩无码视频| 丁香六月青青草| 婷婷丁香五月天影院 | 亚洲无码成人网| 五月天伊人手机在线播放AV| 丁香五月天人体| 激情小说婷婷小说| 色五月婷婷开心| 五月丁香婷中文| 天天操天天日天天爽| sisi热国产| 九九九午夜影院成人| 新激情五月开心五月婷婷五月丁香五月| 97在线精品| 国产精品成人AV在线| 国产成人av在线播放| www. 五月. com| 狠狠色婷婷综合开心影视| www.ywav| 激情婷婷五月亚洲| 99综合一区| 亚洲女婷婷五月基地综合久久久| 激情婷婷丁香色五月综合| 九九碰九九爱97超碰| 综合网网欲色| 美女丁香五月天| 激情综合五月色在线| 婷婷深爱网| 偷拍五月丁香| 99精品在线| 国产精品VIDEOSSEX久久发布| 26uuu成人网| 超碰在线播放免费观看| 欧美日本黄色| 中文无码精品一区二区三区| 欧美在线视频免费播放| www.狠狠操| 无码一区二区三区四区五区91c| 人碰91| 在线不卡视频| 色99网| 欧美日韩成人在线观看| 操操操av| 99热这里| 中文字幕无线久必| 激情五月丁香五月| 狠狠操狠狠| 欧美三级巜人妻互换| 免费操超碰| 五月色综合网欧美网| 思思热99在线视频| 综合五月天| 九九自拍网| 日日做夜夜爱| 噼里啪啦在线观看免费完整版视频| 超碰色女| 欧美va在线| 夜精品无码A片一区二区蜜桃| 日本久久天堂| 成人va在线播放| Blackedraw视频一区二区| 99精品热视频| 日本九九视频| 精品99在线| 婷婷综合国产| 亚洲综合婷婷五月天| 五月婷婷性爱| 天天日人人| 六月综合婷婷开心伊人| 成人国产综合| 禁欲电影完整版在线播放| 97色碰| 色色99| 开心激情综合| 婷婷丁香五月亚洲综合网在线视频观看| 337p大胆噜噜噜噜噜91Av| 久久宗合影| 无码99| 久久免费9| 综合99综合久久久久久久| 永久热91| 久久视屏这里只有久久| 丁香五月综合激情性爱| 六月丁香综合| 夜夜爱网站| 婷婷八月激情| 亚洲国产精品VA在线看黑人| 激情 婷婷 丁香五月天| 大香蕉久久久久久久久| av九九| 婷婷五月天,影院| 色色五月天激情| 亚洲 精品 综合 精品| 五月天丁香啪啪网| www.99久久久| 热久久精品视频网站| 91丨九色熟女丨首页| 亚洲综合另类| 成人在线网址| 日产精品久久久久久久蜜臀| 天天操夜夜橾| 亚洲色色色| 亚洲熟妇AV综合网五月丁香伊人| 丰满少妇猛烈A片免费看观看| 99热6这里只有精品6| 五月天婷婷影院| 日日干天天爽| 五月婷婷中文网| 午夜丁香综合婷婷| 亚洲一二三网| 色色五月天激情| 五月情婷婷| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 人人操AV| 97干视频在线| 婷婷香蕉香| 久久天堂| 五月天狠狠色| 婷婷天天婷婷天天澡| 婷婷五月天激情在线观看| AV九九| 日本成人噜噜噜| 丁香婷五月| 91久操| 99五月婷| 日韩无码亚欧无码| 26uuu成人网| 国产精产国品一二三在观看| 五月天播播| 五月丁香六月激情欧美综合| 欧美精产国品一二三区| 天天日天天爽| 成人开心五月天| 99热久久这里只有精品2010| 日本九九热| 裸体做A爰片毛片A片免费| 欧洲亚洲精品| 97色婷婷| 久9综合| 久久人妻少妇嫩草AV| 综合婷婷| 国产看真人毛片爱做A片| 色五月激情婷婷| 久久99网| 中文激情网| 六月丁香五月婷婷| 亚洲妇女熟BBW| 亚洲字幕AV一区二区三区四区| 色五月av| 婷婷五月综合中文字幕| 亚洲网视屏| 大香蕉伊人99| 五月婷网| 麻豆123区| 亚洲激情精品| 五月婷婷三级| 激情五月丁香五月| 99视频热| 丁香五月婷婷亚洲综合精品| 亚洲亚洲人成综合网络| 91蜜桃婷婷狠狠久久综合9色| 久月婷婷| av网址在线播放| 六月婷欧美| 五月天婷婷AV| 激情丰满熟妇五月| 国产精品美女| 色婷婷8| 九九美女视频| 他改变了拜占庭| 天天舔天天摸天天透| 色色色.COM| 日韩一级片| 另类少妇人与禽zOZZ0性伦| 婷婷五月激情综合啪啪| 99热这里只要精品免费| 婷婷香五月天| 丁香五月色五月| 亚洲热综合网在线观看| 1024日韩| 97luluse| 91狠狠色丁香婷婷综合久久| 五月丁香六月综合激情| 亚洲正能量欧美| 亚洲va日| 99热在线观看精品| 99riav 亚洲| 在线观看996精品| 丁香激情六月天婷婷| 天天干天天做| 婷婷五月天国产性感美女演员久久久久| 操逼国产91| 五月天婷爱综合| 色五月成人| 大香久久综合网| 99热99热在线观看| 无码色色色| 无码啪啪| 夜夜爱网站| 五月天激情综合首页| 五月丁香操亭亭网| 五月香婷婷| 欧美日本VA| 色伊人婷婷| 色综合天天| 99欧美精品99日本精品| 色青青五月| 岛国AV网| 99九九视屏| 色婷婷丁香五月天| www.激情五月天。com| 激情亚洲婷婷| 亚洲综合99| 六月婷婷综合| 色五月丁香总合网| 国产成人AV不卡| 五月天之色情综合网| 欧美精品啪啪| 五月6香色婷婷视频| 九九在线精品| 99热首页| 五月综合亚洲色| 免费看欧美成人A片无码| 五月丁香六月婷婷在线小说视频| 久久精品99国产精品日本| 亚洲精99| 激情综合色图| 日日夜夜干| 天天橾夜夜爽| 国产免费一区二区三州老师F1F1| 色五月激情五月开心五月| 婷婷色五月噜噜| 久99热| 色欧美一级| 五月婷婷色播网| 韩国中文字幕91| 五月丁香六月玩女人| 五月婷婷激情综合| 婷婷丁香色性爱| 五月综合激情| 人妻aV在线| 天天操天天日天天爱| 日本人妻伦在线中文字幕| 狠狠狠五月婷婷六月丁香| 美腿丝袜AV天堂网| 99热婷婷| 97色色色色色色色色色色色色色| 99热性色| 亚洲人妻av| 欧美色婷婷| 欧美性爱特黄一级aaaassss| 九九99九九99偷拍视频免费看| 五月综合激情啪啪啪啪啪| 丁香五月天激情婷婷丁香六月| 色五月丁香六月欧美综合| 国产精品久久..4399| 国产精品久久久久久妇女6080| 婷婷丁香五月六月激情| www.婷婷网| 26UUU欧美激情一区二区| 色综合色色色| 色综合久久88色综合天天99| 婷婷五月色激情欧美激情| 中美日韩成人在线| 婷婷激情综合网| 91 九色 入口| 艹色18p| AA片在线观看视频在线播放| 中文字幕日产A片在线看| 久久久久婷| 五月天婷婷影院影院观看| 亚洲射激情| 日韩综合网络男女香蕉a片| 色99免费视频中文| 777久久久| 色色欧美。| 婷婷五月色播天| 久久狠狠色| 色婷婷很很十八禁| 欧美S码亚洲码精品M码| 国产真实乱对白精彩| 伊人大香蕉毛片| 久久久久9久无码视频| 丁香五月亚洲综合| 香蕉99网| 色色色在线观看| 91人人澡人人爽人人看| 99在线精品视频| 五月丁香亭亭操逼| 丁香女人五月天| 激情五月天色| 五月婷婷六月丁香综合视频在线| 热99一二三| 爱久综合| 99热精品一区| 婷婷五月天激情电影小说| 99热在线这里| 婷婷99中文字幕| 丁香六月综合激情| 91seAV| 在热视频精品| 色婷婷AV在线| 国产乱妇无乱码大黄AA片| 狠狠婷婷色| 婷婷五月成人社区| 日本三级中国三级99人妇网站| 99热这里只有在线播放| 五月丁了香蕉综合| 五月天激情国产综合婷婷| 亚洲色婷婷视频| 伊人婷婷综合| 五月色情精品| 激情小说婷婷小说| 日日肏天天操| 少妇高潮一区二区三区99欧美| 国产伦亲子伦亲子视频观看| 操碰99| 五月丁香伊人网| 六月丁香啪啪啪| 亚洲激情网| 极品另类| 99国产这里只有精品| 九九热这里只有精品6| 熟女激情五月天 | 伊人久久婷婷五月天激情四射| 天天综合五月天| 久久精品这里只有精品免费首页| 极品另类| 9久热在线精品| 激情久久综合网| 开心久久xxx色| 综合一本道| AA丁香综合激情| 99久久丝| 五月激情婷婷丁香| 另类精品视频在线观看| 婷婷月综合| 五月丁香花激情啪啪网| 五月社区婷婷激情| 色色99| 骚五月婷婷| 五月成人天| 九九色婷婷五月天| 熟女五月天久久综合| 99天堂网| eeuus五月婷| www.婷婷五月| 亚洲国产网址| 丁香五月婷婷在线观看| 极品人妻VIDEOSSS人妻| 超碰AAAAAAV| 亚洲三A| 久久久久98| 久久婷婷色综合| 五月激情婷婷综合| 思思re99视频在线观看| 玖玖资源站国产| 色综合久久44| 小视频在线亚洲| 91人在线观看| 26uuu欧美日本| 色色图五月天| 久久思思热| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 精品人妻久久久久久久| 亚洲成人色五月婷婷综合| 99婷婷国产最新视频| 五月丁香五月丁香五月丁香五月丁香91| 日日操日日射| 五月天综合在线网| 美女激情婷婷| 97碰人人操| 99热精品中文字幕| 蜜乳中文字| 97婷婷在线| 五月天成人免费视频| 五月婷婷丁香av| 99热在线观看| 激情五月婷婷在线观看| 天天搡日日搡aaaaⅩ| 思思热在线观看| 婷婷精品性性性性性性性| www.97碰碰com| 日日夜夜干| 99在线公开视频| 超碰九九热| 啪啪丁香五月| 666555。COm毛片| 婷婷色情五月| 婷婷激情综合无月| 91九色中文字幕女在线观看| 综合色五月亭亭| 97色永久免费视频| 亚洲岛国电影| 成片免费播放| 亚洲天堂aaa| 激情深爱综合| 色99无码| 激情五月天小说| 99视频精品视频| 超碰97久久| 日本色色色色色色色色一色二色| 久草五月婷婷| 91人碰| 操操操操操电影网| 欧美黑人巨大猛烈cuckold| 亚洲六月色婷婷| 九九婷| 成人va在线播放| 亚洲色综合| 欧美日韩AAAA| 久/久精品99看9| 99色视频在线观看最新| 97电影99热| 六月色 亚洲| 婷婷五月天丁香花| 五月丁香婷婷视频| 五月婷婷影| 亚洲最大激情无码| 五月婷婷丁香婷婷| 婷婷丁香人妻天天爽| 精品无码片| 中文字幕在线免费观看视频| 91在线日| 色玖玖综合网| 天天爱天天做天天操| 97资源碰碰| 91超碰人人操| 六月激情综合| www.五月天| 丁香五月偷拍| 九九色色| 婷婷色狠狠| 婷婷色在线视频| 婷婷综合av| 色九九一二| h亚洲| 丁香五月天在线观看视频| 性色欲情 网站| 五月激情丁香五月宗合| www.夜夜騎夜夜狠| 婷婷爱五月天| 九九热免费视频| 日本99热| 婷婷丁香久久| 天天做天天爱天天高潮| 西西4r午夜剧场| 狠狠一日| 丁香五月激情综合| Av在线资源| 97干在线视频| 六月婷婷色宗合| 亚洲五月天婷婷| 91久久久久久久久| 狠狠色婷婷综合开心影视| 男人天堂 久久| 日本va欧美va欧美va精品| 五月天激情无码高清 | www.婷婷五月| 99视频在线观看视频| anquye伊人| 国产一二三四五六七八视频| 色色五月婷| 97成人在线视频| AV网在线观看| sewuyuejiqingwang| 色六月婷婷| 精品一区久热| 色婷婷AAA| 新激情五月天天在线网| 开心色色五月天综合| 激情五月丁香社区| 干一干xxxx| 色色网91| 天天干电影| 六月五月天婷婷涩播在线| 黄色aaaaa| YJLZZJLZZ亚洲乱熟无码| 人人97操| 婷婷五月丁香综合激情| 丁香六月伊人| 五月色情婷婷| 欧日韩AV| 国产成人精品亚洲线观看| 狠狠香婷婷五月| 五月丁香激情综合网| 五月天久草| 色亚洲激情| 91N 一起草| 狠狠做婷婷| 天天射天天插天天干| 婷婷六月丁香综合| 99视频这里有精品| 五月婷婷色综图片| 九九无码| 开心五月婷婷激情| 91色噜噜狠狠狠狠色综合| www.jiujiujiu| 91狠狠综合久久| 99亚洲天堂| 亚洲综合热| 人妻视频在线| 天天色粽合合合合合合合| 久久视频婷婷视频| 色综合中文综合网| 久久永久视频| 色色丁香五月天| 六月丁香啪啪啪| 99久久国产宗和精品1上映| 欧美成人精品A片免费一区99| 激情六月下句是什么| 久久亚洲天堂| 欧州婷婷五月天综合| 97人人操人人爽| 欧美电影在线播放| 激情电影五月婷婷| 人人摸人人澡人人| 婷婷色香六月综合激情| 91 影音先锋| 五月丁香六月婷婷成人电影| 中文av网| 天天插天天日天天爽| 天天做天天爱| va婷婷在线| 成人在线日韩欧美| 日本操B视频| 91chinese在线| 久久这里只有国产视频| 亚洲欧美国产A片免费观看| 这里只有精品1| 九九色热| 精品国产一区二区三区四区阿崩| 久久色五月天| 五月激情婷婷综合| 99热亚洲综合| 婷婷视频在线| 99九九在线精品热动漫| 天天爽天天摸天天爱| 五月综合激情图片 | 九九99精品视频在线观看| 丁香五月综合亚洲| ss99热| 五月天激情小说| 97超级操操| 综合久久婷婷99| 五月天婷婷社区| 丁香美女五月天婷婷| 五月婷婷色丁香| 99男人天堂| 婷婷色无码| 婷婷激情在线| 伊人色五月| 波多婷婷久久| 日韩色色视频| 亚洲中文字幕网| 狠狠干狠狠色| 五月天丁香网站| 丁香五月激情五月开心五月| 伊人色欲五月天| 国产探花AV在线| 五月丁香基地| 五月丁香激情综合网| 丁香五月激情网| 色综合久久99色| 99啪啪| 玖玖爱资源站| 色综合区| 久久婷婷成人| 粉嫩AV久久一区二区三区| 色五月 婷婷, 大香蕉| 97碰碰叉| 2013AV天堂| 精典久久| 就要去操亚洲成人精品五月天丁香婷婷| 97激情五月天| 第四色婷婷五月| 激情五月婷婷网| 激情视频网址| 成人做爰高潮A片免费视频| 日本久久精品| 亚洲中文字幕在线观看| 91精品丝袜久久久久久久久粉嫩| 激情综合五| 日韩性视频| 天天操夜夜玩!| 中文字幕av久久爽一区| 黄色录像网点| 玖玖综合色区在线观看| 天天肏天天肏| 中文精品久久久久人妻不| 五月天另类小说久久小说网| 色区域网站视频| 欧美久久婷婷| 日韩三级视频一区二区| 亚洲色图啪啪| 日本激情五月| 亚洲精品色| 国产偷人爽久久久久久老妇APP| 五月丁香啪啪综合| 噜噜狠狠色综无码久久合欧美| 人妻无码精品一区| 91丨九色丨熟女高潮| 午夜少妇在线观看视频| 日韩成人综合网| 婷婷五亚洲| 天天做天天爽| 日本色道视频网站| 开心激情站| 国产综合81p| 五月天婷婷基地丁香| 午夜青草资源| 999激情视频| 婷婷丁香十月| 久久久久久激情| 五月天另类小说久久小说网| www.狠狠| 草美女在线观看视频在线播放| 婷婷五月丁香香蕉| 色色色色色综合| 亚洲色五月婷婷| 99超碰在线观看| 婷婷五月天网址| 久久九九一區| 开心丁五月| 黄色五月婷婷| 九九色情网五月天| 婷婷久久丁香| 久久与婷婷| 久久婷婷激情视频| 夜色综合网| 狠狠干思思热| 粉嫩AV久久一区二区三区| 99热欧美| 无码色色色| 久久 这里只有精品1| 婷五月天| 国产精品久久..4399| 激情美女五月天| 91黄色五月天视频| 黄色一级影片| 国产在线6| 日本色超碰| 国产美女视频久| 亚洲精品亚洲人成人网| 亚洲五月婷| www夜夜操comwww| 五月婷婷天堂| 六月丁香久久| 99网99热| 色婷| 另类激情中文| 五月天开心激情综合网| 99久久99视频只有精品| 激情五月天婷婷| 五六月丁香激情视频| 专区无日本视频高清8| 婷婷五月天激情丁香| 久久婷婷色| 国产做爰视频免费播放| 97碰碰视频| 激情 婷婷 插| 99热欧美偷拍| 99热精品在线观看| 五月丁香六月| 婷婷射图五月天| 九九视频免费| 色玖玖爱| 超级黄色片| 亚洲精品一区无码A片| 91玖玖| 婷婷成人视频| 五月丁香六月香综合激情| WWW五月婷婷| 99九九精品视频| 超碰操日| 色综合99无码| 婷婷五月天综合亚洲| 五月天婷婷综合网| 婷婷五月成人| 超碰人妻在线| 亚洲婷婷91丁香| 日本色综合| 五月天激情婷婷久久| 综合图区激情| 色综合网综合| 五月天婷婷在线观看精品男人| 五月丁香激情综合网| www.婷婷五月天| www.五月婷婷.com| 九九99热| www.婷婷五月天.com| 五月天丁香综合| 七七九色| 亚洲综合五月天婷婷丁香| 婷婷天堂站| 六月大香蕉| 玖玖99婷婷| 日韩在线一级| 丁香婷婷少妇| 婷婷五月天激情免费在线观看| 婷婷色亚洲| 光棍影院日韩精品| 久久久久8888| 婷婷香蕉视频| 91在线就要啪| 日本黄 色 片| 色欲色欲久久宗合网| 99国产精品久久久久久久久久久| 天天肏高清在线| www,五月天激情| 婷婷激情丁香五月天综合| 99在线观看视频免费| 在线成人网址| 开心五月激情五月丁香五月婷婷| 五月天激情在线视频| 久久这里只有国产精品视频| 国产精品五月丁香| 亚洲热综合网在线观看| 丁香五月 六月婷婷首页| 99只有这里是精品| 久久一二三视频| 婷婷午夜丁香| 九九热这里只有精品556| 91色综合| 狠狠搞五月天| 人人澡天天色天天做| 婷婷丁香社区网| 午夜丁香综合婷婷| 开心四月婷婷在线色播播| 久久 这里只有精品1| 五月丁香六月婷婷综合网| 人妻久久久久久久| 亚洲热综合网在线观看| 99精品在线| 99婷婷国产最新视频| 色婷婷影院| 久久久婷婷色五月资源网| 成人网站高清无码| 色色综合色视频| 99国产小视频| 久久色情| 新男人天堂人妻| 丁香久色| 亚洲综合视频在线| 欧美搡BBBBB摔BBBBB| 九九婷婷热| 香蕉伊人综合| 五月婷AV| 99这里只有精品视频| 成人午夜视频精品一区| 综合亚洲AV| 激情五月天色婷婷综合| 另类视频一区| 丁香八月综合激情| 99视频啪啪| 五月丁香激情四射综合| 国产精品五月天婷婷| 久久性爱视频| 天天日天天久久青青| 大香蕉天堂| 五月丁香六月综合激情 | 国产人人操| 9999热在线观看| 成人在线网址| 色婷婷狠狠爱| 香蕉乱插| 五月丁香激情婷婷综合字幕| 亚洲成人五月天| 激情伊人网| 99热这里只有精品最新| 色V狠狠的干| 天天干 夜夜爽| 激情五月天婷婷丁香| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 极品少妇高潮啪啪AV无码| 日韩精品电影| 色噜噜在线| 丁香五月天亚洲综合| 色五月成人网| 欧美久人人| 成人丁香五月| 超碰成人AV| 五月天开心婷婷激情网站| 人人摸人人干| 亚洲va在线∨a天堂va欧美va| 狠狠婷婷色| 开心五月丁香综合久久| 大香蕉啪啪啪| 丁香五月婷婷成人网| 色婷婷成人| 91精品久久久久久久| 99热只有| 久久最新色色色| 97干干干丁香| 久久久精品色| 日本大逼91| 五月久久丁香| 丁香五月ⅤA久久久| 五月天综合色| 97干在线免费| 色99热| 韩国情人在线电视剧免费观看高清版全集| 久久久天堂国产精品女人| 色六月视频| 色婷婷91| 欧美日本韩国亚洲| 精品人妻伦一二三区久久| 9久热在线视频精品| 九九久久五月天| 五月亚洲激情| 99久在线观看| 91 影音先锋| 人人综合久| 夜夜夜叫天天天做| 婷婷五月丁香综合瑟瑟| 人妻久久久久久久| 婷婷5月九九| 在线婷婷| 98国产精品综合一区二区三区| 六月激情久久| 天天爽综合| 亚洲天堂爱爱| 欧美高潮9| 丁香六月在线| 亚洲热久久| www 五月天 com| 丁香五月婷婷超碰在线| 影院久久久| 亚洲激情四谢| 五月婷婷六月色| 99re思思久久| 久色激情| 婷婷丁香五月欧美人| 久久久婷婷五月天| 丁香五月大香蕉| 第四色激情网| 99人妻碰碰碰久久久久视| 婷婷五月精品中文字幕| 狠狠草网| 91re色综合视频| 五月丁香啪啪啪| 日本一级一级一级一级| 九月色婷婷综合| 久久免费高| 屁股翘好撅高迎合跪趴| 97热91| 欧美成人精品A片免费一区99| 激情综合五月| 青青草原福利在线| 五月天激情社区| 99热6精品| 婷婷五月丁香伊人| 区区欧美你爱| 五月婷视频在线| 99在热线免费视频| 这里精品| 亚洲综合另类| 91九色中文字幕女在线观看| 97干在线播放| 亚州色婷婷| 超碰成人电影| 99操无码视频观看| 五月婷婷AV| 9精品久久999| 色www99| 伊人玖玖网| 男人天堂99| 九九激情网| 成人超碰AV| 日韩五月婷婷| 色的色综合| 人妻久久久久久久久妻久久久久| 色 五月俺去也| 婷婷五月激情视频在线| 五月天综合久久| 亚洲操人| 五月开心久久| 五月丁香六月成人| 丁香五月成人自拍| 色婷婷视频| 国产精品久久99| 久月丁香爱婷婷综合| 丁香成人综合| 亚洲视频a| 99激情视频| 五月天婷婷爱| 激情图片久久| 九热视频| 丁香五月成人在线| 婷婷九月狠狠色| 四季8848精品成人免费网站| 九月综合| 综合色色婷婷| 99热99色| 五月丁香婷婷成人网| 日韩 中文 欧美| 丁香色五月婷婷91桃色| 激情九月婷婷| 淫视馆av三区| 欧美成人网99网| 久久一热免费视频| www.五月天婷婷| 日韩aⅴ视频| AV电影在线播放| 国产成人网站在线观看| 天天舔天天摸天天透| 一起草无码| 五月天激情日色在线| 欧美日韩99| 丁香五月欧美成人| h在线看免费版在线看| 开心婷婷五月激情网小说| 激情婷婷视频在线| 综合99久久天天综合| 骚货艹网站视频| 色欲日日躁| 五月婷婷高清| 久久婷婷综| 99网址在线看| 操操精品| 香蕉久久国产AV一区二区| www.婷婷五月天| 婷婷五月激情中文字幕| 色情五月停停丁香| 蜜乳国产网站| 色欲丁香久久| 丁香五月日本| 综合色综合| 久久机热这里只有| 欧美婷婷五月无砖| www.91五月| 无码人妻AV久久久一区二区三区 | 99久视频| 五月天播播| 色婷婷色五月丁香| 五月天欧美 另类小说| 丁香六月av| 男人天堂伊人五月丁香| 色噜噜伊人| 综合狠狠干| ss99热| 丁香婷婷视频一区二区| 98永久精品| 色色9 9| 99视频日韩| 久久9情免费| 一级性感毛片| 丁香五月停停基地| 97精品欧美91久久久久久久| 亚洲第一成人无码A片| 2015好吊操| 六月婷欧美| 色婷婷婷婷成人网| 五月情婷婷五月| 狠狠干激情五月| 五月丁香婷婷成人综合网| 婷婷五月,偷窥偷拍网| 秋霞AV淫| 综合视频五月| 最新va在线播放| 亚洲永久四色| 无码人妻少妇色欲AV一区二区| 色五月丁香91| 婷婷免费无马| 婷婷五月天无码熟女| 五月天五月天成人网亭亭成人色网站| 能看的av网站| 亚洲天堂热| 久久大香蕉丁香| 综合久久久婷| 99久久黄色顶级视频| 四月婷婷丁香| 夜夜爽天天干| 色色五月天com| 五月天播播综合| 激情第四色| 99九九这里有免费视频| 五月丁香六月婷婷综合在线| 深爱激情AV| 99热都是精品| 五月色色色| 91碰免费视频| 欧美激情丁香五月| 伊人久久大香蕉网| 开心五月婷婷| 久久久久9999| 天天日天天色| ji'qi'luan'ren'lun| 91久操| 91精品国产综合久久蜜芽解析速度| 久久五月天色婷婷| 岛国av网站| 久在线88综合| 婷婷五月天丁香社区| 九热视频这里只有精品| 五月丁香激情四射| 99视频综合网| 好激情在线综合网| AA片在线观看视频在线播放| 天天操天天插天天射| 日韩六六久久电影| 内射爽无广熟女亚洲| www.色欲丁香婷婷| 丁香婷婷五月综合欧美另类| 99亚洲综合| 99精品免费视频| 天堂中文国产| 99热久只有精品首页| 伊人五月天在线| 青青久久91| www.色色色色| 亚洲AV久久久久久久久久久久久久久久 | 丁香五月天天| 思思热精品在线视频| 97狠狠色| 玖玖资源在线视频| 超碰色色综合| 色五月婷婷丁香五月| 久热99久热| 五月丁香激情六月| 人人操超碰| 狠狠色成人影片| 亚洲成人中心| 五月综合激情| 久久五月婷| 五月婷婷99热| 亚洲综合99| 五月婷丁香| 五月丁香综合| 99热在线观看精品| 丁香色情五月天| 婷婷大香蕉| 久久这里只| 久久9久久| 色狠狠综合| 日日肏天天操| a毛片二逼wwwwwwwwww| 91九色欧美| 激情综合五月激情17| 婷婷五月激情欧美大胆视频| 五月天激情啪啪| 射琪琪| 2017狠狠干| 狠狠色丁香| 97亚洲视频在线| 亚洲综合狠狠艹| 男女av免费看| WWW.桔色成人.COM| 无码网| 色婷婷丁香AV综合| 99热在线精品观看| 天天日天天日天天搞| 色婷婷情片| 无码人妻少妇色欲AV一区二区 | 五月的丁香六月的婷婷| 久久精品99久久久久久久久| 五月天色丁香| 天天搞天天色综合| 亚洲国产精品成人免费一区久久久在线观看AAAA | 色一情一乱一乱一区9| 99热免费在线| 色综合另类| 狠狠干在线视频| 波多野结衣成人作品在线| www.99在线| 激情婷婷丁香色情五月天| 色婷婷888| 91窝窝| www,999日本色| 婷婷五月激情小说| 五月丁香激情综合啪啪| 色5月婷婷| 亚洲美女婷婷五月天| 大香蕉天堂| 91好好热日本在线| 亚洲av电影网站| 麻豆AV一区二区三区| 午夜五月天| 大香蕉九操| 婷婷五月激情中文字幕| 99久久婷婷国产综合精品青桔| 丁香青青五月天| 热99玖玖99玖玖99九九| 欧美成人精品三区综合A片| 色五月网址| 五月婷婷AV| 日本啪啪网| 激情婷婷五月天| 五月天伊人久久久久| 婷婷五月六| 99精品亚洲| 婷婷色正月| 俺也去在线视频 | 五月天婷婷av| 亚洲AV综合在线观看| 97碰操| 1024成人免费看| 91久女| 狠狠 久久| 激情玖玖综合网| 色婷婷最新域名| 玖玖综合玖玖| 另类婷婷五月天啪帕帕| 亚洲成人无码免费| 五月丁香免费视频| 久久五月婷婷电影| 久久婷婷五月综合啪| 玖玖午夜视频| 99久久www| 五月丁香欧美综合| 六月丁香婷婷色狠狠久久| 五月婷婷成人网首页| 五月婷婷婷婷婷婷艺术| 拳交大逼| 天天做天天爱天天要| 婷婷婷婷婷婷婷五月丁香| 丁香五月婷婷av| 色丁香久久| 日韩啪啪视频| 色伦专区97中文字幕| 天花AV无码| 欧美精品99| 中文无码婷婷|