色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

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

工業(yè)相機SDK C++ Demo:枚舉取流、回調(diào)落盤與插件集成 簡介面向機器視覺工程師的這份C示例工程圍繞??倒I(yè)相機SDK的API調(diào)用展開重點解決相機參數(shù)配置、圖像采集與實時顯示、設備枚舉連接及異常反饋等開發(fā)入門問題適合具備C基礎、希望用Qt搭建工業(yè)相機上位機的開發(fā)者參考。壓縮包共239個文件約11.02MB主要由h/hh頭文件、cpp源文件、lib靜態(tài)庫、vcxproj與sln工程文件構成并包含ui/qrc界面資源、pro工程配置、def導出定義及exe示例程序覆蓋從工程組織到編譯運行的完整結(jié)構。已有約1300人學習。其價值在于提供可對照的完整Qt工程與SDK調(diào)用實例讀者可據(jù)此理解觸發(fā)模式、分辨率、幀率、曝光時間等參數(shù)設置以及圖像緩存管理和錯誤捕獲思路對多相機系統(tǒng)的自動發(fā)現(xiàn)與配置也有參考意義。在此基礎上讀者可進一步擴展圖像處理、特征檢測等功能減少從零搭建環(huán)境的成本并在二次開發(fā)時更快定位接口調(diào)用與工程配置問題。1. 工業(yè)相機 SDK 的 C Demo 源碼包先別急著編譯先看它替你省了哪幾步工業(yè)相機 SDK 的 C Demo 源碼包最容易被當成“編譯一下就能出圖”的樣例。實際在制造現(xiàn)場的軟件/插件式 C 集成里它更像一張接線圖設備枚舉、打開句柄、配置曝光增益、注冊回調(diào)、落盤取圖每一步都對應產(chǎn)線調(diào)試中的一個卡點。你拿到這份源碼包真正值錢的地方不是幾行調(diào)用而是它把這些步驟按最小閉環(huán)串了起來讓你先跑通一條鏈路再替換成自己的業(yè)務插件。這份資源適合三類人剛接觸工業(yè)相機 SDK、需要從 C 側(cè)把相機接進制造軟件的人手上已有 SDK 頭文件和動態(tài)庫、但不想從零寫初始化流程的人以及需要把采集功能做成獨立模塊或插件的熟手。先跑枚舉再跑取流最后再談參數(shù)和落盤順序別亂。2. 拆開 Demo 工程從設備枚舉到取流回調(diào)的最小閉環(huán)拿到源碼包后我一般不會先改業(yè)務代碼而是先確認工程依賴、運行目錄和 SDK 調(diào)用順序。工業(yè)相機 Demo 的翻車點往往不在算法而在“編譯過了、運行時找不到庫”“枚舉不到設備”“回調(diào)一進來就卡住”這些工程細節(jié)。第 2 章先把最小閉環(huán)拆開依賴怎么擺、設備怎么枚舉、句柄怎么打開、回調(diào)怎么注冊。制造現(xiàn)場的軟件/插件 c 集成尤其吃這一套因為最終交付的不是一個控制臺程序而是一個能被主程序加載、能反復啟停的采集模塊。2.1 工程目錄與依賴關系頭文件、動態(tài)庫、運行目錄怎么擺Demo 源碼包里的 C 工程通常圍繞三類東西轉(zhuǎn)SDK 頭文件、鏈接用的庫文件、運行時動態(tài)庫。頭文件決定你能不能編譯庫文件決定鏈接能不能過運行時動態(tài)庫決定程序啟動時會不會直接退出。很多新手把這三類文件混在一個目錄里編譯命令寫得很長換一臺機器就重新翻車。我習慣在工程里固定一個third_party/vendor_sdk目錄下面再分include、lib、binCMake 只認這個根路徑換 SDK 時改一個變量就行。下面這段 CMake 腳本是 Demo 工程里最常見的骨架作用是把 SDK 根目錄、頭文件目錄、鏈接目錄和運行時庫復制動作固定下來。代碼里的vendor_camera是示意庫名實際換成你手上 SDK 的庫名VendorCam_*這類接口名也是通用寫法落到項目里按 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根目錄頭文件、庫、運行庫都從這里取 set(SDK_ROOT ${CMAKE_SOURCE_DIR}/third_party/vendor_sdk CACHE PATH 工業(yè)相機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下把運行庫復制到exe旁邊避免啟動時報找不到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 復制SDK運行庫到輸出目錄 ) else() # Linux下先給構建目錄一個rpath方便本機調(diào)試 set_target_properties(camera_sdk_cpp_demo PROPERTIES BUILD_RPATH ${SDK_ROOT}/lib INSTALL_RPATH $ORIGIN/../lib ) endif()這段腳本的邏輯很直白SDK_ROOT是唯一入口頭文件目錄和庫目錄都從它派生target_link_libraries負責編譯期鏈接Windows 的POST_BUILD負責把動態(tài)庫復制到可執(zhí)行文件旁邊Linux 的BUILD_RPATH讓程序在構建目錄里先跑起來。參數(shù)上CMAKE_CXX_STANDARD 17不是硬性要求但 Demo 里一旦用到std::filesystem、std::thread、std::atomic17 更省心。SDK_ROOT用CACHE PATH是為了后續(xù)在 IDE 或命令行里覆蓋不要把絕對路徑寫死在源碼里。目錄/文件作用常見錯誤third_party/vendor_sdk/includeSDK 頭文件頭文件層級多一層include 路徑寫錯third_party/vendor_sdk/lib鏈接庫只放了運行庫沒有導入庫third_party/vendor_sdk/bin運行時動態(tài)庫編譯通過啟動時報找不到庫src/main.cpp初始化、枚舉、啟動采集把業(yè)務邏輯和 SDK 調(diào)用混在一起src/frame_sink.cpp回調(diào)后的隊列與落盤在回調(diào)里直接寫文件導致丟幀依賴擺好之后先不要急著寫取流。把工程編譯出來運行一個只做初始化和釋放的空程序確認動態(tài)庫能加載、SDK 能初始化。這個動作看起來慢但能省掉后面一半的排查時間。我見過太多人一上來就調(diào)取流最后發(fā)現(xiàn)是運行目錄少了動態(tài)庫日志里只有一句“初始化失敗”白查半天。2.2 初始化與設備枚舉為什么先跑通枚舉再碰取流設備枚舉是整條鏈路里最值得先跑通的一步。枚舉成功說明 SDK 初始化、網(wǎng)絡發(fā)現(xiàn)、權限、運行庫加載這幾件事至少通了枚舉失敗則說明問題還在入口沒必要去調(diào)曝光和回調(diào)。工業(yè)相機常見的發(fā)現(xiàn)方式有廣播發(fā)現(xiàn)、固定 IP 直連、串口或 USB 枚舉不同 SDK 的接口名不一樣但邏輯差不多初始化 SDK拿設備列表打印序列號、型號、IP 或接口類型最后釋放資源。下面這段 C 代碼用通用接口名示意枚舉流程。實際項目里把VendorCam_Init、VendorCam_EnumDevices替換成 SDK 頭文件里的同義函數(shù)即可。代碼重點不在 API 名字而在“初始化有返回值檢查、枚舉結(jié)果有遍歷、退出前釋放”這三件事。#include iostream #include vector #include vendor_camera_sdk.h int main() { // 1. 初始化SDK參數(shù)一般傳nullptr或配置結(jié)構體指針 if (VendorCam_Init(nullptr) ! CAM_OK) { std::cerr SDK初始化失敗先查運行庫和權限 std::endl; return 1; } // 2. 枚舉設備結(jié)果放進vector std::vectorDeviceInfo devices; int ret VendorCam_EnumDevices(devices); if (ret ! CAM_OK) { std::cerr 設備枚舉失敗錯誤碼 ret std::endl; VendorCam_Release(); return 2; } if (devices.empty()) { std::cerr 沒有發(fā)現(xiàn)設備檢查網(wǎng)段、供電和連接 std::endl; VendorCam_Release(); return 3; } // 3. 打印關鍵字段序列號用于后續(xù)打開設備 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ù)通常是配置指針傳空表示用默認配置如果 SDK 要求指定日志路徑或回調(diào)按頭文件補結(jié)構體。VendorCam_EnumDevices(devices)的返回值必須檢查錯誤碼要打出來不要只打印“失敗”兩個字。dev.serial是后面打開設備的穩(wěn)定標識比 IP 更可靠因為 IP 可能被改序列號一般不變。VendorCam_Release()放在每個失敗分支和正常分支里避免 SDK 內(nèi)部資源沒釋放第二次運行枚舉不到設備。枚舉跑通后再確認一件事程序運行時的工作目錄在哪里。Windows 下雙擊 exe 和從命令行啟動工作目錄可能不同Linux 下從 systemd 或主程序加載插件工作目錄也可能不是你以為的目錄。Demo 里如果有配置文件、日志目錄、保存目錄盡量用可執(zhí)行文件路徑或環(huán)境變量推導不要寫相對路徑就完事。2.3 打開設備與注冊回調(diào)取流鏈路的最小參數(shù)集枚舉到設備后下一步是打開句柄、設置采集模式、注冊幀回調(diào)、啟動取流。這里最容易犯的錯是“參數(shù)設太多”。第一次跑通取流只需要最小參數(shù)集觸發(fā)模式設為連續(xù)采集或關閉觸發(fā)、曝光時間給一個中間值、增益先歸零、像素格式用 Mono8 或 BayerRG8、回調(diào)里只做深拷貝。等圖像能穩(wěn)定出來再去調(diào) ROI、伽馬、白平衡這些參數(shù)。下面這段代碼把打開設備、設置參數(shù)、注冊回調(diào)、啟動取流串起來。Grabber類只是示意實際工程里可以拆成CameraSession和FrameSink兩個類?;卣{(diào)函數(shù)里不要做耗時操作先入隊后面用工作線程落盤。#include atomic #include cstdint #include iostream #include vendor_camera_sdk.h class Grabber { public: bool Start(const std::string serial) { // 1. 按序列號打開設備 if (VendorCam_OpenBySerial(serial.c_str(), handle_) ! CAM_OK) { std::cerr 打開設備失敗 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. 注冊回調(diào)user指針把this傳進去 if (VendorCam_RegisterFrameCallback(handle_, Grabber::OnFrame, this) ! CAM_OK) { std::cerr 注冊回調(diào)失敗 std::endl; VendorCam_Close(handle_); handle_ nullptr; return false; } // 4. 啟動取流 if (VendorCam_StartGrabbing(handle_) ! CAM_OK) { std::cerr 啟動取流失敗 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)里只做拷貝或入隊不在這里寫文件 self-Enqueue(frame); } void Enqueue(FrameInfo* frame) { // 省略深拷貝到有界隊列具體實現(xiàn)見第4章 (void)frame; } CameraHandle handle_{nullptr}; double exposure_us_{8000.0}; double gain_db_{0.0}; }; int main() { Grabber grabber; if (!grabber.Start(替換成枚舉到的序列號)) { return 1; } std::this_thread::sleep_for(std::chrono::seconds(5)); grabber.Stop(); return 0; }這段代碼的關鍵參數(shù)有四個TriggerMode0表示關閉觸發(fā)或連續(xù)采集具體枚舉值看 SDK 頭文件AcquisitionMode2通常表示連續(xù)采集ExposureTime單位多為微秒8000 微秒是 8 毫秒適合室內(nèi)中等亮度Gain單位多為 dB先歸零避免噪聲被放大。VendorCam_RegisterFrameCallback的第三個參數(shù)是用戶指針回調(diào)里再轉(zhuǎn)回Grabber*這是 C 對接 C 風格 SDK 的常見寫法。StartGrabbing之后不要立刻Stop至少給幾秒讓回調(diào)進來確認有幀再退出。取流鏈路跑通后先看三件事回調(diào)有沒有進來、幀寬高和像素格式對不對、停止取流后句柄有沒有關?;卣{(diào)沒進來優(yōu)先查觸發(fā)模式和取流命令幀寬高不對查 ROI 和像素格式停止后再次啟動失敗查StopGrabbing和Close是否成對。第 2 章的目標不是把 Demo 改成產(chǎn)品而是讓你確認這條最小閉環(huán)在你機器上真的能走通。3. 曝光、增益與像素格式Demo 里最容易被忽略的參數(shù)配置工業(yè)相機 Demo 能出圖不代表圖像能用。制造現(xiàn)場常見的“圖像偏暗、過曝、顏色不對、邊緣發(fā)糊”很多時候不是相機壞了而是曝光、增益、像素格式和 ROI 沒配對。第 3 章把參數(shù)配置拆成兩塊曝光增益的聯(lián)動策略以及像素格式與 ROI 的選擇。這里的思路是先讓圖像亮度落在可用區(qū)間再讓數(shù)據(jù)格式匹配后續(xù)算法或插件。3.1 曝光時間與增益的聯(lián)動先鎖曝光再調(diào)增益曝光時間和增益都會影響亮度但兩者的代價不一樣。曝光時間拉長進光量增加圖像亮度上來但運動物體容易拖影增益放大的是電信號亮度也能上來但噪聲會跟著放大暗部尤其明顯。我一般先把增益歸零調(diào)曝光到目標亮度再在曝光已經(jīng)接近運動拖影上限時才少量加增益。這個順序在制造現(xiàn)場的軟件/插件 c 集成里很重要因為插件后面往往接的是檢測算法噪聲放大比亮度不足更難處理。下面這張表是 Demo 調(diào)參時常用的起點不是萬能值。實際項目里按光源、鏡頭光圈、被拍物反光程度再改。參數(shù)常見單位起步建議調(diào)整方向注意點曝光時間微秒500010000暗了先加曝光運動場景注意拖影增益dB0曝光到上限再加增益越高噪聲越明顯觸發(fā)模式枚舉連續(xù)采集產(chǎn)線節(jié)拍明確后改硬觸發(fā)觸發(fā)源不配對會沒圖像素格式枚舉Mono8 或 BayerRG8按算法輸入選Bayer 要轉(zhuǎn) RGBROI像素先全幅確認視野后再裁偏移和寬度要對齊參數(shù)設置代碼不要散落在業(yè)務邏輯里我習慣收成一個CameraParams結(jié)構體統(tǒng)一校驗、統(tǒng)一應用。下面這段代碼示意“停流、設參數(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; }這段代碼的邏輯是先把采集停下來再逐項設置最后重新啟動。ExposureTime和Gain用浮點接口因為很多 SDK 支持小數(shù)PixelFormat用字符串枚舉方便在配置文件里改OffsetX/OffsetY/Width/Height用整數(shù)接口單位是像素。每次設置都檢查返回值失敗就直接返回不要繼續(xù)設后面的參數(shù)否則日志里會出現(xiàn)“最后一個參數(shù)失敗”實際根因在第一個。停流再啟流會帶來短暫斷流產(chǎn)線集成時要把這段時間算進節(jié)拍或者在初始化階段一次設好運行中不改。曝光調(diào)好后再看直方圖或灰度均值。Demo 里如果沒有圖像分析工具可以先把圖存成 PGM 或 BMP用常見看圖工具看亮度分布。不要只憑屏幕上的顯示判斷顯示端可能做了自動拉伸。制造現(xiàn)場的光源如果可調(diào)優(yōu)先調(diào)光源再動曝光和增益圖像質(zhì)量會更干凈。3.2 像素格式與 ROIMono8、BayerRG8、RGB8 怎么選像素格式選錯后面算法全白做。Mono8 是單通道 8 位灰度數(shù)據(jù)量小、處理簡單適合尺寸測量、定位、條碼識別這類不依賴顏色的場景。BayerRG8 是彩色相機常見的原始格式每個像素只有一個顏色分量需要做去馬賽克才變成 RGB如果直接把 Bayer 數(shù)據(jù)當灰度用圖像會有網(wǎng)格感。RGB8 是三通道 8 位數(shù)據(jù)量大但算法端不用再做顏色轉(zhuǎn)換。選型時先看算法輸入再看帶寬不要為了“彩色好看”把產(chǎn)線帶寬吃滿。ROI 也不是越小越好。ROI 縮小能提高幀率、減少數(shù)據(jù)量但偏移和寬高要滿足相機的最小步進和對齊要求。部分相機的 ROI 寬度要求是 8 的倍數(shù)偏移也有步進設成奇數(shù)可能報參數(shù)錯誤。Demo 里最好在應用參數(shù)前做一次校驗寬高大于 0、偏移加寬高不超過傳感器范圍、寬高按步進對齊。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; }這段校驗函數(shù)的參數(shù)含義sensor_w/sensor_h是相機傳感器全幅寬高step是 SDK 要求的對齊步進常見是 2、4、8 或 16具體看手冊。先查正負和邊界再查對齊順序不要反。roi_x roi_w不能超過傳感器寬度否則部分 SDK 會直接返回參數(shù)錯誤部分 SDK 會靜默裁切后者更麻煩。Demo 里把校驗放在ApplyParams之前參數(shù)錯了在本地就攔住不要等下發(fā)到相機才報錯。像素格式和 ROI 都確認后再檢查幀數(shù)據(jù)里的stride或padding。有些相機每行末尾會補齊字節(jié)幀寬乘以像素字節(jié)數(shù)不一定等于行跨度。保存圖像時如果按width * height * channels直接寫可能出現(xiàn)圖像錯位。Demo 里如果有FrameInfo結(jié)構體先看它有沒有stride字段沒有的話按 SDK 文檔確認行對齊規(guī)則再決定是否逐行拷貝。4. 圖像回調(diào)與線程安全把 Demo 改成能落盤的采集程序Demo 出圖之后下一步通常是落盤或送算法。很多樣例代碼在回調(diào)里直接imwrite或直接調(diào)用檢測函數(shù)幀率一高就丟幀甚至把取流線程卡死。工業(yè)相機回調(diào)運行在 SDK 的采集線程里回調(diào)里做耗時操作等于讓相機等你。第 4 章把回調(diào)改成“只入隊”用獨立工作線程做保存再補上文件命名和半截文件處理。這個模型不復雜但能讓 Demo 從“能看”變成“能連續(xù)采集”。4.1 回調(diào)里只做拷貝隊列 工作線程的落盤模型回調(diào)里最安全的動作是深拷貝一幀到有界隊列然后立刻返回。隊列要有上限滿了就丟幀并計數(shù)不要無限增長。無限隊列在短時間卡頓時看起來沒事時間一長內(nèi)存吃滿程序直接崩日志里還看不出原因。工作線程從隊列取幀、保存、釋放采集線程和保存線程通過互斥量和條件變量解耦。下面這段代碼是簡化版重點看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是隊列上限按幀大小和內(nèi)存預算調(diào)1080p 灰度幀一幀約 1.3MB8 幀不算大running_控制工作線程退出cv_.wait的條件是“停止或隊列非空”避免退出時卡死Push里隊列滿直接丟幀并累加dropped_不要阻塞采集線程。Frame里的data是深拷貝后的像素數(shù)據(jù)回調(diào)里構造Frame時要把stride處理掉按有效像素逐行拷貝避免把行尾補齊字節(jié)也存進去。Save在工作線程里執(zhí)行這里只聲明具體實現(xiàn)看下一節(jié)?;卣{(diào)對接時OnFrame里不要直接構造大對象再拷貝兩次可以復用緩沖池。常見做法是維護一個固定大小的Frame池回調(diào)取一個空閑幀填數(shù)據(jù)Push到隊列工作線程保存完再歸還。這樣能減少頻繁分配釋放。Demo 階段可以先不做池先把隊列模型跑通再按幀率和內(nèi)存壓力決定要不要加。4.2 保存圖像與命名避免覆蓋和半截文件保存圖像有兩個細節(jié)最容易出問題文件名重復導致覆蓋程序中途退出留下半截文件。文件名我一般用“序列號 微秒時間戳 格式后綴”序列號區(qū)分相機時間戳區(qū)分幀。半截文件用“先寫臨時文件寫完再重命名”的方式處理重命名在同一文件系統(tǒng)內(nèi)通常是原子操作至少不會讓下游算法讀到寫了一半的圖。#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示意實際按像素格式寫文件頭 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); } }這段代碼的邏輯先確保目錄存在再用微秒時間戳拼文件名先寫.part關閉后重命名。frame.serial用來區(qū)分多相機避免兩臺相機同一微秒撞名pixel_format決定后綴Mono8 可以寫 PGM彩色可以寫 BMP 或自定義頭。注意這里只寫了像素數(shù)據(jù)PGM 還需要文件頭實際項目里按格式補P5頭或直接接圖像庫。std::filesystem::rename帶error_code失敗時刪臨時文件不拋異常打斷工作線程。create_directories每次保存都調(diào)用有開銷可以在初始化時調(diào)一次保存函數(shù)里只做寫入。落盤目錄不要放在系統(tǒng)盤根目錄或權限受限目錄。制造現(xiàn)場常見做法是按日期分目錄例如data/2025-01-01/cam_xxx避免單目錄文件過多。保存線程如果持續(xù)跟不上dropped_會漲這時候先看磁盤寫入速度再看幀大小和隊列上限。不要一上來就加大隊列隊列只是緩沖不是解決磁盤瓶頸的辦法。5. 避坑排查工業(yè)相機 SDK C Demo 最常見的五類翻車現(xiàn)場工業(yè)相機 Demo 的坑很集中枚舉、取流、動態(tài)庫、圖像參數(shù)、多相機。每一類都有典型現(xiàn)象但根因往往不在表面。第 5 章按“現(xiàn)象 → 原因 → 解決”拆五條都是我見過或自己踩過的翻車現(xiàn)場。排查時先按順序確認最小閉環(huán)不要同時改五個參數(shù)否則你都不知道是哪一步修好的。5.1 枚舉不到設備先查網(wǎng)段、權限和防火墻現(xiàn)象程序啟動后設備列表為空或者只顯示一部分相機SDK 初始化返回成功但枚舉接口返回 0 個設備。原因通常有三類相機和主機不在同一網(wǎng)段廣播發(fā)現(xiàn)包過不去Linux 下當前用戶沒有訪問網(wǎng)絡設備或 USB 設備的權限Windows 防火墻或安全軟件攔了發(fā)現(xiàn)報文。解決順序是先看相機指示燈和網(wǎng)口燈再用系統(tǒng)命令確認主機網(wǎng)卡地址確保和相機在同一網(wǎng)段Linux 下用ip addr看網(wǎng)卡用ping測直連相機權限問題檢查 udev 規(guī)則或把當前用戶加入相應用戶組改完重新登錄。防火墻先臨時關掉做對照確認是它再按端口放行不要長期關閉。5.2 取流超時與丟幀觸發(fā)源、包大小、回調(diào)阻塞現(xiàn)象枚舉正常打開設備也成功但StartGrabbing后回調(diào)不進幀或者進幾幀就超時日志里出現(xiàn)取流超時、丟幀計數(shù)上漲。原因常見的是觸發(fā)模式?jīng)]關相機在等硬觸發(fā)網(wǎng)絡相機包大小設得過大或過小導致丟包回調(diào)里做了保存或算法采集線程被拖住。解決時先把觸發(fā)模式設為連續(xù)采集確認自由運行能出圖再按 SDK 建議調(diào)包大小和接收緩沖網(wǎng)絡相機先跑小分辨率排除帶寬最后把回調(diào)改成只入隊保存放到工作線程。取流超時不要只加超時時間先確認幀有沒有到。5.3 編譯通過但運行找不到動態(tài)庫運行目錄與 RPATH現(xiàn)象編譯鏈接都過雙擊 exe 或從主程序加載插件時直接退出提示找不到某個動態(tài)庫Linux 下報error while loading shared libraries。原因通常是運行庫沒復制到可執(zhí)行文件旁邊或者 Linux 的RPATH沒設對程序去系統(tǒng)目錄找?guī)?。解決時 Windows 用 CMake 的POST_BUILD把bin目錄復制到輸出目錄或者把 SDK 的bin加進PATH做臨時驗證Linux 用ldd看缺哪個庫構建目錄設BUILD_RPATH安裝目錄設$ORIGIN/../lib。插件場景還要確認主程序加載插件時的工作目錄和環(huán)境變量不要假設和獨立運行一樣。5.4 圖像偏暗、過曝或顏色異常曝光、增益、像素格式逐項對照現(xiàn)象能出圖但圖像整體偏暗、局部過曝或者彩色圖顏色發(fā)綠、發(fā)紫邊緣有網(wǎng)格。原因可能是曝光時間太短、增益為負或為零但光源不足也可能是像素格式選錯把 Bayer 數(shù)據(jù)當 RGB 用或者把 RGB 當灰度讀。解決時先把增益歸零調(diào)曝光到灰度均值落在中間區(qū)域再看像素格式是否和保存、顯示鏈路一致BayerRG8 要做去馬賽克Mono8 不要按三通道讀最后檢查 ROI 偏移和行跨度錯位也會讓圖像看起來像顏色異常。每次只改一個參數(shù)改完存一幀對照。5.5 多相機同時取流句柄隔離與帶寬核算現(xiàn)象單相機正常接第二臺后開始丟幀、超時或者兩臺相機圖像串了。原因常見的是句柄沒有按相機隔離回調(diào)里用了共享緩沖網(wǎng)絡帶寬或 USB 帶寬不夠兩臺相機同時全幅高幀率把鏈路打滿保存線程共用隊列一臺相機拖慢另一臺。解決時每臺相機一個CameraSession和一個FrameSink回調(diào)的user指針指向各自的會話對象先降分辨率或幀率做帶寬核算確認單臺占用再乘相機數(shù)保存隊列按相機分開日志里帶序列號。多相機不要共用全局句柄也不要在回調(diào)里查全局 map鎖競爭會讓丟幀更明顯。排查順序看什么快速判斷1SDK 初始化返回值失敗先查運行庫和權限2設備枚舉數(shù)量為 0 查網(wǎng)段、供電、防火墻3打開設備返回值失敗查序列號是否選錯、設備是否被占用4取流回調(diào)計數(shù)不進幀查觸發(fā)模式和取流命令5丟幀計數(shù)和隊列上限上漲查回調(diào)耗時、磁盤、帶寬6保存文件完整性半截文件查臨時文件重命名和退出流程這張表建議貼在調(diào)試記錄里每次接新相機按順序走一遍。不要跳步也不要在枚舉沒通的時候去調(diào)曝光。血淚經(jīng)驗是越早把問題鎖在最小閉環(huán)里后面改業(yè)務代碼越輕松。6. 把 Demo 演進成產(chǎn)線插件連續(xù)采集驗證與三個硬指標Demo 跑通后最后一步是把它收成一個能被主程序加載的采集插件。我一般不再往main.cpp里堆邏輯而是把初始化、枚舉、打開、取流、停止封裝成CameraSource類對外只暴露Start(serial)、Stop()、PushFrame()三個動作。插件化之后主程序不關心 SDK 細節(jié)只關心幀有沒有進來、丟沒丟、保存是否完整。驗證時看三個硬指標連續(xù)采集十分鐘的丟幀率、幀時間戳間隔是否均勻、落盤文件是否能被下游完整讀取。丟幀率用dropped_除以總幀數(shù)時間戳間隔看最小值和最大值文件完整性隨機抽檢尾部字節(jié)。下面這張表是我常用的驗收記錄格式數(shù)值按項目定但三項都要有。指標采集方式判斷標準異常時先看丟幀率連續(xù)采集 10 分鐘低于項目允許閾值回調(diào)耗時、隊列上限、磁盤時間戳間隔記錄每幀到達時間最大值不超過節(jié)拍容忍范圍觸發(fā)模式、網(wǎng)絡抖動、曝光過長落盤完整性隨機抽檢文件尾部文件大小和頭信息一致臨時文件重命名、磁盤空間我自己的習慣是每接一個新 SDK先跑枚舉再跑回調(diào)落盤最后才接業(yè)務算法三步不亂序。從那以后我每次換機器、換相機、換主程序都強制走一遍這張驗收表不憑“昨天還能跑”做判斷。源碼包在項目歸檔里按camera_sdk_cpp_demo目錄取用先把最小閉環(huán)跑通再按你的產(chǎn)線節(jié)拍改參數(shù)。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月天色电影| 久久AV无码网址| 色婷婷综合视频| 后入式999| 99热国产| 久久久久久AⅤ无码免费肉站| 超碰伊人在线| 婷婷五月天小说| 老司机福利青青草| 校园春色亚洲色图| 国产成人网| 欧美伦乱爱| 26uuu最新| 青青草视频这里只有精品| 人妻少妇无码 | 超碰97玖玖爱| 日韩黄片影院| 色综合色色| 成人AV在线网站| 97视频在线观看网站| 欧美少妇第一页| 久久九色| 日本一二三高清| 狠狠操天天干| 欧美日韩不卡传媒| 在线观看十八禁| 男人天堂毛片| 在现视频女上位好爽| 综合色欧美| 8050午夜少妇无码| 91操熟女视频| 在线97在线| 久久青青草在线视频| 亚洲精品色| 另类视频在线| 日韩成人大片在线观看| 欧美A√综合网 | 黄色av网站在线播放| 夜夜爽爽爽| 日本 情色 1区| 黄色十八禁| 免费A片三p视频| 国产精品女生av| 久久超碰国产一区二区三区| 国产美女在线精品免费看| 亚洲成人ab| 激情第四色| 婷婷丁香五月天亚洲天堂网| 久久欧美性爱视频| 91狠婷| 五月天激情网站| 午夜性生活av免费在线看| 欧美嗯啊……在线观看视频免费| 大伊香蕉在线视频免费| 射丝袜高跟鞋99| 男人的天堂99| 男人天堂久久日韩| 国产精品无码av| 亚洲性综合11| 97视频620| 人妻一区视频| 日韩大香蕉AV影片| 欧美一区二区三区大综合| 国产探花日韩援交| 亚洲精品丝袜-不卡成人免费……| 九99久久| 亚洲夜夜欢无码一区二区| 中文字幕三四区| 天天干夜夜| 欧美九9 9 9| 屁股久久久久久久| 亚洲熟女一区二区| 97se综合网| 中文一区在线视频| 碰碰97| 欧美色日本| 992视频一区| 蜜臀99久久国产| 久久久久久久97| wwwcaobibi| 欧美强奸乱| 神马精品视频| 亚洲资源站| 粉嫩av一区二区三区四季| 精品白丝一区| 五月激情综合网| 三男一女不戴套的A片| 日韩精品人妻中文字有码在线| 中文字幕一区av| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 99热网站| 91综合在线| 乱伦图av| 97资源站国产精品| 沈阳熟女高潮对白视频| 精品一区二区三区四区女| 色五月综合网| 成人免费福利网站国产| 国产美女在线精品免费看| 亚洲另类综合欧美| 啊a一区在线| 天天看高清麻豆| 92大香蕉| 亚洲熟女性高潮久久久| 久久女人一区二区三区| 怡春苑东京热| 人人么人人操| 五月婷色| 嗯嗯啊啊日韩精品| 伊人专区一区二区三区| 99自拍视频在线| 国产精品高潮久久AV| 大香蕉综合网| 婷婷伊人网| 性爱久久| 亚洲中文字幕熟女少妇一区二区| 九九九九88| 日韩国产乱子伦App| 1000部熟女视频在线观看| 极品久久久久久久久久久久久久| 欧美亚洲韩国视频十五区| 啪啪自拍九九综合| 日本精品一区三区| 传媒在线观看一区二区三区| 激情综合网五月婷婷五月天| 老汉网| 夜夜骑夜夜操| 国产有码一区| 亚洲中文字幕熟女| 欧美黄片欧美黄片xxx| 69综合网| 亚洲另类小说卡通动漫| 国产av热热色| 91人妻素女| 日日干日日操五月天伦理视频| 三四中文字幕| 欧美熟妇视频| 一个国产在线综合网站| 精品国产少妇高潮视频| 97色97干| 久久久久久中文版| 国产欧美岛国精品一区| 在线中文AV| 粉嫩av在线一区二区| 综合视频91| 亚洲操逼无码| 97伊人超碰| 美女写真| 亚洲情色视频| 天天日少妇逼AV| 日韩精品99999| 国产丝袜美女诱惑| 久九9精品| 久久久久久99AV无码免费网站| 国产人妻精品久久久一区二区三区 | 高凊专区人人操| 亚洲国产成人7777| 激情情色五月天| 天天综合精品| 亚洲最新中文字幕免费| 日韩有码中文字幕女同性恋| 日夜久久久九九九久| 久久专区| 超碰在线1234区| 婷婷激情综合网| yazhousetuoumei| 欧美色图私拍91| 日韩精品在线放| 97视频新免费| 四虎AV无码| 6080YYY午夜理论片在线观看| 极品色www影院| 免费人成毛片乱码| 亚州欧美在线| 9ⅰ久久久天天| 亚洲免费精品一区| 婷婷丁香五月综合| 国产精点久久久成人| 欧美色爱综合| 日韩丝袜高跟制服在线观看| 五月天丁香欧洲日韩| 欧美性爱一级操| 大香蕉人妻久久| 操碰91| 思思热一热婷婷热一热| 日韩一级片在线看| 天天操熟妇| 人人爽夜夜操| 欧美亚洲国产自久久| 色99视频| 男人天堂2019亚洲| 色婷婷电影网| 无码操逼网| 超碰97伊人| 插插综合网天天影视网| 欧美97se| 91爱| 91视频综合网| 97爱爱官网| 亚洲国产成人精品久久久国产成人一区二区| 啊啊啊啊一区| 97任你吞精| 家庭乱伦网站国产| 性爱av网站| 久久精视频美日韩在线视频| 亚洲国产一区二区三区四区国产| 一区二区三区精品视频| 91精品久久久久久久久久| 天天摸夜夜摸| 人妻密肉在线观看| 亚洲视频二区 | 欧美日本视频一区| 亚洲素人综合| 亚洲情色 无码专区| AV女资源| 秋霞一级A片黄色视频| 天天艹天天日| 久久亚洲国产成人| 欧美一区二区三区日韩| 亚洲.欧美.丝袜.中文.综合| 插入逼91| 啊啊啊啊啊啊在线| 99日视频在线免费| 日韩肏逼视频| 国产色精品午夜大片| 色色国产| 少妇内射www在线观看视频| com 首页 18岁 禁区 女优 免费 精选 同城 | 五月婷婷六月天| 丰满少妇人妻久久久久久| 精品一区二区三区四区女| 伊人久久亚洲色欲综合网站 | 亚洲。日韩。欧美| 肉丝中文无码高清| 日韩福利综合一区| 欧洲色| 成人精品电影| 国语精品av| 91天天综合| 色噜噜人妻丝袜a∨先锋影| 蜜桃久久久久久| 人妻少妇无码| 97精品一区二区视频| 亚洲制服欧美另类内射| 亚洲日本天堂| 久久精品国产亚洲5555| 无码乱人伦中文视频| 九九热超碰97亚洲最新香蕉| 欧美日韩久久精品爱爱| 五月婷婷丁香中文字幕| 国产精品熟女AV中文字幕在线播放| 日韩欧美综合激情| 欧美日韩精品久久久久久久久东北老熟妇| 中亚精品极乱| 欧美日韩色| 国产成人在线观看综合| 97久久国产精品| 大学生美女口爆| 天天综合网日韩7799| 丝袜美腿诱惑亚洲欧美视频在线观看| 国产91专区| 逼逼逼逼操操操操操操操操操午夜剧场| 欧美三级不卡| 亚洲最新Av| 97久久久久久久精| 一道α片欧美| 91久久18禁| 2017人人操,人人摸| 久久做97| 国产成人 综合亚洲 天堂| 欧美日韩人人精品| 亚洲天堂一区二区久久| 亚洲色悠悠久久88| 国产精品亚洲一区二区三区四区| 欧美少妇一区二区三区| 最新av中文字幕高清| 蜜桃视频一区二区三区在线观看| 最新av网站在线观看| 99国产天美| 26UUU欧美激情一区二区| 夜夜骑操视频| 久久成人国产| 天天干18禁| 亚洲午夜免费狠狠干| 亚洲高清视频在线免费观看| 盗摄 精品 另类 一区| 中文字幕视频二区| 色色综合97| 丰满人妻一区二区三区大胸懂色| 伊人大香蕉在线| 国产成人91一区二区三区| 亚洲性网| 天天草AV| 欧美激情一区二区| 久久激情视频| 精品一级毛片在线观看| 久久久久久久久久精| 色五月婷婷中文字幕| 东北熟女91| 精品四五区| 欧美日韩操逼动图| 日韩综合97p| 福利天堂| 五月丁香啪啪啪| 欧美,亚洲,日韩,v,天堂,手机在线观看| 国产亚洲日韩在线三区黑人| 91美女在线观看| 丝袜美腿91| 日韩精品99久久久久久中文字幕 | 69精品少妇一区二区三区蜜桃| 久久六六| 欧美日韩97| 97中文综合| 蜜桃久久综合视频| 大吊色| 色色九区| 国产精品色哟哟| 加勒比无码一区二区三区| 偷拍自拍在线视频观看| 亚洲成aⅴ人片不卡无码| 日韩小电影| 中字一区| 色综合1991| 欧美精品,四区。五区| 日韩一区二区精品视频| 无码99| 性爱综合网| 综合网亚洲1| 夜夜夜久久| 天天看人人操屄犊摸阴| 亚欧免费| 2017大香蕉国产精品久久| 91久操| 乱精品一区字幕二区| 日本一级婬片试看三分钟| 97在线免费看视频| 哈哈操电影| 久久国语| 9999亚洲电影| 欧美日韩亚洲国产中文永久天天看| 欧亚揄拍偷拍精品视频| 欧美人人天天网| 综合亚洲网| 欧美激色| 老熟女91视频| 爱爱动态60秒| 亚洲精品天堂久久A∨51成人漫| 精品无码欧美三级| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 亚洲最大网站av| 无码自拍SM| 日本大片日本一区二区免费高清| 婷婷色婷婷| 刺激性视频黄页| 啊啊啊啊嗯嗯嗯用力好爽| 97色在线观看| 国产人妻精品一区二区三区秋霞| 色色婷婷五月天| 日韩99神马视频播放片在线播放| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 狠狠躁天天躁日日躁97| xxx亚洲午夜天堂| 久久爱97| 在线视频一区二区传媒| 国产无马视频| 99热在线观看| 伊人久久艹| 亚洲欧美精品久| 欧美亚洲小说| 欧美性生活综合| 久久一二三四五六七八九区区| 91中文字幕在线观看| 欧美性高潮在线| 国产熟女完整版中字 | 色综合婷婷| 看看小穴| 99re95| 久久91| 国产精品青草综合久久| 久久夜色一区二区| 国产区在线| 日韩成人大片在线观看| 麻豆国产av网| 色色毛片| 99re不伦| 午夜性刺激视频免费观看| 全免费a敌肛交毛片免费| 熟女自慰久久久| 色偷偷超碰亚洲| 久久精品黄色| 久久欧美按摩999| 性猛交| 婷婷伊人网| 51一区二区三区| 人人做人人妻人人夜视频| 伦理弟一页| av影片在线观看不卡| 不卡啪啪视频| 亚洲系列欧美| www色色色com| 亚洲av青草久久一区二区| 日本人人操人人操| 少妇特黄一区二区三区| 伊人网青青| 亚洲怡春院| 久久久97| 国产版a级片直播在线| 国产欧美黑人丰满在线| 亚洲精品久久久久久久蜜桃臀| 手机在线免费看的av| 中文字幕在线播放2中文字幕在线观看2| 久久精品国产亚洲粉嫩| 偷拍网站久久男女男| 亚洲有薄码区久久在线一区| 日本特黄f c2| 99re国产精品视频| 东京热男人天堂| 狠狠搞 亚洲91| 国产隔壁老王影院在线| 97在线播放 | 精品四五区| 自拍视频一区在线观看| 俺也射| 99爱久久视频频| 亚洲欧洲色情高清| 日韩欧美字幕亚洲一区二区| 2018色综合天天操| 9999九九九久久久| 天天欧美| 深夜国产福利| 久久男人精品| 日本操逼视频导航| 熟女熟妇一区二区三四区| 亚洲综合中文字幕有码| 欧美亚洲中文字幕| 欧美视频激情久久久久久| 自拍视频一区在线观看| 大香蕉伊人网WWWn0n| 一本精品日本在线视频精品| 欧美后入式| 中文幕97| 色婷婷成人综合| 日韩精品一区二区高清| 色综合91好| 中文伊人大香蕉视频| 97欧美日韩| 国产精品白丝www| 人人操人人爽人人操人人| 美性中文综合网| 六月丁香五月婷婷| 综合欧美日本三级| 蜜臀视频网站| 9999免费精彩视频| 久久这里是精品| 麻豆熟妇乱妇熟色A片在线看| 欧美黑人日韩少妇色情| 熟女AV一区| 亚洲精品欧洲精品| 国产精品天干天干综合网麻豆| 人妻日日夜夜精品| 国产不卡免费在线视频| 色九九久九九| 99热销国产这里有精品| 老熟乱一区二区三区四区| 少妇特黄一区二区三区| 熟妇高潮二区三区| nuu12国产麻豆精品| 亚洲色交| 久久久久久久久久9| 97超碰免费生活| 丝袜喷水在线| 亚洲涩涩| 好爽视频在线观看| 国产精品久久久无码aV去| 国产久久成人| 18禁无码永久免费无限制| 熟妇色99| 欧美综合第一页| 一区二区中文| 天天爽夜夜爽夜夜爽精| 亚洲中文字幕久久人妻| 极品极品色影院| 91在线视频免费播放| 国产AV超爽| 免费看毛片操穴| 韩国女主播青草在线| 亚洲九九视频在线观看| 久久久国产三级黄色片| 亚洲精品一区中文字幕乱码| 熟妇亚洲一区二区三区| 天天天操天天天爱| 国产真实子伦对白| 亚洲Av无码成人精品国产| 久久久久亚洲av综合波多野制衣| 六月婷婷综合| 成人热久久精品| 久久二| 天天草夜夜草高潮片| 思思热在线视频精品| 自拍视频大全亚洲专媒视频/一区二区三区| 吉川爱美亚洲二区在线 | 粉嫩av一区二区三区四季| 精品女同一区二区三区| 日本三级网页| 水野优香在线观看| 国产成人啪一区二区| 欧美在线大香蕉| 好看的91视频| 亚洲黄色电影| 曰韩无码777| 97丝袜亚洲在线播放| 91在线视频国产网站| 操b在线观看| 亚洲va综合va国产va中文| 久久久久久久精| 亚洲精品国产精品成人| 91色人妻| 国产精品女aA片爽爽视频| 男人亚洲天堂| 美女诱惑1区2区| 97色色色综合网站| www亚洲免费| 人妻超碰青青草98| 亚洲伊人久久精品狠狠在线| 美女黄网| 婷婷久久久| 日韩视频小说在线观看| 97资源站国产精品| 色婷五月| 丝袜天堂网| 国产精品无码久久久久2025| 色色综合97| 91精品久久久| AV天天在线观看| 99热在线播放| 久久双插| 暴力av在线| 欧美久久久15P| 97AV在线免费观看| 亚洲成人黄色在线观看| 91啪9色| 国产美女裸体秘 永久无遮挡| 日韩中文字幕2020| gogogo免费高清看中国国语| 97日视频| 亚洲宅男天堂| 久久久久亚洲熟妇熟女| silk lablo在线观看一区二区| 天天日天天搞天天干| 久久久久久久久久久人妻| 99久久久无码国产精品性啊聊| 亚洲图片 激情小说| 午夜免费福利视频一区| 情色图区| 亚洲丁香花色| 日本激情免费大片| 国产精品一区二区三区免费视频| 日本一区二区三区欧美日韩中文字幕| 天天日天天干天天色| 青青青草伊人精品| 日本三级小说中文字幕| 婷婷五月天av| 9l视频自拍9l九色成人| AV一起草在线| 国产强奸AV在线| 婷婷色综合欧美日韩| 久久精品成人一区二区三区蜜臀| 亚州情色j区| A片 AV一级在线播放观看免费| 日本色色视频网站| 亚洲国产第一页综合视频| 激情接吻视频久久久久久| 久久婷婷电影网| 嗯嗯啊啊操我| 亚洲色图欧美一区二区不卡| 久久久熟女一区| 少妇99成人麻豆| 九九久久首页| 激情综合网激情五月天| 超碰调教97| 超碰国产情侣自拍网| 熟妇视频一区二区三区在线观看| 婷婷色色五月| 国产又爽又黄| 盗摄女人妻在线| 国产日韩在线播放| 99色| 久久超碰97中文字幕| 大鸡吧尹人在线| 久久做97| 九九九精品色乱九九九| 日韩电影中文字幕| 婷婷久草| 91碰碰| 91精品国产91久久久久久久久久久久| 91色夜| 啊嗯嗯啊好大好爽| 亚洲天在线| 男女啪啪啪18禁网站| 91精片| 人妻一区视频| 三级日韩一区二区三区| 青青草好吊色| 91大神精品长腿在线观看网站| 天天网综合| 校园春色家庭伦理欧美激情| 欧美碰碰综合色| a亚洲欧美色欲| 亚洲精品白浆高清久久久久久| 久久成人午夜精品影院| 亚洲欧洲小说图片视频| 色偷综合| 97无码视频在线播放| 黄片在线免费在线观看| 亚洲射综合网| 一二三区精品视频| 婷婷中文网| 欧美一二三区四五区| 亚洲资源网| 久久综合九色综合欧洲98| 999岛国大片| 精品视频97| v91av| 成人片在线播放| 日本天堂网| 四虎精品一区二区| 日本片日本片祼观看网站在线看中文版网页在线看 | 欧美色日本| 插入逼91| 在线播放成人网站| 人人妻天天做天天爽| 在线观看高清AV| 人妻天天操天天爽视频免费| 东京热,男人的天堂| 成人性爱高清视频免费看| 久久久久久波多野吉衣高潮| 精品国产av一区二区三区四区入口| 日韩乱伦AⅤ| 亚洲欧洲视频小说在线观看| 丰满人妻一区二区三区蜜桃视频| 亚洲精品男人的天堂| 久久精品老司| 欧美色亚洲| 国产尹人在线视频免费| 亚洲不卡一| 少妇久久久久| 久久手机视直播| 伊人网免费视频| 97干天天| 天天干人人干天天日97| 午夜福利在线合集| 99这里只有精品国产| 性爱AV天堂| 首页中文字幕中文字幕免费| 99视频自拍区| 久久9视频| dy888午夜老子影视达达兔| 亚洲操逼网| 久久久四区| 加勒比大香蕉视频在线| 久久AV无码AV| 麻豆天美AV传媒第一页| 欧美夜夜狠| 7777奇米影视久久| 天天欲望网| 天天操综合网| 中日韓欧美高清| 二级久久网| 欧美一级做a爰片免费视频| 日韩超碰97| 粉嫩小泬久久久一区二区| 五月丁香成人网| 97国产精品国| 五月婷婷丁香| 亚洲色系另类精品国产| 亚洲丝袜少妇在线| 欧美一级国产一级| 欧美激情精品久久久久久| 丰满人妻一区二区三区在线| 日韩强奸av| 玖玖综合网| 欧美性爱一区二区三区四区| 亚洲干B| 成人一区二区三区四区| 91色女| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 欧美的性爱网站免费| 亚洲黄色电影| 97硬碰| 综合婷婷| 96久久精品一二三区色欲| 亚洲欧洲综合av在线| yiqicaoav| 免费视频97| 黄久久| 日韩av情韩国爱禁区av一区二区| 九九伊人网| 午夜无码精品免费看性色| 日韩免费高清大片在线| 人人人干干人人干| 国产精品人妻无码久久久老鸭窝| 国产综合久久久麻桃个 | 天天亚洲| 91天天综合日韩欧美| 这里只有精品97| 99re欧美| 福利视频香蕉免费一区二区在线| 精品人妻一区二区三区四区| 91精品在线播放| 欧美日韩中文字幕不卡| 成人一区二区三区四区| 亚洲精品丝袜-不卡成人免费……| 亚洲夜夜欢无码一区二区| 欧美日韩国产高清在线一二三区| 国产自产自拍| 婷婷色五月激情| 五月丁香在线| 日韩av影片在线观看| ?亚洲伊人伊成久久人综合网| 亚洲精品三| 亚洲男人天堂2019| 91撸色网 玖玖网 欧美| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 日韩精品高清资源在线| 天天舔九色婷婷| 欧美极品色| 啊啊啊啊啊好多水| 国产精品点击进入在线影院| 青娱乐久久艹| 亚洲激情在线观看一区| 91精品无码人妻系列| 亚洲激情网一二三四区| 亚洲影视综合网| 亚洲中文字幕乱码无码一区二区 | 青操影院| 久久精品国产亚洲AV清纯| 日日噜噜夜夜狠狠视频无| 国产激情久久久| 天天爽天天操| 北京专精特新企业招聘信息| 中文字幕精品久久久久人妻红杏ⅰ| 老司机福利社视频在线观看| 欧洲在线性爱视频| 最新日日夜夜天天干干| 亚洲国产成人精品无码专区| 99操逼| 欧美性生活综合| 亚洲激情AV| 国产丝袜视频| 精品少妇人妻一区二区三区| 日日干天天干夜夜爽| 国产成年免费大片黄在线观看| 九九碰九九爱97超| 欧美日韩大香蕉| 黄片在线免费在线观看| 亚洲 欧美都市激情| www.人人cao| 人妻超碰青青草98| 欧美熟妇色| 一级做受视频免费是看美女| 日韩少妇无码| 美国一区二区三区视频| 久久內射| 亚洲一区二区三区在线激情| 亚洲精品成人激情在线| 久久综合18p| 插B在线观看| 国产亲戚伦亲在线| 高清不卡视频| 国产区日韩区在线观看| 色999人与兽| 免费99精品国产自在在线| 婷婷超| 青青草日逼视频| 91美女视频直播| 99久久久er直播网址| 97最新在线播放视频| 天天看综合网| 欧美日韩妖精91com| 欧美另类综合久久| 欧美曰韩国产精品| 操逼1区| 亚洲吊色| 极品白嫩美女白浆成人福利在线看| 噜噜噜在线视频| 欧美亚洲激情| 婷婷五月色| 国产高清在线自在拍69| 麻豆国产97在线| 免费看一级a性色生活片久久无| 欧美日韩大陆黑人少妇99| 夜夜草我| 97超碰亚洲| 人人艹亚洲| 极品五月天噜噜| 99无码狠狠久久| 麻豆天美国美国产AV| 精品在线78| 蜜臀亚洲中文| 日本高清视频xxxx| 我中文字幕6区 | 久草看看看| 无遮挡又黄又刺激的视频| 91暧暧| 大香蕉99999| 亚洲欧美中日韩| 91九九九吃| A片 AV一级在线播放观看免费| 精品夜夜澡人妻无码AV| 五月天激情小说| 色牛aV| 亚洲第一色页夜| 一级性爱视频免费观看 | 麻豆 欧美 日韩| 极品综合| 啊啊啊啊啊舒服| 夂久色| 久久一级无码精品毛片6| 青草精品视频日本久久久久网站在线| 久久色人体 | 九九在线视频| 欧美色偷偷| 91视频女生| www色色com| 蜜区区视频79 | 26uuu国产成人综合| 久操免费在线| 亚洲人成色9999精品久久| 性久久| 区二区亚洲婷| 在线人人人人人人精品超| 91伊人| 伊人操操| 高跟伊人julia ann| 欧美人与性动交a美精品| 欧美天天搞| 精品一区二区三区18| 99蜜桃臀久久久欧美精品网站| 久久这里都是精品| 黄骗免费| 国产高清无码一区三区二区| 亚洲人妻在线精品| 密乳视频在线| 啊啊啊啊网站| 天堂成人网| 97超级久久| 校园春色欧美| 67914在线兔费成人视频| 黄色片G G G| 精品美女少妇一区二区三区| 爱欲AV| 91九九九小逼| 啊啊啊好爽快点啊啊啊嗯嗯| 精品成人动漫一区二区| 精品人妻av在线播放| 精品人体无圣光凹凸| 国内三级自拍小视频在线观看| 中文字幕高清精品一区| 国产探花日韩援交| 中文精品一区二去| 女性91网站| 麻豆久久一区二区三区| 麻豆天美传媒毛片| 尤物黄色在线观看网站| 18禁网站在线播放| 欧美精品久久久久久久丰满| 亚洲成a人片在线观看中文!!!| 自拍视频一区在线观看| 狠狠入| 在线色导航| 岛国AB视频| 最新国产亚洲精品精品国产亚洲综合| 18禁的网站在线| 婷婷性爱| 欧美三级免费伊人| 嗯嗯啊啊好疼| 日本 情色 1区2区3区| 超碰97人妻自拍| 色在线视频导航| 久久国产精品视频| 国产精品永久免费10000| 天堂无码精品国产久| 久久这里只精品99re66图| 久草免费在线一区二区| 久久久久日本视| 中文字幕精品人妻丝袜| 九九九九九九九九九九九蜜桃| 日日夜夜精品视频| www.色婷婷色综合| 自拍视频大全亚洲专媒视频/一区二区三区| 国产一区二区久久| 日韩无码人妻中字久久三区四区| 亚洲综合在线第一页| 久久久久久国产无码精品| 青青青操| 欧美AB在线| 2020国产精品| 嗯嗯啊好大| 大香蕉综合网| 99久久99久久综合| 嗯嗯啊啊好疼| 男人午夜天堂| 99无码精品| 久男人久久| 91人妻中文| AV中文字幕剧情1区2区3| 99夜夜操| 人妻精品一区二区在线| 无码操逼天堂| 免费的很黄很污的全部视频| 女同性恋一区二区三区精品视频| 很狠操| 免费一级a毛片久久久久久鸭绿欲 国产精品亚洲天堂网址 | 日韩一级欧美一级国产一级台湾| 亚洲图片 91| 国产欧美日本亚洲精品| 国产1769在线| 日日骚av| 久久黄色网址| 久久久人妻| 中文字幕啊啊啊在线观看视频| 国产精品一区二区在钱播放| 岛国片在线播放| 污电影在线观看| 8050无码八戒| aV中文麻| 六月丁香久久| 日本1区2区不卡视频| 97综合国产精品高潮久久| 中文色综合| 久艹视频在线| 日韩精品9999| 亚洲国产成人精品无码专区| 东京热av男人的天堂| 欧美专区日本专区| 熟妇女伦乱视频视频| 大香蕉亚洲中文| 三级特黄60分钟播放| 另类图片五月天| 欧美久久九九| 日本视频在线观看污污污| 欧美写真视频一区| 亚州色阁| 亚洲高潮少妇| 中文字幕jul-617人妻熟女| 亚洲脚交| av在线人气| 人人摸人人叼| 亚洲欧美色图小说| 殴美性天天| 欧美一区二区三区成人性生活| a久久| 色色色色网站| 精品午夜福利国产一区二区在线观看| 这里只有97精品| 欧美精品久久| 九九九九88| 天天综合精品| 黄色视频特级毛片| 久久男人精品| 日本东京热加勒比久久| 青青草久草| 怡红院成人视频| 97精品一区| 天天α片| 国产后入精品| 99爱在线视频| 日本 欧美 国产一区| 操逼操网| 国产www色在线观看| 天天综合网在线观看| 午夜操一操| 久久久一区二区三区麻豆| 日韩在线人妻网站| 久日综合网| 久久精品天美| www.一本大99| 69视频福利导航| 天天操人人操骚逼网站| 天天弄欧美| 精品人妻视频一区二区三区蜜桃视频| ,国产乱人伦精品一区二区三区| 色爱综合网| 六月丁香五月婷婷| 中文啪啪视频| 2019AV天堂| 蜜臀99999| 午夜精品久久久99| 手机久操欧美综合色码| 亚洲情色五月天| 国产传媒1234区| 无码人妻精品一区二区三区九九| 一个人在线看的黄色电影网站| 操逼网站视频漫画国产| 大香蕉九九| 97在线国产精品| 国产精品亚洲四五区在线观看| 97碰碰日本乱偷人妻中文的| 日本五区不卡| 久久啊啊啊| AAAAAAAAA黄片| 91五月天| 午夜天天碰综合视频| 久久久久久久久久久999| 东京成人一区| 欧美草草| 亚洲无码太久| 一区二区三区精品黑丝白丝酒店对鸡| 亚洲 se图 欧美电影| 热热色综合网| 亚洲密乳AV| 无码免费一区二区三区啪啪| 爱爱久久| 青青草国产欧美非洲黑人| 93人人操人人| 人人综合| 久久国产精品m码| 免费精品中文字幕| 国产视频一区二区在线| 爱爱动态试试看6 0秒| 国产精品乱码久久久| 国产粉嫩出水在线播放| 婷婷色香| 久热热| 久久人人爽人人爽人人片Ⅴ| 综合久欧洲| 久久久久亚洲Av无码专区老牛影视| 120分钟婬片免费看| 日韩久久超碰色| 试看60秒 爽| 9久久精品| 怡红院网站在线视频| 中国一区二区亚洲人妻| 大香蕉综合久久| 国产强奸乱伦欧美| 天天综合有色网| 国产品精品自在在线午夜免费| 97欧美性爱| 蜜桃臀av一区二区| 日韩九区| 97亚洲中文| 偷拍亚洲高清图片| 亚洲av国产av综合av卡| 无码人妻丰满熟妇奶水区毛片| 99热一区二区三区四区| 狠狠色综合网| 男人的天堂va在线| 天堂在线一区二区| 自拍视频一区在线观看| 久久9精品网站| 翘臀vidoes| 97中文综合| 99色热| 亚洲精品乱码线路中文字幕| 中文字幕第23区| 五月丁香色色网| 久久久久夜夜夜夜| 日欧美色| 精品国产一区二区三区四区在线看| 欧美亚洲AN| 欧亚免费视频| 四虎免费在线播放| 伊人久久88国产女| 日韩人妻有码免费视频| 亚洲AV色图一区| 18禁中文字幕| 国产视频第2页| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 男人的天堂VA| 99久久综合| 91日本在线观看| 国产视频一区二区三区在线免费观看| 热热色AV| 婷婷国产精品九区| 99热综合| 午夜福利精品| 97久久久网站| 67194无码不卡| 激情婷婷丁香| 亚洲精品亚洲人成在线麻豆| 国产传媒日韩| 亚洲av总站| 女人妻一区| 成人av动漫在线观看| 18啪啪手机免费性爱| 久久中文字幕人妻熟av女蜜柚| 老女人碰碰在线碰碰视频| 92福利社视频| 免费伦费视频在线观看| 思思热在线视频免费| 96久久久久| 亚洲 欧美 日本 国内 首页| www.夜夜操| av凤凰久久久| 99久久e免费热视| 九色视频91| 日韩欧美经典在线观看| 欧美成人一区二区三区在线播放| 一区二区三区精品视频| 久草国产在线视频| 亚洲最新中文字幕免费| 中文字幕AV乱伦| 国产亚洲欧美每日在线| 亚洲欧美国产成人综合不卡| 摸奶性爱视频网站在线免费播放| 人人操人人摸人人骑| 午夜精品久久999热蜜桃介男人用| 久久綜合很很很| 日欧毛片久久| 久久久久久波多野吉衣高潮| 国产第11页| 97综合国产精品高潮久久| 天堂精品在线| 禁十八久久| 亚洲精品 欧美精品| 欧亚韩国999| 亚洲影视第一页| 97伊人网| 亚洲色婷婷久久91| 免费无码国产精品v片在线观看| 免费人成毛片乱码| 蜜乳AV色欲AVAV无码| 九一屌逼| 亚洲成人妻日韩在线| 全国男人天堂网| 黄片www视频免费| 日本操逼aaaaa| 亚洲天堂区| 999 久久久| 亚州欧美另类| 久久春色| 黄色人人| **一级毛片国产| 91麻豆天美国产| 九九热午夜欧亚国产视频| 玖色AV| 日比av无码| 亚洲色欲天天天堂色欲网女| 天天综合网站| 日日日骚女人精品| 久久人妻| 亚洲一区中文字幕一区| 青青草久草AV| 四虎国产精品永久在线囯在线| 欧美一区二区福利在线| 日韩激情啪啪| 情侣开房子拍 日韩无码 女的很漂亮| 日本中文字幕一区| A级在线视频| 欧美 亚洲 制服 精品| 国产精品丝袜在线| 中文字幕av乱伦| 亚洲脚交| 亚洲一区二区三区春色| 一区二区三区视频| 国产九九九九九九| 无码外流操逼视频| 亚洲射综合网| 国产精品不卡一区二区三区av| 99ri在线视频|