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

ARTICLE DETAIL

資訊詳情

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

工業(yè)相機(jī)SDK C++ Demo:枚舉取流、回調(diào)落盤與插件集成

工業(yè)相機(jī)SDK C++ Demo:枚舉取流、回調(diào)落盤與插件集成 簡(jiǎn)介面向機(jī)器視覺(jué)工程師的這份C示例工程圍繞??倒I(yè)相機(jī)SDK的API調(diào)用展開(kāi)重點(diǎn)解決相機(jī)參數(shù)配置、圖像采集與實(shí)時(shí)顯示、設(shè)備枚舉連接及異常反饋等開(kāi)發(fā)入門問(wèn)題適合具備C基礎(chǔ)、希望用Qt搭建工業(yè)相機(jī)上位機(jī)的開(kāi)發(fā)者參考。壓縮包共239個(gè)文件約11.02MB主要由h/hh頭文件、cpp源文件、lib靜態(tài)庫(kù)、vcxproj與sln工程文件構(gòu)成并包含ui/qrc界面資源、pro工程配置、def導(dǎo)出定義及exe示例程序覆蓋從工程組織到編譯運(yùn)行的完整結(jié)構(gòu)。已有約1300人學(xué)習(xí)。其價(jià)值在于提供可對(duì)照的完整Qt工程與SDK調(diào)用實(shí)例讀者可據(jù)此理解觸發(fā)模式、分辨率、幀率、曝光時(shí)間等參數(shù)設(shè)置以及圖像緩存管理和錯(cuò)誤捕獲思路對(duì)多相機(jī)系統(tǒng)的自動(dòng)發(fā)現(xiàn)與配置也有參考意義。在此基礎(chǔ)上讀者可進(jìn)一步擴(kuò)展圖像處理、特征檢測(cè)等功能減少?gòu)牧愦罱ōh(huán)境的成本并在二次開(kāi)發(fā)時(shí)更快定位接口調(diào)用與工程配置問(wèn)題。1. 工業(yè)相機(jī) SDK 的 C Demo 源碼包先別急著編譯先看它替你省了哪幾步工業(yè)相機(jī) SDK 的 C Demo 源碼包最容易被當(dāng)成“編譯一下就能出圖”的樣例。實(shí)際在制造現(xiàn)場(chǎng)的軟件/插件式 C 集成里它更像一張接線圖設(shè)備枚舉、打開(kāi)句柄、配置曝光增益、注冊(cè)回調(diào)、落盤取圖每一步都對(duì)應(yīng)產(chǎn)線調(diào)試中的一個(gè)卡點(diǎn)。你拿到這份源碼包真正值錢的地方不是幾行調(diào)用而是它把這些步驟按最小閉環(huán)串了起來(lái)讓你先跑通一條鏈路再替換成自己的業(yè)務(wù)插件。這份資源適合三類人剛接觸工業(yè)相機(jī) SDK、需要從 C 側(cè)把相機(jī)接進(jìn)制造軟件的人手上已有 SDK 頭文件和動(dòng)態(tài)庫(kù)、但不想從零寫初始化流程的人以及需要把采集功能做成獨(dú)立模塊或插件的熟手。先跑枚舉再跑取流最后再談參數(shù)和落盤順序別亂。2. 拆開(kāi) Demo 工程從設(shè)備枚舉到取流回調(diào)的最小閉環(huán)拿到源碼包后我一般不會(huì)先改業(yè)務(wù)代碼而是先確認(rèn)工程依賴、運(yùn)行目錄和 SDK 調(diào)用順序。工業(yè)相機(jī) Demo 的翻車點(diǎn)往往不在算法而在“編譯過(guò)了、運(yùn)行時(shí)找不到庫(kù)”“枚舉不到設(shè)備”“回調(diào)一進(jìn)來(lái)就卡住”這些工程細(xì)節(jié)。第 2 章先把最小閉環(huán)拆開(kāi)依賴怎么擺、設(shè)備怎么枚舉、句柄怎么打開(kāi)、回調(diào)怎么注冊(cè)。制造現(xiàn)場(chǎng)的軟件/插件 c 集成尤其吃這一套因?yàn)樽罱K交付的不是一個(gè)控制臺(tái)程序而是一個(gè)能被主程序加載、能反復(fù)啟停的采集模塊。2.1 工程目錄與依賴關(guān)系頭文件、動(dòng)態(tài)庫(kù)、運(yùn)行目錄怎么擺Demo 源碼包里的 C 工程通常圍繞三類東西轉(zhuǎn)SDK 頭文件、鏈接用的庫(kù)文件、運(yùn)行時(shí)動(dòng)態(tài)庫(kù)。頭文件決定你能不能編譯庫(kù)文件決定鏈接能不能過(guò)運(yùn)行時(shí)動(dòng)態(tài)庫(kù)決定程序啟動(dòng)時(shí)會(huì)不會(huì)直接退出。很多新手把這三類文件混在一個(gè)目錄里編譯命令寫得很長(zhǎng)換一臺(tái)機(jī)器就重新翻車。我習(xí)慣在工程里固定一個(gè)third_party/vendor_sdk目錄下面再分include、lib、binCMake 只認(rèn)這個(gè)根路徑換 SDK 時(shí)改一個(gè)變量就行。下面這段 CMake 腳本是 Demo 工程里最常見(jiàn)的骨架作用是把 SDK 根目錄、頭文件目錄、鏈接目錄和運(yùn)行時(shí)庫(kù)復(fù)制動(dòng)作固定下來(lái)。代碼里的vendor_camera是示意庫(kù)名實(shí)際換成你手上 SDK 的庫(kù)名VendorCam_*這類接口名也是通用寫法落到項(xiàng)目里按 SDK 頭文件替換。cmake_minimum_required(VERSION 3.16) project(camera_sdk_cpp_demo LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # SDK根目錄頭文件、庫(kù)、運(yùn)行庫(kù)都從這里取 set(SDK_ROOT ${CMAKE_SOURCE_DIR}/third_party/vendor_sdk CACHE PATH 工業(yè)相機(jī)SDK根目錄) add_executable(camera_sdk_cpp_demo src/main.cpp src/frame_sink.cpp ) target_include_directories(camera_sdk_cpp_demo PRIVATE ${SDK_ROOT}/include ) target_link_directories(camera_sdk_cpp_demo PRIVATE ${SDK_ROOT}/lib ) target_link_libraries(camera_sdk_cpp_demo PRIVATE vendor_camera ) # Windows下把運(yùn)行庫(kù)復(fù)制到exe旁邊避免啟動(dòng)時(shí)報(bào)找不到dll if(WIN32) add_custom_command(TARGET camera_sdk_cpp_demo POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${SDK_ROOT}/bin $TARGET_FILE_DIR:camera_sdk_cpp_demo COMMENT 復(fù)制SDK運(yùn)行庫(kù)到輸出目錄 ) else() # Linux下先給構(gòu)建目錄一個(gè)rpath方便本機(jī)調(diào)試 set_target_properties(camera_sdk_cpp_demo PROPERTIES BUILD_RPATH ${SDK_ROOT}/lib INSTALL_RPATH $ORIGIN/../lib ) endif()這段腳本的邏輯很直白SDK_ROOT是唯一入口頭文件目錄和庫(kù)目錄都從它派生target_link_libraries負(fù)責(zé)編譯期鏈接Windows 的POST_BUILD負(fù)責(zé)把動(dòng)態(tài)庫(kù)復(fù)制到可執(zhí)行文件旁邊Linux 的BUILD_RPATH讓程序在構(gòu)建目錄里先跑起來(lái)。參數(shù)上CMAKE_CXX_STANDARD 17不是硬性要求但 Demo 里一旦用到std::filesystem、std::thread、std::atomic17 更省心。SDK_ROOT用CACHE PATH是為了后續(xù)在 IDE 或命令行里覆蓋不要把絕對(duì)路徑寫死在源碼里。目錄/文件作用常見(jiàn)錯(cuò)誤third_party/vendor_sdk/includeSDK 頭文件頭文件層級(jí)多一層include 路徑寫錯(cuò)third_party/vendor_sdk/lib鏈接庫(kù)只放了運(yùn)行庫(kù)沒(méi)有導(dǎo)入庫(kù)third_party/vendor_sdk/bin運(yùn)行時(shí)動(dòng)態(tài)庫(kù)編譯通過(guò)啟動(dòng)時(shí)報(bào)找不到庫(kù)src/main.cpp初始化、枚舉、啟動(dòng)采集把業(yè)務(wù)邏輯和 SDK 調(diào)用混在一起src/frame_sink.cpp回調(diào)后的隊(duì)列與落盤在回調(diào)里直接寫文件導(dǎo)致丟幀依賴擺好之后先不要急著寫取流。把工程編譯出來(lái)運(yùn)行一個(gè)只做初始化和釋放的空程序確認(rèn)動(dòng)態(tài)庫(kù)能加載、SDK 能初始化。這個(gè)動(dòng)作看起來(lái)慢但能省掉后面一半的排查時(shí)間。我見(jiàn)過(guò)太多人一上來(lái)就調(diào)取流最后發(fā)現(xiàn)是運(yùn)行目錄少了動(dòng)態(tài)庫(kù)日志里只有一句“初始化失敗”白查半天。2.2 初始化與設(shè)備枚舉為什么先跑通枚舉再碰取流設(shè)備枚舉是整條鏈路里最值得先跑通的一步。枚舉成功說(shuō)明 SDK 初始化、網(wǎng)絡(luò)發(fā)現(xiàn)、權(quán)限、運(yùn)行庫(kù)加載這幾件事至少通了枚舉失敗則說(shuō)明問(wèn)題還在入口沒(méi)必要去調(diào)曝光和回調(diào)。工業(yè)相機(jī)常見(jiàn)的發(fā)現(xiàn)方式有廣播發(fā)現(xiàn)、固定 IP 直連、串口或 USB 枚舉不同 SDK 的接口名不一樣但邏輯差不多初始化 SDK拿設(shè)備列表打印序列號(hào)、型號(hào)、IP 或接口類型最后釋放資源。下面這段 C 代碼用通用接口名示意枚舉流程。實(shí)際項(xiàng)目里把VendorCam_Init、VendorCam_EnumDevices替換成 SDK 頭文件里的同義函數(shù)即可。代碼重點(diǎn)不在 API 名字而在“初始化有返回值檢查、枚舉結(jié)果有遍歷、退出前釋放”這三件事。#include iostream #include vector #include vendor_camera_sdk.h int main() { // 1. 初始化SDK參數(shù)一般傳nullptr或配置結(jié)構(gòu)體指針 if (VendorCam_Init(nullptr) ! CAM_OK) { std::cerr SDK初始化失敗先查運(yùn)行庫(kù)和權(quán)限 std::endl; return 1; } // 2. 枚舉設(shè)備結(jié)果放進(jìn)vector std::vectorDeviceInfo devices; int ret VendorCam_EnumDevices(devices); if (ret ! CAM_OK) { std::cerr 設(shè)備枚舉失敗錯(cuò)誤碼 ret std::endl; VendorCam_Release(); return 2; } if (devices.empty()) { std::cerr 沒(méi)有發(fā)現(xiàn)設(shè)備檢查網(wǎng)段、供電和連接 std::endl; VendorCam_Release(); return 3; } // 3. 打印關(guān)鍵字段序列號(hào)用于后續(xù)打開(kāi)設(shè)備 for (const auto dev : devices) { std::cout serial dev.serial model dev.model ip dev.ip interface dev.interface_type std::endl; } // 4. 釋放SDK資源 VendorCam_Release(); return 0; }這段代碼的邏輯分四步初始化、枚舉、打印、釋放。VendorCam_Init(nullptr)里的參數(shù)通常是配置指針傳空表示用默認(rèn)配置如果 SDK 要求指定日志路徑或回調(diào)按頭文件補(bǔ)結(jié)構(gòu)體。VendorCam_EnumDevices(devices)的返回值必須檢查錯(cuò)誤碼要打出來(lái)不要只打印“失敗”兩個(gè)字。dev.serial是后面打開(kāi)設(shè)備的穩(wěn)定標(biāo)識(shí)比 IP 更可靠因?yàn)?IP 可能被改序列號(hào)一般不變。VendorCam_Release()放在每個(gè)失敗分支和正常分支里避免 SDK 內(nèi)部資源沒(méi)釋放第二次運(yùn)行枚舉不到設(shè)備。枚舉跑通后再確認(rèn)一件事程序運(yùn)行時(shí)的工作目錄在哪里。Windows 下雙擊 exe 和從命令行啟動(dòng)工作目錄可能不同Linux 下從 systemd 或主程序加載插件工作目錄也可能不是你以為的目錄。Demo 里如果有配置文件、日志目錄、保存目錄盡量用可執(zhí)行文件路徑或環(huán)境變量推導(dǎo)不要寫相對(duì)路徑就完事。2.3 打開(kāi)設(shè)備與注冊(cè)回調(diào)取流鏈路的最小參數(shù)集枚舉到設(shè)備后下一步是打開(kāi)句柄、設(shè)置采集模式、注冊(cè)幀回調(diào)、啟動(dòng)取流。這里最容易犯的錯(cuò)是“參數(shù)設(shè)太多”。第一次跑通取流只需要最小參數(shù)集觸發(fā)模式設(shè)為連續(xù)采集或關(guān)閉觸發(fā)、曝光時(shí)間給一個(gè)中間值、增益先歸零、像素格式用 Mono8 或 BayerRG8、回調(diào)里只做深拷貝。等圖像能穩(wěn)定出來(lái)再去調(diào) ROI、伽馬、白平衡這些參數(shù)。下面這段代碼把打開(kāi)設(shè)備、設(shè)置參數(shù)、注冊(cè)回調(diào)、啟動(dòng)取流串起來(lái)。Grabber類只是示意實(shí)際工程里可以拆成CameraSession和FrameSink兩個(gè)類?;卣{(diào)函數(shù)里不要做耗時(shí)操作先入隊(duì)后面用工作線程落盤。#include atomic #include cstdint #include iostream #include vendor_camera_sdk.h class Grabber { public: bool Start(const std::string serial) { // 1. 按序列號(hào)打開(kāi)設(shè)備 if (VendorCam_OpenBySerial(serial.c_str(), handle_) ! CAM_OK) { std::cerr 打開(kāi)設(shè)備失敗 serial std::endl; return false; } // 2. 最小參數(shù)集連續(xù)采集、固定曝光、增益歸零 VendorCam_SetEnum(handle_, TriggerMode, 0); VendorCam_SetEnum(handle_, AcquisitionMode, 2); VendorCam_SetFloat(handle_, ExposureTime, exposure_us_); VendorCam_SetFloat(handle_, Gain, gain_db_); VendorCam_SetEnumStr(handle_, PixelFormat, Mono8); // 3. 注冊(cè)回調(diào)user指針把this傳進(jìn)去 if (VendorCam_RegisterFrameCallback(handle_, Grabber::OnFrame, this) ! CAM_OK) { std::cerr 注冊(cè)回調(diào)失敗 std::endl; VendorCam_Close(handle_); handle_ nullptr; return false; } // 4. 啟動(dòng)取流 if (VendorCam_StartGrabbing(handle_) ! CAM_OK) { std::cerr 啟動(dòng)取流失敗 std::endl; VendorCam_Close(handle_); handle_ nullptr; return false; } return true; } void Stop() { if (handle_ ! nullptr) { VendorCam_StopGrabbing(handle_); VendorCam_Close(handle_); handle_ nullptr; } } private: static void OnFrame(FrameInfo* frame, void* user) { auto* self static_castGrabber*(user); // 回調(diào)里只做拷貝或入隊(duì)不在這里寫文件 self-Enqueue(frame); } void Enqueue(FrameInfo* frame) { // 省略深拷貝到有界隊(duì)列具體實(shí)現(xiàn)見(jiàn)第4章 (void)frame; } CameraHandle handle_{nullptr}; double exposure_us_{8000.0}; double gain_db_{0.0}; }; int main() { Grabber grabber; if (!grabber.Start(替換成枚舉到的序列號(hào))) { return 1; } std::this_thread::sleep_for(std::chrono::seconds(5)); grabber.Stop(); return 0; }這段代碼的關(guān)鍵參數(shù)有四個(gè)TriggerMode0表示關(guān)閉觸發(fā)或連續(xù)采集具體枚舉值看 SDK 頭文件AcquisitionMode2通常表示連續(xù)采集ExposureTime單位多為微秒8000 微秒是 8 毫秒適合室內(nèi)中等亮度Gain單位多為 dB先歸零避免噪聲被放大。VendorCam_RegisterFrameCallback的第三個(gè)參數(shù)是用戶指針回調(diào)里再轉(zhuǎn)回Grabber*這是 C 對(duì)接 C 風(fēng)格 SDK 的常見(jiàn)寫法。StartGrabbing之后不要立刻Stop至少給幾秒讓回調(diào)進(jìn)來(lái)確認(rèn)有幀再退出。取流鏈路跑通后先看三件事回調(diào)有沒(méi)有進(jìn)來(lái)、幀寬高和像素格式對(duì)不對(duì)、停止取流后句柄有沒(méi)有關(guān)?;卣{(diào)沒(méi)進(jìn)來(lái)優(yōu)先查觸發(fā)模式和取流命令幀寬高不對(duì)查 ROI 和像素格式停止后再次啟動(dòng)失敗查StopGrabbing和Close是否成對(duì)。第 2 章的目標(biāo)不是把 Demo 改成產(chǎn)品而是讓你確認(rèn)這條最小閉環(huán)在你機(jī)器上真的能走通。3. 曝光、增益與像素格式Demo 里最容易被忽略的參數(shù)配置工業(yè)相機(jī) Demo 能出圖不代表圖像能用。制造現(xiàn)場(chǎng)常見(jiàn)的“圖像偏暗、過(guò)曝、顏色不對(duì)、邊緣發(fā)糊”很多時(shí)候不是相機(jī)壞了而是曝光、增益、像素格式和 ROI 沒(méi)配對(duì)。第 3 章把參數(shù)配置拆成兩塊曝光增益的聯(lián)動(dòng)策略以及像素格式與 ROI 的選擇。這里的思路是先讓圖像亮度落在可用區(qū)間再讓數(shù)據(jù)格式匹配后續(xù)算法或插件。3.1 曝光時(shí)間與增益的聯(lián)動(dòng)先鎖曝光再調(diào)增益曝光時(shí)間和增益都會(huì)影響亮度但兩者的代價(jià)不一樣。曝光時(shí)間拉長(zhǎng)進(jìn)光量增加圖像亮度上來(lái)但運(yùn)動(dòng)物體容易拖影增益放大的是電信號(hào)亮度也能上來(lái)但噪聲會(huì)跟著放大暗部尤其明顯。我一般先把增益歸零調(diào)曝光到目標(biāo)亮度再在曝光已經(jīng)接近運(yùn)動(dòng)拖影上限時(shí)才少量加增益。這個(gè)順序在制造現(xiàn)場(chǎng)的軟件/插件 c 集成里很重要因?yàn)椴寮竺嫱拥氖菣z測(cè)算法噪聲放大比亮度不足更難處理。下面這張表是 Demo 調(diào)參時(shí)常用的起點(diǎn)不是萬(wàn)能值。實(shí)際項(xiàng)目里按光源、鏡頭光圈、被拍物反光程度再改。參數(shù)常見(jiàn)單位起步建議調(diào)整方向注意點(diǎn)曝光時(shí)間微秒500010000暗了先加曝光運(yùn)動(dòng)場(chǎng)景注意拖影增益dB0曝光到上限再加增益越高噪聲越明顯觸發(fā)模式枚舉連續(xù)采集產(chǎn)線節(jié)拍明確后改硬觸發(fā)觸發(fā)源不配對(duì)會(huì)沒(méi)圖像素格式枚舉Mono8 或 BayerRG8按算法輸入選Bayer 要轉(zhuǎn) RGBROI像素先全幅確認(rèn)視野后再裁偏移和寬度要對(duì)齊參數(shù)設(shè)置代碼不要散落在業(yè)務(wù)邏輯里我習(xí)慣收成一個(gè)CameraParams結(jié)構(gòu)體統(tǒng)一校驗(yàn)、統(tǒng)一應(yīng)用。下面這段代碼示意“停流、設(shè)參數(shù)、再啟流”的順序。部分 SDK 允許取流中改曝光但像素格式和 ROI 往往要求停流統(tǒng)一按停流處理更穩(wěn)。#include string #include vendor_camera_sdk.h struct CameraParams { double exposure_us{8000.0}; double gain_db{0.0}; std::string pixel_format{Mono8}; int roi_x{0}; int roi_y{0}; int roi_w{1280}; int roi_h{1024}; }; bool ApplyParams(CameraHandle h, const CameraParams p) { // 先停流避免部分SDK在取流中拒絕修改 VendorCam_StopGrabbing(h); if (VendorCam_SetFloat(h, ExposureTime, p.exposure_us) ! CAM_OK) { return false; } if (VendorCam_SetFloat(h, Gain, p.gain_db) ! CAM_OK) { return false; } if (VendorCam_SetEnumStr(h, PixelFormat, p.pixel_format.c_str()) ! CAM_OK) { return false; } if (VendorCam_SetInt(h, OffsetX, p.roi_x) ! CAM_OK) { return false; } if (VendorCam_SetInt(h, OffsetY, p.roi_y) ! CAM_OK) { return false; } if (VendorCam_SetInt(h, Width, p.roi_w) ! CAM_OK) { return false; } if (VendorCam_SetInt(h, Height, p.roi_h) ! CAM_OK) { return false; } return VendorCam_StartGrabbing(h) CAM_OK; }這段代碼的邏輯是先把采集停下來(lái)再逐項(xiàng)設(shè)置最后重新啟動(dòng)。ExposureTime和Gain用浮點(diǎn)接口因?yàn)楹芏?SDK 支持小數(shù)PixelFormat用字符串枚舉方便在配置文件里改OffsetX/OffsetY/Width/Height用整數(shù)接口單位是像素。每次設(shè)置都檢查返回值失敗就直接返回不要繼續(xù)設(shè)后面的參數(shù)否則日志里會(huì)出現(xiàn)“最后一個(gè)參數(shù)失敗”實(shí)際根因在第一個(gè)。停流再啟流會(huì)帶來(lái)短暫斷流產(chǎn)線集成時(shí)要把這段時(shí)間算進(jìn)節(jié)拍或者在初始化階段一次設(shè)好運(yùn)行中不改。曝光調(diào)好后再看直方圖或灰度均值。Demo 里如果沒(méi)有圖像分析工具可以先把圖存成 PGM 或 BMP用常見(jiàn)看圖工具看亮度分布。不要只憑屏幕上的顯示判斷顯示端可能做了自動(dòng)拉伸。制造現(xiàn)場(chǎng)的光源如果可調(diào)優(yōu)先調(diào)光源再動(dòng)曝光和增益圖像質(zhì)量會(huì)更干凈。3.2 像素格式與 ROIMono8、BayerRG8、RGB8 怎么選像素格式選錯(cuò)后面算法全白做。Mono8 是單通道 8 位灰度數(shù)據(jù)量小、處理簡(jiǎn)單適合尺寸測(cè)量、定位、條碼識(shí)別這類不依賴顏色的場(chǎng)景。BayerRG8 是彩色相機(jī)常見(jiàn)的原始格式每個(gè)像素只有一個(gè)顏色分量需要做去馬賽克才變成 RGB如果直接把 Bayer 數(shù)據(jù)當(dāng)灰度用圖像會(huì)有網(wǎng)格感。RGB8 是三通道 8 位數(shù)據(jù)量大但算法端不用再做顏色轉(zhuǎn)換。選型時(shí)先看算法輸入再看帶寬不要為了“彩色好看”把產(chǎn)線帶寬吃滿。ROI 也不是越小越好。ROI 縮小能提高幀率、減少數(shù)據(jù)量但偏移和寬高要滿足相機(jī)的最小步進(jìn)和對(duì)齊要求。部分相機(jī)的 ROI 寬度要求是 8 的倍數(shù)偏移也有步進(jìn)設(shè)成奇數(shù)可能報(bào)參數(shù)錯(cuò)誤。Demo 里最好在應(yīng)用參數(shù)前做一次校驗(yàn)寬高大于 0、偏移加寬高不超過(guò)傳感器范圍、寬高按步進(jìn)對(duì)齊。bool ValidateRoi(const CameraParams p, int sensor_w, int sensor_h, int step) { if (p.roi_w 0 || p.roi_h 0) { return false; } if (p.roi_x 0 || p.roi_y 0) { return false; } if (p.roi_x p.roi_w sensor_w || p.roi_y p.roi_h sensor_h) { return false; } if (p.roi_w % step ! 0 || p.roi_h % step ! 0) { return false; } if (p.roi_x % step ! 0 || p.roi_y % step ! 0) { return false; } return true; }這段校驗(yàn)函數(shù)的參數(shù)含義sensor_w/sensor_h是相機(jī)傳感器全幅寬高step是 SDK 要求的對(duì)齊步進(jìn)常見(jiàn)是 2、4、8 或 16具體看手冊(cè)。先查正負(fù)和邊界再查對(duì)齊順序不要反。roi_x roi_w不能超過(guò)傳感器寬度否則部分 SDK 會(huì)直接返回參數(shù)錯(cuò)誤部分 SDK 會(huì)靜默裁切后者更麻煩。Demo 里把校驗(yàn)放在ApplyParams之前參數(shù)錯(cuò)了在本地就攔住不要等下發(fā)到相機(jī)才報(bào)錯(cuò)。像素格式和 ROI 都確認(rèn)后再檢查幀數(shù)據(jù)里的stride或padding。有些相機(jī)每行末尾會(huì)補(bǔ)齊字節(jié)幀寬乘以像素字節(jié)數(shù)不一定等于行跨度。保存圖像時(shí)如果按width * height * channels直接寫可能出現(xiàn)圖像錯(cuò)位。Demo 里如果有FrameInfo結(jié)構(gòu)體先看它有沒(méi)有stride字段沒(méi)有的話按 SDK 文檔確認(rèn)行對(duì)齊規(guī)則再?zèng)Q定是否逐行拷貝。4. 圖像回調(diào)與線程安全把 Demo 改成能落盤的采集程序Demo 出圖之后下一步通常是落盤或送算法。很多樣例代碼在回調(diào)里直接imwrite或直接調(diào)用檢測(cè)函數(shù)幀率一高就丟幀甚至把取流線程卡死。工業(yè)相機(jī)回調(diào)運(yùn)行在 SDK 的采集線程里回調(diào)里做耗時(shí)操作等于讓相機(jī)等你。第 4 章把回調(diào)改成“只入隊(duì)”用獨(dú)立工作線程做保存再補(bǔ)上文件命名和半截文件處理。這個(gè)模型不復(fù)雜但能讓 Demo 從“能看”變成“能連續(xù)采集”。4.1 回調(diào)里只做拷貝隊(duì)列 工作線程的落盤模型回調(diào)里最安全的動(dòng)作是深拷貝一幀到有界隊(duì)列然后立刻返回。隊(duì)列要有上限滿了就丟幀并計(jì)數(shù)不要無(wú)限增長(zhǎng)。無(wú)限隊(duì)列在短時(shí)間卡頓時(shí)看起來(lái)沒(méi)事時(shí)間一長(zhǎng)內(nèi)存吃滿程序直接崩日志里還看不出原因。工作線程從隊(duì)列取幀、保存、釋放采集線程和保存線程通過(guò)互斥量和條件變量解耦。下面這段代碼是簡(jiǎn)化版重點(diǎn)看Push的丟幀策略和Loop的退出條件。#include atomic #include condition_variable #include cstdint #include deque #include mutex #include thread #include vector struct Frame { std::string serial; std::string pixel_format; int width{0}; int height{0}; std::vectoruint8_t data; }; class FrameSink { public: explicit FrameSink(size_t max_frames 8) : max_frames_(max_frames), running_(true), worker_(FrameSink::Loop, this) {} ~FrameSink() { running_ false; cv_.notify_all(); if (worker_.joinable()) { worker_.join(); } } bool Push(Frame frame) { std::lock_guardstd::mutex lock(mu_); if (queue_.size() max_frames_) { dropped_.fetch_add(1, std::memory_order_relaxed); return false; } queue_.push_back(std::move(frame)); cv_.notify_one(); return true; } uint64_t Dropped() const { return dropped_.load(std::memory_order_relaxed); } private: void Loop() { while (running_) { Frame frame; { std::unique_lockstd::mutex lock(mu_); cv_.wait(lock, [this] { return !running_ || !queue_.empty(); }); if (!running_ queue_.empty()) { break; } frame std::move(queue_.front()); queue_.pop_front(); } Save(frame); } } void Save(const Frame frame); size_t max_frames_; std::atomicbool running_; std::mutex mu_; std::condition_variable cv_; std::dequeFrame queue_; std::thread worker_; std::atomicuint64_t dropped_{0}; };這段代碼的參數(shù)和邏輯max_frames8是隊(duì)列上限按幀大小和內(nèi)存預(yù)算調(diào)1080p 灰度幀一幀約 1.3MB8 幀不算大running_控制工作線程退出cv_.wait的條件是“停止或隊(duì)列非空”避免退出時(shí)卡死Push里隊(duì)列滿直接丟幀并累加dropped_不要阻塞采集線程。Frame里的data是深拷貝后的像素?cái)?shù)據(jù)回調(diào)里構(gòu)造Frame時(shí)要把stride處理掉按有效像素逐行拷貝避免把行尾補(bǔ)齊字節(jié)也存進(jìn)去。Save在工作線程里執(zhí)行這里只聲明具體實(shí)現(xiàn)看下一節(jié)?;卣{(diào)對(duì)接時(shí)OnFrame里不要直接構(gòu)造大對(duì)象再拷貝兩次可以復(fù)用緩沖池。常見(jiàn)做法是維護(hù)一個(gè)固定大小的Frame池回調(diào)取一個(gè)空閑幀填數(shù)據(jù)Push到隊(duì)列工作線程保存完再歸還。這樣能減少頻繁分配釋放。Demo 階段可以先不做池先把隊(duì)列模型跑通再按幀率和內(nèi)存壓力決定要不要加。4.2 保存圖像與命名避免覆蓋和半截文件保存圖像有兩個(gè)細(xì)節(jié)最容易出問(wèn)題文件名重復(fù)導(dǎo)致覆蓋程序中途退出留下半截文件。文件名我一般用“序列號(hào) 微秒時(shí)間戳 格式后綴”序列號(hào)區(qū)分相機(jī)時(shí)間戳區(qū)分幀。半截文件用“先寫臨時(shí)文件寫完再重命名”的方式處理重命名在同一文件系統(tǒng)內(nèi)通常是原子操作至少不會(huì)讓下游算法讀到寫了一半的圖。#include chrono #include filesystem #include fstream #include sstream #include string void SaveFrame(const Frame frame, const std::string dir) { std::filesystem::create_directories(dir); auto now std::chrono::system_clock::now(); auto us std::chrono::duration_caststd::chrono::microseconds( now.time_since_epoch()) .count(); std::ostringstream name; name dir /cam_ frame.serial _ us (frame.pixel_format Mono8 ? .pgm : .bmp); std::string final_path name.str(); std::string tmp_path final_path .part; std::ofstream out(tmp_path, std::ios::binary); if (!out) { return; } // 這里按Mono8示意實(shí)際按像素格式寫文件頭 out.write(reinterpret_castconst char*(frame.data.data()), static_caststd::streamsize(frame.data.size())); out.close(); std::error_code ec; std::filesystem::rename(tmp_path, final_path, ec); if (ec) { std::filesystem::remove(tmp_path, ec); } }這段代碼的邏輯先確保目錄存在再用微秒時(shí)間戳拼文件名先寫.part關(guān)閉后重命名。frame.serial用來(lái)區(qū)分多相機(jī)避免兩臺(tái)相機(jī)同一微秒撞名pixel_format決定后綴Mono8 可以寫 PGM彩色可以寫 BMP 或自定義頭。注意這里只寫了像素?cái)?shù)據(jù)PGM 還需要文件頭實(shí)際項(xiàng)目里按格式補(bǔ)P5頭或直接接圖像庫(kù)。std::filesystem::rename帶error_code失敗時(shí)刪臨時(shí)文件不拋異常打斷工作線程。create_directories每次保存都調(diào)用有開(kāi)銷可以在初始化時(shí)調(diào)一次保存函數(shù)里只做寫入。落盤目錄不要放在系統(tǒng)盤根目錄或權(quán)限受限目錄。制造現(xiàn)場(chǎng)常見(jiàn)做法是按日期分目錄例如data/2025-01-01/cam_xxx避免單目錄文件過(guò)多。保存線程如果持續(xù)跟不上dropped_會(huì)漲這時(shí)候先看磁盤寫入速度再看幀大小和隊(duì)列上限。不要一上來(lái)就加大隊(duì)列隊(duì)列只是緩沖不是解決磁盤瓶頸的辦法。5. 避坑排查工業(yè)相機(jī) SDK C Demo 最常見(jiàn)的五類翻車現(xiàn)場(chǎng)工業(yè)相機(jī) Demo 的坑很集中枚舉、取流、動(dòng)態(tài)庫(kù)、圖像參數(shù)、多相機(jī)。每一類都有典型現(xiàn)象但根因往往不在表面。第 5 章按“現(xiàn)象 → 原因 → 解決”拆五條都是我見(jiàn)過(guò)或自己踩過(guò)的翻車現(xiàn)場(chǎng)。排查時(shí)先按順序確認(rèn)最小閉環(huán)不要同時(shí)改五個(gè)參數(shù)否則你都不知道是哪一步修好的。5.1 枚舉不到設(shè)備先查網(wǎng)段、權(quán)限和防火墻現(xiàn)象程序啟動(dòng)后設(shè)備列表為空或者只顯示一部分相機(jī)SDK 初始化返回成功但枚舉接口返回 0 個(gè)設(shè)備。原因通常有三類相機(jī)和主機(jī)不在同一網(wǎng)段廣播發(fā)現(xiàn)包過(guò)不去Linux 下當(dāng)前用戶沒(méi)有訪問(wèn)網(wǎng)絡(luò)設(shè)備或 USB 設(shè)備的權(quán)限Windows 防火墻或安全軟件攔了發(fā)現(xiàn)報(bào)文。解決順序是先看相機(jī)指示燈和網(wǎng)口燈再用系統(tǒng)命令確認(rèn)主機(jī)網(wǎng)卡地址確保和相機(jī)在同一網(wǎng)段Linux 下用ip addr看網(wǎng)卡用ping測(cè)直連相機(jī)權(quán)限問(wèn)題檢查 udev 規(guī)則或把當(dāng)前用戶加入相應(yīng)用戶組改完重新登錄。防火墻先臨時(shí)關(guān)掉做對(duì)照確認(rèn)是它再按端口放行不要長(zhǎng)期關(guān)閉。5.2 取流超時(shí)與丟幀觸發(fā)源、包大小、回調(diào)阻塞現(xiàn)象枚舉正常打開(kāi)設(shè)備也成功但StartGrabbing后回調(diào)不進(jìn)幀或者進(jìn)幾幀就超時(shí)日志里出現(xiàn)取流超時(shí)、丟幀計(jì)數(shù)上漲。原因常見(jiàn)的是觸發(fā)模式?jīng)]關(guān)相機(jī)在等硬觸發(fā)網(wǎng)絡(luò)相機(jī)包大小設(shè)得過(guò)大或過(guò)小導(dǎo)致丟包回調(diào)里做了保存或算法采集線程被拖住。解決時(shí)先把觸發(fā)模式設(shè)為連續(xù)采集確認(rèn)自由運(yùn)行能出圖再按 SDK 建議調(diào)包大小和接收緩沖網(wǎng)絡(luò)相機(jī)先跑小分辨率排除帶寬最后把回調(diào)改成只入隊(duì)保存放到工作線程。取流超時(shí)不要只加超時(shí)時(shí)間先確認(rèn)幀有沒(méi)有到。5.3 編譯通過(guò)但運(yùn)行找不到動(dòng)態(tài)庫(kù)運(yùn)行目錄與 RPATH現(xiàn)象編譯鏈接都過(guò)雙擊 exe 或從主程序加載插件時(shí)直接退出提示找不到某個(gè)動(dòng)態(tài)庫(kù)Linux 下報(bào)error while loading shared libraries。原因通常是運(yùn)行庫(kù)沒(méi)復(fù)制到可執(zhí)行文件旁邊或者 Linux 的RPATH沒(méi)設(shè)對(duì)程序去系統(tǒng)目錄找?guī)?。解決時(shí) Windows 用 CMake 的POST_BUILD把bin目錄復(fù)制到輸出目錄或者把 SDK 的bin加進(jìn)PATH做臨時(shí)驗(yàn)證Linux 用ldd看缺哪個(gè)庫(kù)構(gòu)建目錄設(shè)BUILD_RPATH安裝目錄設(shè)$ORIGIN/../lib。插件場(chǎng)景還要確認(rèn)主程序加載插件時(shí)的工作目錄和環(huán)境變量不要假設(shè)和獨(dú)立運(yùn)行一樣。5.4 圖像偏暗、過(guò)曝或顏色異常曝光、增益、像素格式逐項(xiàng)對(duì)照現(xiàn)象能出圖但圖像整體偏暗、局部過(guò)曝或者彩色圖顏色發(fā)綠、發(fā)紫邊緣有網(wǎng)格。原因可能是曝光時(shí)間太短、增益為負(fù)或?yàn)榱愕庠床蛔阋部赡苁窍袼馗袷竭x錯(cuò)把 Bayer 數(shù)據(jù)當(dāng) RGB 用或者把 RGB 當(dāng)灰度讀。解決時(shí)先把增益歸零調(diào)曝光到灰度均值落在中間區(qū)域再看像素格式是否和保存、顯示鏈路一致BayerRG8 要做去馬賽克Mono8 不要按三通道讀最后檢查 ROI 偏移和行跨度錯(cuò)位也會(huì)讓圖像看起來(lái)像顏色異常。每次只改一個(gè)參數(shù)改完存一幀對(duì)照。5.5 多相機(jī)同時(shí)取流句柄隔離與帶寬核算現(xiàn)象單相機(jī)正常接第二臺(tái)后開(kāi)始丟幀、超時(shí)或者兩臺(tái)相機(jī)圖像串了。原因常見(jiàn)的是句柄沒(méi)有按相機(jī)隔離回調(diào)里用了共享緩沖網(wǎng)絡(luò)帶寬或 USB 帶寬不夠兩臺(tái)相機(jī)同時(shí)全幅高幀率把鏈路打滿保存線程共用隊(duì)列一臺(tái)相機(jī)拖慢另一臺(tái)。解決時(shí)每臺(tái)相機(jī)一個(gè)CameraSession和一個(gè)FrameSink回調(diào)的user指針指向各自的會(huì)話對(duì)象先降分辨率或幀率做帶寬核算確認(rèn)單臺(tái)占用再乘相機(jī)數(shù)保存隊(duì)列按相機(jī)分開(kāi)日志里帶序列號(hào)。多相機(jī)不要共用全局句柄也不要在回調(diào)里查全局 map鎖競(jìng)爭(zhēng)會(huì)讓丟幀更明顯。排查順序看什么快速判斷1SDK 初始化返回值失敗先查運(yùn)行庫(kù)和權(quán)限2設(shè)備枚舉數(shù)量為 0 查網(wǎng)段、供電、防火墻3打開(kāi)設(shè)備返回值失敗查序列號(hào)是否選錯(cuò)、設(shè)備是否被占用4取流回調(diào)計(jì)數(shù)不進(jìn)幀查觸發(fā)模式和取流命令5丟幀計(jì)數(shù)和隊(duì)列上限上漲查回調(diào)耗時(shí)、磁盤、帶寬6保存文件完整性半截文件查臨時(shí)文件重命名和退出流程這張表建議貼在調(diào)試記錄里每次接新相機(jī)按順序走一遍。不要跳步也不要在枚舉沒(méi)通的時(shí)候去調(diào)曝光。血淚經(jīng)驗(yàn)是越早把問(wèn)題鎖在最小閉環(huán)里后面改業(yè)務(wù)代碼越輕松。6. 把 Demo 演進(jìn)成產(chǎn)線插件連續(xù)采集驗(yàn)證與三個(gè)硬指標(biāo)Demo 跑通后最后一步是把它收成一個(gè)能被主程序加載的采集插件。我一般不再往main.cpp里堆邏輯而是把初始化、枚舉、打開(kāi)、取流、停止封裝成CameraSource類對(duì)外只暴露Start(serial)、Stop()、PushFrame()三個(gè)動(dòng)作。插件化之后主程序不關(guān)心 SDK 細(xì)節(jié)只關(guān)心幀有沒(méi)有進(jìn)來(lái)、丟沒(méi)丟、保存是否完整。驗(yàn)證時(shí)看三個(gè)硬指標(biāo)連續(xù)采集十分鐘的丟幀率、幀時(shí)間戳間隔是否均勻、落盤文件是否能被下游完整讀取。丟幀率用dropped_除以總幀數(shù)時(shí)間戳間隔看最小值和最大值文件完整性隨機(jī)抽檢尾部字節(jié)。下面這張表是我常用的驗(yàn)收記錄格式數(shù)值按項(xiàng)目定但三項(xiàng)都要有。指標(biāo)采集方式判斷標(biāo)準(zhǔn)異常時(shí)先看丟幀率連續(xù)采集 10 分鐘低于項(xiàng)目允許閾值回調(diào)耗時(shí)、隊(duì)列上限、磁盤時(shí)間戳間隔記錄每幀到達(dá)時(shí)間最大值不超過(guò)節(jié)拍容忍范圍觸發(fā)模式、網(wǎng)絡(luò)抖動(dòng)、曝光過(guò)長(zhǎng)落盤完整性隨機(jī)抽檢文件尾部文件大小和頭信息一致臨時(shí)文件重命名、磁盤空間我自己的習(xí)慣是每接一個(gè)新 SDK先跑枚舉再跑回調(diào)落盤最后才接業(yè)務(wù)算法三步不亂序。從那以后我每次換機(jī)器、換相機(jī)、換主程序都強(qiáng)制走一遍這張驗(yàn)收表不憑“昨天還能跑”做判斷。源碼包在項(xiàng)目歸檔里按camera_sdk_cpp_demo目錄取用先把最小閉環(huán)跑通再按你的產(chǎn)線節(jié)拍改參數(shù)。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国外亚洲成AV人片在线观看| 4399成人黄A片| 久久色五月| 99热9| 影音先锋美国A| 五月天激情国产综合婷婷| 五月停停色色丁香| 日韩高清久久| 久草婷妨| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 欧美99热| 五月丁香啪啪啪综合网| 天天艹| 亚洲综合色色| 五月丁香婷婷中文| 五月婷啪啪| 这里只有国产精品在线| 久久五月天合网| 成人va在线| 婷婷欧美| 久色| 99热久| 性色五月天| 99热这只有| 国产一区18| 男男野外做爰全过程69| 大地9中文在线观看免费高清| 五月丁香成人视频| 九九这里都是精品| av狠狠操| 99色热| 九九久久99| 亚洲操人| 天天日天天干天天爱| 久久中国毛毛片爱久久| 成人短视频免费| 欧美怡红院黄站| 99热在线观看精品| 婷婷五月天激情小说| www,av好吊操| 久久久久er热| 午夜婷婷久久| 99热精品在线| 五月丁香六月婷| 亚洲av骚货| 色五月激情| 五月天精品视频| 青青草婷婷综合五月| 婷婷色婷婷亚洲成人| 九九亚洲无码| 天天日天天添| 日日想日日夜日日操| 激情五月深爱五月| 婷婷六月色情| 丁香六月激情国产| 91人人操人人| 在线观看免费视频| 丁香五月婷婷亚洲天堂| 9有码中文| 五月丁香婷草| 伊人五月婷婷| 99精品免费欧美小视频| 久久婷婷五月天激情四射| 婷婷婷婷色| 五月深爱激情网| wwwC0maV五月花| 亚洲国产精品综合色区| 亚洲婷婷五月| 天天做天天爱| 丁香啪啪中文字幕| 久久久久9| 国产韩日亚洲美州欧亚综合在线| 婷婷六月中文字幕| XX色综合| 天天插天天射| 五月丁香日逼| 久久久久久xxxxx| 丁香五月天色综合| 久久久精品色| 日韩婷婷| 国产AV不卡福利| 超碰在线免费| 婷婷六月情| 婷婷综合在线| 无遮挡国产高潮视频免费观看 | A A色色| 99热这里只有精品在线观看| 丰满人妻一区二区三区| 国产AV不卡福利| 久久网日本| 日韩成人五月天| 久久久五月婷婷| 天天操比比| 任你爽视频| 激情内射人妻1区2区3区| 久久久久9久无码视频| 色婷婷影音| 人人操97| 五月丁香色| 99热99在线| 国产午夜精品一区二区三区四区| 色婷婷香蕉| 色五月婷婷、老熟女| 五月婷婷天天| 岛国AAAV| 午夜九九电影| 日韩操人| 噜噜噜噜噜在线| 九九免费在线视频| 777精品久无码人妻蜜桃| 丁香熟女乱| 欧美日韩AAAAA| 思思精品热在线| 久久婷婷色| 色青青电影色五月| 久久狠色噜噜狠狠狠狠97| 婷婷五月天电影网| 国产女人十八水真多1| 五月天无码| 天天天天色天天天天天干| 啪啪激情网| 久久久久综合激动五月天| 天天爽天天摸天天爱| www.操.com| 激情综合另类| 亚洲五月色| 丁香六月激情| 婷婷色五月激情| 丁香五月天婷婷中文字幕| 国外亚洲成AV人片在线观看| 亚洲精品操一操、噜一噜、摸一摸、爽 | 99热精品在线观看| 婷婷六月丁香开心深深爱| 99re这里| 99久久五月天| 久久精热| 超碰色天堂| 色婷婷五月天综合网| 五月婷丁香| 欧美天堂久久| 九九碰九九爱97超碰| 色色色9 9 9| 五月丁综合在线观看| 久久性视频| 激情五月婷婷她| 久热播这里只有精品| 这里只有精品久久| 人人天堂操| 六月婷婷五月丁香| 激情综合网,五月| 色色热| 91九色丨国产丨爆乳| 99只有精品| 久热re在线视频| 天天夜夜爽| 色婷婷香蕉在线| 婷婷性爱无码视频| 日本成人内射| 丁香五月AV| 久久日九九| 久久婷婷五月免费视频| www.久久爱.com| 久艹大香蕉| 久久新地此| 日本色久| 九九爱这里只有精品| 日韩一级淫乱片一区二区三区| 九月婷婷久久久| 五月丁香色综合| 深爱激情五月天| 色播五月综合网| 91日视频| 情婷婷五月天在线| 久久婷婷桃花五月天| wwwwww.色| 激情婷婷黄色五月| 久久婷婷成人综合色怡春院| 丁香六月天色婷婷| 五月天色色色色色| 可以免费观看的AV| 丁香五月激情无码视频| 操操自拍| 麻豆AV一区二区三区| 我爱va亚洲va52| 91九色 熟| 久热只有精品| 色日本丁香婷婷| 丰满人妻妇伦又伦精品国产| 九九综合| 在线A色| 玖玖伊人网| 在线成人视频免费| 久色五月婷婷综合| 亚洲av综合网| 亚洲综合色婷婷文学| 日本97在线观看| 思思热精品在线| 五月丁香激情四射综合| 丁香五月之久操视频| 99热免费看| 婷婷午夜精品久久久| 夜夜干天天操| 丁香五月天亚洲视频| 大香蕉综合在线| 97在线观视频免费观看| 久机视频这只有精品| www.人人操人人看人人想人人摸 人人人人操,COM | 九九色综合| 久久视频这里99| 91婷婷色五月| 婷婷五月六月| 天天揷综合网| 激情五月天视频| 五月婷婷激情四月| 91操色| www:99热视频| 1024AV视频| 婷婷丁香五月综合| 99热这里只有精品99| 丁香 婷婷五月| 九九热99精品| 色99最新网址| 少妇做爰免费视看片| 噜噜视频| 欧美va在线| 激情五月天综合网站网站网站| 色原狠狠综合| 五月综合激情图片| 亚洲不卡123| 五月婷婷丁香| 丁香婷婷久久| 五月丁香亭亭操逼| 蜜臀99精品| 日日肏天天操| 亚洲精品性色| 五月天色在线| VA婷婷亚洲| 人妻系列久久久久久久久久久| 丁香五月婷婷大香蕉| 九九色婷| 第四色色六月色综合| 国产人妻人伦精品一区二区| 五月婷婷深深爱| 人人摸人人| 丁香五月成人在线| 五月天激情网页| 欧美va亚洲va| 日本猛少妇色XXXXX猛叫| 国产成人高清| 久久大香蕉同僚| 99热这里只| 五月婷婷狠狠干| 天天噜天天爱| 欧美综合在线五月天色婷婷| 五月丁香六月情婷婷久久| 色性综合| 五月丁香婷婷无码A∨| 久久久久激情| 婷婷五月成年人| 51成人| 99riAV国产精品视频| 九热视频免费观看| 综合激情五月婷婷| 五月丁香手机在线| 五月天播播综合| 婷婷五月天成人动漫| 五月丁香六月久久| 激情综合五月.....| 99爱在线| 五月丁香六月情亚洲| 襙逼网| 亚洲、热| 五月婷婷在线视频观看| 五月天丁香综合| 婷婷在线综合| 五月激情综合网| 天天爽天天| 日产精品一线二线三线芒果| 色婷婷成人久久| 无码一级片| 五月丁香综合成人社区| 婷香五月网在线| 欧美va视频不用播放器的va视频网| 激情综合综合综合| 激情深爱五月| 99综合| 操操碰| 91夫妻视频| 久久大大香| 91久久国产综合久久| 99热全是精品| 亚洲成人色五月天| 热99AV网站| 美欧成人视频| 日日影院 | 香蕉久久五月| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 丁香婷婷六月激情综合| 欧美丁香五月97色| 欧美色激情四射| 麻豆精品| www.五月激情红色| 日日噜噜夜夜狠狠久久丁香六月| AⅤ网站在线看| 六月婷婷最新网址| 五月丁香婷婷五月色| 色色五月婷婷丁香| 六月激情网| 激情综合网激情五月俺也去| 先锋五月婷婷丁香草草| 99re鈥哸鈥唙| 午夜精品人妻无码一区二区三区| 日本天堂免费99| 天天天久久久| 国产精品视频| 色婷婷色综合| 婷婷五月天伊人网在线观看视频| 久久草大香蕉| 伊人综合婷婷| 五月天六月婷婷电影| www.婷婷五月天.com| 国产69久久久欧美黑人A片| 天天婷婷综合亚洲亚洲| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 五月婷婷色吧!| 五月丁香综合激情网| 丁香网站| 综合丁香婷婷五月天| 狠狠xx| 久久丁香| 99热最新地址在线| 色婷婷狠狠18禁| 婷婷色色色| 亚洲综合新99视频| 涩综合婷婷| 婷婷久久影院| 丁香五月激情在线| 九九精品9| 五月天婷婷一起草| 26uuu最新地址| 日韩AV中文字幕在线| 人人舔人人色人人高潮| 91精品久久久久久综合五月天| 99久热精品在线| 很操日本7| 久色资源| 天天五月香欧美| 九色91视频| 人人操人人添人人摸97| 伍月婷丁香花全集| 超碰天堂网| 99热精品在线播放观看| 日韩另类| 久久99热免费| 亚洲精品国产A久久久久久| 日韩成人精品中文字幕| 亚洲综合激情五月久久| 91操碰| 日本久久婷婷| 丁香婷婷大香蕉| 中文久久婷婷| 99自拍视频网站| 99网99热| 免费观看亚洲AV片| 99热色精品| 性一交一乱一交A片久久四色| 九九热最新| 好色婷婷| 97中文在线| 五月婷婷六月天| 九九色综合网| 26uuu视频欧美| 狠狠操狠狠操AV| 九月激情网| 成人婷99最新| 六月婷婷俺也去| 天堂成人A片永久免费网站| www.激情在线| 五月激香蕉网| www.天天干| 久久久久久久8| 久久伊人9| 九九99九九99偷拍视频免费看| 蜜臀av粉嫩av懂色av| 五月 成人 婷婷| 丁香激情久久| 日日干综合| 亚洲狠狠丁香婷婷香蕉| 爱草人视频| 91九色熟女| 色五月在线播放| 丁香香五月激情免费视频| 国产精产国品一二三在观看| 亚洲色情网站| 五月激情啪啪| yjzz亚洲国产| 人妻中文在线| 婷婷五月天激情五月天网站| 五月丁香婷草| 婷婷婷狠狠| 久久婷婷综合五月趴| 久久在线大香蕉| 四色99久久| 婷婷五月综合欧美在线播放| 1234操逼网| 婷婷六月久久综合导航| 午夜激情五月| 亚洲区,视频区,视频区免费| 9九九久久精品无码专区| 婷婷大乡焦噜噜| 精品婷婷五| 婷婷性爱五月天丁香网| 天天日天天爽| 狠狠摸狠狠摸| 人人天堂操| 99视频久久久| 97操碰98| 丁香六月啪啪| 色情五月天丁香社区| 亚洲激情电影五月天色婷婷丁香一起草| 日韩AV在线免费| 91viP在线看| 国产在线另类五月婷婷| AV色五月婷婷| 日本一级特黄大片AAAAA级| 色色99| 激情五月天偷拍综合网| 天天操天天日天天爽| 91丨九色丨白浆秘| 91久久精品视频| 可以免费观看的AV| 五月婷婷色影院| 五月天婷婷青青草| 亚洲第一色色色色| 九九综合精品| 99热青青草| 婷婷性爱五月天丁香网| 精品无码久久久久久久久| 96精品久久久久久久久| 色婷婷久久综合中文久久一本| wwxx日本| 无码九九| 秋霞免费三级片| 热久69| 99热在线极品极品| 午夜天堂一区人妻| 综合婷婷| 婷婷六月色| 99色网站| 日韩成人中文字幕| 97人妻碰碰碰久久香蕉| 亚洲人成色A777777在线观看| 99这里只有精彩视频| 五月色情婷婷开心五月天| 99免费偷拍视频| 九九久久偷拍| 97超碰9久热婷婷热| 熟女人妻视频| 日韩乱轮AV| 69精品人人人人| 尔尔AV一区| 色久九| 另类 在线| 五月丁花六月丁香综合| 五月婷综合| www.99热. com这里只有精品| 99热思思在线观看| 亚洲综合干| 亚洲婷婷丁香五月天激情小说| 丁香婷婷六月婷婷六月婷婷六月婷婷| 日日骑夜夜撸| 亚洲俩性性爱图片久久第六页| AV色五月婷婷| 激情婷婷五月天伊人在线观看| 伍月婷丁香婷| 国产丁香五月天婷婷| 6月丁香婷婷激情| 玖玖99福利| 婷丁香五月天| 九色色| 99视频在线精品免费观看2| 淫荡综合网| 六月丁香久久| 色九月婷婷综合| 99操视频| 少妇被下春药玩弄A片| 思思久久99热只有频精品66| 婷婷五月精品| 激情综合网激情五月天| 久久视屏这里只有久久| 九玖欧洲亚洲| 夜夜久久综合网| 91久热| 五月婷视频| 人妻日日日| 激情五月狠狠喔| www.五月天婷婷| 九九黄色网| 久久亚洲婷婷综合色五月| 婷婷激情蜜桃玖玖丁香| 99色热| 五月婷婷香| 国产肥白大熟妇BBBB视频| 日本网站久久| 九九色影视| 婷婷中文字幕版| 亚洲另类视频| 99这里有精品| 激情五月综合久久| 天干干夜夜操| 夜色综合网| 激情综合久久| 大伊香蕉玖玖爱| 激情五月天电影| 国产做A爰片毛片A片美国| 色色丁香婷婷五月天| 97人人操人人| 久久少妇视频| 国产亚洲99久久精品| 99在线看片| 91热爆在线| 久噜久噜| h在线看免费版在线看| 免费日本aⅴ中文字幕| 九九99在线免费在线观看视频| WWW激情五月天| 日本在线视频播放91| 99精品在线观看| 久久久婷婷色五月资源网| 五月天天天综合| 99热这里有精品| 色婷婷丁香五月| 丁香五月成人av| 精品一二三区久久AAA片| 99内射视频| 中文无码精品一区二区三区| 玖玖色综合| 激情文学 综合 九月| 色六月天天激情综合网| yellow视频在线观看91| 婷婷干六月综合旧址| 激情六月丁香综合| 亚洲黄色影视| 婷婷综合视频| 五月婷婷丁香五月婷婷丁香| 日本韩国视频在线观看社区免费的9| 99操逼| 天天日天天干天天操| 久久久久久五月天| 人人色性网| 色色婷婷五月| 五月婷婷色色色| 九九热最新视频| 欧美A片在线视频免费观看| 免费AV黄在线播放| 综合色色网| 日本久热| 婷婷五月色| 91干在线| 国产91视频| 东京热人妻一区二区三区在线| 亚洲色情一区二区三区四区| 99精品偷拍视频| 日本九九视频| 9l视频自拍九色9l视频在线观看| 婷婷丁香婷婷97| 熟妇高潮一区av| 欧美婷婷六月丁香综合色连续高潮抽搐| 五月丁香啪综合| 五月激情综合性爱| 五月天婷婷丁香导航| 91精品综合久久久久久五月天| 五月婷在线视频免费播放| 亚洲精品又粗又大又爽A片 | 五月社区婷婷激情| 日韩在线看AV| 5月丁香六月婷婷| 伊人婷婷福利网| 天天综合图片| 五月色情婷婷| 啪啪色区| 日韩色色色色色| 五月婷婷色播| 日日射天天射| 五月天色软件| 激情五月婷黄版| 97干视频在线| 免费观看的av| 偷拍视频五月天| 久久久久9久无码视频| 色久综合天天做视频| 性爱技巧五月| 人人操人人干AV| 91ncom.色| 欧美日韩成人在线| 色综合久久久久久久久五月| 九九热91| 精品色色| 色女伊人| 色久九| 五月婷色| 狠狠xx| 97人人超| 五月丁香婷婷欧美色图视频五月丁香777电影 | 啪啪操网| www久久99| 日本五月婷婷久久久六月丁香| 五月婷婷色欲| 色噜噜狠狠色综合网| 思思视频久久| 五月色婷婷夜色| 色五月首页| 亚洲精品久久久无码| 欧美成人精品一区二区| 婷婷丁香97| 最近免费中文字幕大全高清大全1| 色五月女| 亚洲精品网站色视频| www.91五月| 思思99久久| 色国产五月| 成年视频免费观看| 熟妇人妻中文字幕无码老熟妇| 婷婷五月色播放| 99色区| 一区二区三区四区牛| 丁香婷婷基地| 五月天激情综合网| 亚洲激情区| 91九色|疯狂|高潮|对白|| 被强行糟蹋的女人A片| 五月丁香综合激情| 五月丁香色狠狠干大屄| 人人摸人人操人人爽| 好叼操在线观看| 丁香六月婷婷色XXXXX| 亚洲最大五月天成人网| anquye伊人| 久久婷婷人人| 亚洲一二三网| 亚洲妇女熟BBW| 婷婷色网站| 天天爽天天摸人妻综合网| 蜜桃婷婷五月| www.91操| 超级碰碰碰97免费| www.色色com| 99秘 在线| 人人草成人视频| 久久狠狠干| 色婷婷综合在线| 久久久久久久久久久久久9| 丁香五月色| 九九无码| 天天做天天爱| 亚洲美女网Va| 五月天另类小说| 久噜久噜| 丁香激情婷婷网| 丁香五月天殴美激情| 久久五月视频| 开心五月六月婷婷| 日韩成人综合网| 日本美女上人| 日本三级日本三级99| 五月综合丁香婷婷| 日本在线视频播放91| 婷婷成人在线| 超碰人人操| 深爱开心激情| 99热这里只有精品首页| 色情成人五月天| 深爱五月激情| 婷婷婷婷婷婷婷婷| 9l视频自拍9l九色9l成人| 久婷五月| 激情综合在线观看| 超碰99在线观看| 91啪啪| 亚洲高清在线| 丁香五月花| 精品二区| 色吊丝av中文字幕| 色色五月天网站| 丁香五月天网站| 日日干五月天婷婷| 色综合五月婷婷狠狠干| 久热精品视频| 亚洲人人操| 第四色激情网| 人人操AV| 欧美一级a | 婷婷色五月开心五月| 丁香婷婷情色五月天| 激情图片婷婷| 这里有精品| 黄桃AV无码免费一区二区三区| 丁香五月婷婷图片综合| 六月丁香婷婷综合影院| A片一曲| 99久久99热| 婷婷激情5月| 天天日天天插| 五月天色图| 色吧婷婷五月亚洲| 校园春色亚洲色| 绿色小导航AV| 欧美性二区| 天天操天天操| 九九 激情 网| 超碰在线人妻| 丁香五月ⅤA久久久| 任我鲁这里有精品视频| 久热精品视频在线观| 噜噜噜噜在线| 色五月婷婷五月天| 国产又黄又爽又色的免费| 三级av在线| 狠狠色五月| 激情五月激情综合俺也去婷婷小说| 久久精彩视频99| www.五月天| 婷婷五月丁香五月| 五月香蕉网| ri电影在线| 午夜丁香五月天综合| 日本久久天堂| 久久九九思思| 激情宗合哪里能看| 婷婷五月丁香激情图片| 99色色热热| 丁香五月天啪啪激情综和网| 91五月天| 久久综合九色综合88i| 九九熱最新視頻| 99青青草| 色婷婷成人做爰A片免费看网站| 人妻Av在线| 五月丁香色婷婷婷基地| 五月在线| 婷婷中文字幕网站| 91人妻人人做人碰人人爽九色| 六月狠狠综合| 色播综合| 色爱综合五月| 夜夜天天久久婷婷| 天天日天天舔| 色99xx| 色色婷| 五月综合色| 久久综合九色综合97婷婷| 丁香五月欧美成人| 五月天啪啪| 丁香伍月婷电影全集| 国产成人av在线| 婷婷五月天在线视频网站| 最新高清无码专区| 亚洲激情丁香五月天色| 国产97色在线| 97干婷婷| 九九热99在线视频| 五月色丁香婷婷中文字幕| 国产精品久久..4399| 亚洲色色五月| 欧美激情综合色丁香婷婷五月天| 白人荫道BBWBBB大荫道| 亚洲色婷婷| 丁香伊人网| 亚洲免费电影2| 丁香五月综合福利视频导航| 婷婷爱五月| 亚洲黄色影视| 婷婷久久色| 久久久WWW| 91丨九色丨高潮丰满日本| 国产三级在线播放| Www.狠狠| 2050人人操免费工开爱 | 狠狠干 狠狠操| 色综合天天| 狠狠做六月爱婷婷综合aⅴ| 久久婷婷久久| 九九中文字幕九| 国产偷人妻精品一区| 午夜九九九九九九| 五月亭亭六月天| 丁香五月婷婷高清| 思思热精品在线观看| 99年操人人爽| 日批在线看| 天天激情站| 99热九九在线| 六月丁香啪| 26uuu精品一区二区| 婷婷玖玖丁香| 婷婷娌伦网| 综合色五月天| 丁香五月六月| 国产亚洲成AV人片在线观黄桃| 狠狠干五月天婷婷网| www久| 九九这里有精品视频| 天天射天天插天天干| 艾小青av| 婷婷色五月天色| 色色综合激情| 性五月激情| 亚洲亚洲人成综合网络| 夜夜操天天爽| 9久久精品视频| 五月丁香啪啪网| 九九综合视频在线观看| 日本久久激情| 色五婷婷开心缴| 欧美色色色色色| 亚洲激情五月天| 极品人妻videosss人妻| 毛片九九九九九九九九18| 26uuu另类亚洲欧美日本一| 亚洲无码成人网| 婷婷久久久| 久热中文字幕在线线观看| 1024久婷| 97色婷婷| 五月丁香色婷婷基地| 亚洲免费视频网站| 97色在线| 婷婷六月视频| 色六月婷婷| 欧美情色一区| 99干在线| 日韩成人电影AV| 久久草婷婷丁香网站| 色娸娸综合网| 国产成人网| 亚洲这里只有精品| 色婷婷影视| 亚洲午夜在线视频| 99re视频在线播放| 综合在线丁香五月| 欧美色99| 婷婷情色开心五月天99| 久久东京热婷婷五月| 天天激情夜夜干| 99热费观看| 99网| 91在线日| 色婷婷激情视频| 五月婷婷啪| 91婷婷视频| 丁香六月婷| 五月丁香六月婷婷姐| 激情五月开心五月在线视频| 99啪在线| 国产午夜精品一区二区三区四区| 亚洲综合在线播放| 五月天婷婷久久综合| 超碰在线看| 丁香婷婷婷婷十二月在线观看视频| 思思精品视频| 天天澡天天狠天天天做| 婷婷亚洲在线| 狠狠色丁香| 亚洲综合另类| 狠狠色丁香久久综合婷婷亚洲成人福利| 婷婷金品综合视频| 日韩色久| 婷婷瑟瑟五月天| 免费看欧美成人A片无码| 午夜婷婷久久 | 91啪啪视频| 日本色婷婷| 五月丁香亭亭天天舔| 九九99视频精品| 97超碰在线免费观看| 免费播放AV| 搡BBBB搡BBB搡18 | 麻豆AV一区二区三区| 色九月婷婷综合| 丁香五月六月婷婷综合| 色五月丁香伊人| 夜夜夜叫天天天做| 天天日夜夜夜操操操操| 这里只有精品在线视频精品| 操99| 婷婷综合色图| 9操在线| 丁香五月天婷婷91| se色综合网| 欧美三级视频| 99精品丰满| 五月色婷丁香| 九月性爱网| 欧美三级大片AA在线看| 色网五月婷婷| 亚洲传媒在线观看| se色婷婷视频| 丁香五月婷婷综合激情哟哟哟| av一级棒av| 激情综合网,婷婷五月天| 激情婷婷五月女| 精品思思久久| 狠色狠色狠狠色综合网| 五月婷丁香花| 好好日激情五月天| 五月天婷婷午夜丁香| 六月婷婷五月丁香首页| 五月丁香六月婷婷不卡免费无码 | 六月丁香社区| 五月天婷婷丁香社区| 国产午夜一区二区三区| 九九激情视频| 99久久这里只有精品| 久久99热 这里有精品| 久久午夜理论| 激情小说之五月| 伍月婷婷六月丁香| 六月丁香社区| 色吧婷婷| 丁香九月激情| 9久久精品| 免费做A爰片77777| 伊人激情| 六月婷婷色色网| 九九色婷婷Av| 亚洲最大视频网站| 久久综合网桃花| 激情九月天天天天婷婷| 91热在线| 婷婷月五天在线在线看| 五月婷婷色综图片| 色婷婷五月天堂资源| 久久婷婷五月综合伊人| 成人一级片| 嫩BBB槡BBBB搡BBBB| 人妻无码视频网| 丁香五月电影院在线观看| 99九九精品视频| 亚洲婷婷丁香五月天激情小说| 在线观看玖玖资源免费观看| 欧美Va日本Va| 久久98| 在线中文字幕免费视频| 综合婷婷久久| 久久婷婷六月综合资源| 天天操天天干天天日| 色99网| 潘金莲AAAAAAAAAA| 欧洲毛片基地c区| 丁香五月日本| 国产97色在线| 超碰在线国产| 97超级操操| 色五月天综合| 午夜丁香综合婷婷| 欧美性猛交99久久久久99按摩| 超碰妻人人| 五月丁香六月在线欧美| 五月丁香六月婷婷久久| 淫视馆aV二区一区| 激情九九九九| 一起草AV| 久久丁香五月天| 国产偷人爽久久久久久老妇APP| 秋霞网在线免费基地五月婷婷丁香| 金桔一区二区ab地址| 天天干com| 91丨九色丨东北熟女| 日日操夜夜操无码免费| 亚洲五月婷婷在线| 久99久在线| 超碰69天堂| 很很操很很操| 亚洲激情av| 日本丰满久久| 99色视频在线观看| 色五月综合网| 在线视频激情网站| 99这里是精品| 婷婷精品视频| 亚洲成人综合网在线免费观看| 啪啪丁香五月| 亚洲色色香蕉| 婷婷五月色| 绿色小导航AV| 天天艹天天色| 99热只有这里有精品| 欧美 日韩 成人| 欧美色色色| 五月天激情久久| 99九九99九九九视频精品| 激情六月丁香综合| 欧美 日韩 成人 在线| 一起草aV| 夜夜撸天天操| 91妻人人爽人人看片| 日日噜噜久久婷婷五月天 | www999日韩精品| 99热成人在线观看| 精品人妻在线免费观看| 激情五月综合网| 91热在线| 粉嫩av蜜桃av蜜臀av| 天天艹夜夜艹| caopeng97人人| 99re最新地址| 99热免费18| 97色色在线视频| 丁香五月天天久久综合小说| 丁香五月98| 亚洲成人AV电影在线| 狠狠香婷婷五月| 久久综合九九| 蜜桃婷婷五月| 久久丁香五月天| 亚洲五月丁香综合网| 亚洲另类电影| 五月天婷婷色在线视频免费观看| 操碰97| 少妇激情基地| 色99在线| WWW、日本色丁香co m| 国产精品18久久久| 337p午夜影院| 精品99爱免费视频在线观看| 五月丁香啪| 欧美综合婷婷网| 丰满少妇猛烈A片免费看观看 | 操人91| 色欲Av五月天| 成人做爰高潮A片免费视频 | 五月天综合在线观看| 亚洲人人操| 97干在线视频| 日日爱678| 国产精品18久久久| 色色 9| 青青999| 久久停停超碰| www.99热最新视频8| 国产JK精品白丝AV在线观看| 五月精品免费XXX| AV网在线观看| 大香蕉婷婷色| 日本婷婷丁香五月| 超碰国产在线播放| 66色在线日韩| 天天色综合天天| 99热精品在线观看| 五月婷婷久草在线视频综合| 五月天社区婷婷丁香社区| www.色色五月天.com| 色婷丁香五月| 怎么样可以看免费的一级av| 永久精品| 2014天天爽| 七七婷婷综合| 久热69| 婷婷五月天六月综合| 亚洲AV久久久久久久久久久久久久久久| 久久久无码精品成人A片小说| 婷婷五月激情的图片| 九九9久九9国产视频| 婷婷八月丁香激情综合| 亚洲中文无码成人| 日本偷拍九九九| 色婷婷狠狠| 五月婷婷开心丁香| 97人人操| 婷婷五月图片小说视频| 色婷婷88| 99国产精品久久久久久久久久久| 综合网亚洲| 9久久精品| 婷婷丁香五月视频| 六月激情婷婷| 亭亭社区五月天| 婷婷五月天奸女| 97色 五月天丁香| 五月综合激情网| 97色伦另类图片小说视频 | 欧美色骚婷婷五月天| 婷婷五月综合丁香久久| 99精品色| 久久激情网| 色综久久久| 91超级碰在线视频| 五月婷九月| 色香欲综合| 99热这里有精品| 中文字幕簧片| 性欧美日本| 伊人影院久久网| 亚洲乱码日产精品BD| 色色五月天婷婷丁香| 午夜婷婷六月天| 热久久成人| 五月天综合久久丁香91| 91呦呦呦| 亚洲精品又粗又大又爽A片| 综合网啪| 国产成人99久久亚洲综合精品| 色五月av伊人| 久久99婷婷| 99干99| OUMEIRIHANCHENGREN| 日本天天操| www激情| 91综合国免费久入| 99热无码| 婷婷五月激情欧美大胆视频| 少妇丁香婷婷 | 少妇大叫太大太粗太爽了A片| 日良久久| 91视频五月丁香| 99思思热只有在这里看| 人妻久久久久久久久妻久久久久| www.xtbsty.cn.com蜜乳AV| 黄网在线观看免费| 色色色色色五月| 丁香五月天社区婷婷| 97夫妻超碰| 免费无码毛片一区二区A片| 狠狠色丁香| 超碰人人色| 91久久1118| 97视频久久| 丁香五月激情五月| 激情五月综合婷婷| 五月天六月色| 五月丁香六月婷婷欧美综合| 青青草视频福利| 影音先锋秋秋五月婷婷| 国产3p露脸普通话对白| 久久婷婷五月天| 九九色影院| 大香蕉九九| 丁香六月婷婷| 婷婷在线视频| 粉嫩AV久久一区二区三区| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 激情图片婷婷| 国产欧美精品AAAAAA片| 国产激情久久久| 99色精品| 俺去也婷婷| 色九月婷婷| 亚洲午夜av| 欧美成人AAA片一区国产精品| 狠狠操狠狠操| 色婷婷五月天| 五月天婷婷综合色| 中国女人内射6XXXXX| 国产毛片精品一区二区色欲黄A片| 国产毛片欧美毛片久久久| 成人 在线观看国产| 99热在线观看| 国产色色色色色| 日91高清无玛| 中文字幕综合| 成人做爰A片免费看网站找不到了| 六月亚洲婷婷6月中文字幕| 中文字幕成人| 精品婷婷五月天| 草婷婷在线| 五月婷婷真爱激情网| 能看的av网站| 成人短视频在线| 中文字幕在线观看视频www| 激情六月婷婷| 黄色av高清| 九九热99免费视频| 五月天婷婷久久日| 五月丁香AV、伊人业余、性色熟妇| 狠狠操婷婷| 丁香激情网| 亚洲综合婷婷| 国产精品男人AV不卡| 色噜噜夜夜夜综合网| 色色婷| 丁香色啪综合| 激情图片五月天| 激情五月婷婷五月| 国产精品天天狠天天看| 69久热| 思思视频久久| 森林影视大全,最好看的2019年视频 | 99亚洲大片精品永久在线观看| 99综合一区| 日本91在线| 久久久久久久久月丁| WWW.久久久久久久| 五月天婷婷久久日| 天天干狠狠| 99色婷婷| 一级AV片| 国产成人av在线播放| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇| 久久九九免费视频| 婷婷基地爱| 9色在线视频精品观看| 国产亚洲精品人人| 丁香五月天综合| 九九久久综合| 亚洲成人中心| 涩涩网五月天| 欧美在线97| www.99.色| 激情综合五月激情XXXX| 婷婷丁香五月天激情| 久热9| 色情五月天丁香社区| 99热只有这里才是精品| 天天干天天干天天干天天干天| 另类丁香五月天区图| WWW.天天日| 婷婷 丁香 精品| 久热99| 97操视频| 婷婷五月天久久| 老妇六区| 久久五月视频| 99热精品在线| 日本丰满久久| 五月丁香婷婷婷婷综合网| 91丨九色丨白浆秘| 日韩啪图| 久久开心五月婷婷| 777精品久无码人妻蜜桃| 99精品国产在热久久婷婷| 伊人久久五月天| 无码免费人妻A片AAA毛片西瓜| www一起操| 五月激情婷婷在线| 五月丁香婷婷狠狠操| 四色 爱 婷婷 精品 亚洲 五月天| 99色中文| 九色在线观看91av| 欧美成人网99网| 欧美色激情四射| 欧美va亚洲va| 五月天天天色| 婷婷中文在线| 色综合色五月| 色久99| 久久综合五月| 1024在线视频| 国产三级秋霞| 国产毛片精品一区二区色欲黄A片| 激情啪啪五月天| 婷婷亚洲综合| 欧洲激情网站| 综合色情网| 色婷婷操逼| 色五月婷婷色| 色婷婷久久综合| 91九色中文字幕女在线观看| 一级二级色大片| 91se在线观看| 激情啪啪五月| 激情五月,激情综合网| 久久五月天 91| 五月婷婷在线视频观看| 亚洲无aV在线中文字幕| 婷婷五月天第三页| 亚洲啪啪精品|