在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于LockAI視覺識別模塊:C++圖像采集例程

福州市凌睿智捷電子有限公司 ? 2025-04-30 18:23 ? 次閱讀

本文主要演示如何使用LockAI視覺識別模塊進行視頻流的讀取,同時使用Edit模塊進行圖像傳輸。

例程源代碼地址:https://gitee.com/LockzhinerAI/LockzhinerVisionModule/tree/master/Cpp_example/A01_capture


1. 基礎知識講解

1.1 OpenCV簡介

OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺庫,提供豐富的圖像處理和視頻捕獲功能。通過其VideoCapture類,開發者可以輕松調用攝像頭設備并獲取視頻流。

1.2 VideoCapture模塊

cv::VideoCapture是OpenCV中用于管理視頻輸入的核心類,支持從攝像頭、視頻文件或網絡流讀取幀。常用功能包括:

設備初始化與參數設置(分辨率、幀率)

逐幀捕獲圖像

資源釋放管理


2. API文檔

2.1 cv::VideoCapture類

2.1.1 cv::VideoCapture類依賴頭文件

#include

2.1.2 初始化攝像頭

cv::VideoCapturecap;

功能:創建攝像頭管理對象

說明:該對象用于后續所有攝像頭操作,未調用open()前不占用硬件資源

2.1.3 設置攝像頭分辨率

cap.set(cv::CAP_PROP_FRAME_WIDTH,width);
cap.set(cv::CAP_PROP_FRAME_HEIGHT,height);

參數

cv::CAP_PROP_FRAME_WIDTH: 幀寬度(像素)

cv::CAP_PROP_FRAME_HEIGHT: 幀高度(像素)

分辨率對照表:根據攝像頭的分辨率和幀率,選擇合適的分辨率和幀率。以下為常見分辨率與幀率對照表

攝像頭分辨率(4:3)FPS
480x36025
640x48025
960x72014
1280x96013
1920x144013
攝像頭分辨率(16:9)FPS
480x27025
640x36025
960x54025
1280x72015
1920x108012

2.1.4 打開攝像頭設備

cap.open(0);

參數:0表示默認攝像頭設備,也可以指定其他設備編號

返回值:成功打開返回true,否則返回false

2.1.5 讀取視頻幀

cap>>frame;

說明:讀取下一幀圖像,如果當前幀為空,則返回false


2.2 lockzhiner_vision_module::Edit類

2.2.1 依賴頭文件

#include

2.2.2 初始化模塊

Editedit;

說明:創建Edit對象,用于后續圖像傳輸操作

2.2.3 建立連接

edit.StartAndAcceptConnection();

參數:無

返回值:成功建立連接返回true,否則返回false

2.2.4 圖像傳輸

edit.Print(frame);

參數:cv::Mat對象,表示圖像幀

返回值:無


3. 綜合代碼解析

3.1 基礎攝像頭讀取

3.1.1 流程圖

2ae58c4e-25ad-11f0-9434-92fbcf53809c.png

3.1.2 代碼解析

初始化攝像頭

cv::VideoCapturecap;
constintwidth=640;
constintheight=480;
cap.set(cv::CAP_PROP_FRAME_WIDTH,width);
cap.set(cv::CAP_PROP_FRAME_HEIGHT,height);

逐幀捕獲圖像

while(true) {
cv::Matframe;
cap>>frame;
if(frame.empty()) {
std::cerr<<"Warning: Couldn't read a frame from the camera."
<<std::endl;
continue;
}
}

3.1.3 完整代碼實現

#include
#include

intmain() {
cv::VideoCapturecap;
cap.set(cv::CAP_PROP_FRAME_WIDTH,640);
cap.set(cv::CAP_PROP_FRAME_HEIGHT,480);

cap.open(0); // 參數0表示默認攝像頭設備
if(!cap.isOpened()) {
std::cerr<<"Error: Could not open camera."<<std::endl;
returnEXIT_FAILURE;
}

while(true) {
cv::Matframe;
cap>>frame;
if(frame.empty()) {
std::cerr<<"Warning: Couldn't read a frame from the camera."
<<std::endl;
continue;
}
}

cap.release();
return0;
}


3.2 攝像頭圖像傳輸

3.2.1 流程圖

2af99d4c-25ad-11f0-9434-92fbcf53809c.png

3.2.2 代碼解析

初始化攝像頭和Edit模塊

cv::VideoCapturecap;
constintwidth=640;
constintheight=480;
cap.set(cv::CAP_PROP_FRAME_WIDTH,width);
cap.set(cv::CAP_PROP_FRAME_HEIGHT,height);

lockzhiner_vision_module::Editedit;

建立連接

if(!edit.StartAndAcceptConnection()) {
std::cerr<<"Error: Failed to start and accept connection."<<std::endl;
returnEXIT_FAILURE;
}

逐幀捕獲圖像并傳輸

while(true) {
cv::Matframe;
cap>>frame;
if(frame.empty()) {
std::cerr<<"Warning: Couldn't read a frame from the camera."
<<std::endl;
continue;
}
edit.Print(frame);
}

3.2.3 完整代碼實現

#include
#include
#include

intmain()
{
// 初始化 edit 模塊
lockzhiner_vision_module::Editedit;
if(!edit.StartAndAcceptConnection())
{
std::cerr<<"Error: Failed to start and accept connection."<<std::endl;
returnEXIT_FAILURE;
}
std::cout<<"Device connected successfully."<<std::endl;

// 初始化攝像頭
cv::VideoCapturecap;
intwidth=640; // 設置攝像頭分辨率寬度
intheight=480;// 設置攝像頭分辨率高度
cap.set(cv::CAP_PROP_FRAME_WIDTH,width);
cap.set(cv::CAP_PROP_FRAME_HEIGHT,height);

// 打開攝像頭設備
cap.open(0);// 參數 0 表示默認攝像頭設備
if(!cap.isOpened())
{
std::cerr<<"Error: Could not open camera."<<std::endl;
returnEXIT_FAILURE;
}

// 主循環:讀取攝像頭幀并傳遞給 edit 模塊
while(true)
{
cv::Matframe;// 存儲每一幀圖像
cap>>frame; // 獲取新的一幀

// 檢查是否成功讀取幀
if(frame.empty())
{
std::cerr<<"Warning: Couldn't read a frame from the camera."
<<std::endl;
continue;
}

// 使用 edit 模塊處理幀
edit.Print(frame);
}

// 釋放攝像頭資源
cap.release();
return0;
}


4. 編譯過程

4.1 編譯環境搭建

請確保你已經按照開發環境搭建指南正確配置了開發環境。

同時以正確連接開發板。

4.2 Cmake介紹

# CMake最低版本要求
cmake_minimum_required(VERSION3.10)

project(test_capture)

set(CMAKE_CXX_STANDARD17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 定義項目根目錄路徑
set(PROJECT_ROOT_PATH"${CMAKE_CURRENT_SOURCE_DIR}/../..")
message("PROJECT_ROOT_PATH = "${PROJECT_ROOT_PATH})

include("${PROJECT_ROOT_PATH}/toolchains/arm-rockchip830-linux-uclibcgnueabihf.toolchain.cmake")

# 定義 OpenCV SDK 路徑
set(OpenCV_ROOT_PATH"${PROJECT_ROOT_PATH}/third_party/opencv-mobile-4.10.0-lockzhiner-vision-module")
set(OpenCV_DIR"${OpenCV_ROOT_PATH}/lib/cmake/opencv4")
find_package(OpenCV REQUIRED)
set(OPENCV_LIBRARIES"${OpenCV_LIBS}")
# 定義 LockzhinerVisionModule SDK 路徑
set(LockzhinerVisionModule_ROOT_PATH"${PROJECT_ROOT_PATH}/third_party/lockzhiner_vision_module_sdk")
set(LockzhinerVisionModule_DIR"${LockzhinerVisionModule_ROOT_PATH}/lib/cmake/lockzhiner_vision_module")
find_package(LockzhinerVisionModule REQUIRED)

# 配置攝像頭數據
add_executable(Test-Capture test_capture.cc)
target_include_directories(Test-Capture PRIVATE${LOCKZHINER_VISION_MODULE_INCLUDE_DIRS})
target_link_libraries(Test-Capture PRIVATE${OPENCV_LIBRARIES}${LOCKZHINER_VISION_MODULE_LIBRARIES})

install(
TARGETS Test-Capture
RUNTIME DESTINATION .
)

4.3 編譯項目

使用 Docker Destop 打開 LockzhinerVisionModule 容器并執行以下命令來編譯項目

# 進入Demo所在目錄
cd/LockzhinerVisionModuleWorkSpace/LockzhinerVisionModule/Cpp_example/A01_capture
# 創建編譯目錄
rm-rfbuild &&mkdirbuild &&cdbuild
# 配置交叉編譯工具鏈
exportTOOLCHAIN_ROOT_PATH="/LockzhinerVisionModuleWorkSpace/arm-rockchip830-linux-uclibcgnueabihf"
# 使用cmake配置項目
cmake ..
# 執行編譯項目
make-j8&&makeinstall

在執行完上述命令后,會在build目錄下生成可執行文件。


5. 例程運行示例

5.1 準備工作

下載凌智視覺模塊圖片傳輸助手:點擊下載

5.2 運行過程

在凌智視覺模塊中輸入以下命令:

chmod777Test_Capture
./Test_Capture

5.3 運行效果

2b071364-25ad-11f0-9434-92fbcf53809c.png


6. 總結

本文檔介紹了如何使用 LockAI 和 OpenCV 實現攝像頭模塊的視頻流讀取與圖像傳輸。核心步驟包括:

初始化攝像頭并設置分辨率;

打開攝像頭并逐幀捕獲圖像;

使用 Edit 模塊進行圖像傳輸。

注意事項

推薦使用640x480分辨率以平衡性能和畫質;

確保 Edit 模塊連接成功后再進行圖像傳輸;

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 圖像采集
    +關注

    關注

    2

    文章

    306

    瀏覽量

    41541
  • 視覺識別
    +關注

    關注

    3

    文章

    94

    瀏覽量

    16946
  • AI視覺
    +關注

    關注

    0

    文章

    77

    瀏覽量

    4681
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于LockAI視覺識別模塊C++圖像采集例程

    本文主要演示如何使用LockAI視覺識別模塊進行視頻流的讀取,同時使用Edit模塊進行圖像傳輸。
    發表于 04-30 10:52

    基于LockAI視覺識別模塊C++圖像的基本運算

    圖像處理中,理解圖像的基本操作是掌握計算機視覺技術的關鍵。本文章將介紹 基于LockAI視覺識別
    發表于 05-06 16:56

    基于LockAI視覺識別模塊C++使用圖像的統計信息

    圖像處理中,統計信息可以幫助我們了解圖像的特性,例如區域內的像素分布、顏色轉換以及特定區域的分析。本文將介紹基于LockAI視覺識別
    發表于 05-08 10:31

    [數字圖像處理與機器視覺:Visual C++與Matlab實現].張錚.

    ` 本帖最后由 explorer126 于 2014-8-10 23:03 編輯 三部分已經全部上傳完畢。下載的同學們可以完整下載了。數字圖像處理與機器視覺:Visual C++與Matlab實現].張錚.高清版本。已經全部
    發表于 08-08 16:50

    labview機器視覺 形狀識別,論壇第一帖

    通過Labview視覺與運動模塊實現物體幾何形狀識別。0、需要安裝的軟件labview2013、visa、視覺與運動模塊1、USB攝像頭進行
    發表于 06-07 15:20

    基于labview機器視覺圖像定位

    大家好,畢業設計做基于labview機器視覺圖像定位系統,打算調用筆記本的攝像頭進行圖像采集,再進行圖像處理,
    發表于 03-31 14:54

    數字圖像處理與機器視覺:Visual C++與Matlab實現

    數字圖像處理與機器視覺:Visual C++與Matlab實現
    發表于 04-01 13:58

    基于ZYNQ的機器視覺應用

    Artix-7架構可編程邏輯資源,提供雙目攝像頭接口,可以靈活接入視頻輸出模塊。工業機器視覺-雙目圖像采集處理實例實例功能使用Video In to AXI4-Stream IP核,將
    發表于 09-16 15:52

    人臉識別C/C++源代碼

    人臉識別C/C++源代碼 將生物特征識別應用于人臉,實際上是包含兩個方面:第一,從圖像或視頻幀中檢測人臉,即所謂的“人臉檢測”(face
    發表于 02-09 16:05 ?184次下載

    Visual C++數字圖像模式識別技術及工程實踐

    Visual C++數字圖像模式識別技術及工程實踐。
    發表于 11-06 10:08 ?3次下載

    機器視覺圖像采集卡:關鍵的圖像處理設備

    機器視覺圖像采集卡是一種用于采集和處理圖像數據的關鍵設備,它在現代工業生產和科學研究中起著至關重要的作用。本文將探討機器
    的頭像 發表于 02-22 16:23 ?687次閱讀
    機器<b class='flag-5'>視覺</b><b class='flag-5'>圖像</b><b class='flag-5'>采集</b>卡:關鍵的<b class='flag-5'>圖像</b>處理設備

    機器視覺圖像采集卡的功能與應用

    機器視覺技術廣泛應用于工業生產檢測、醫療、交通等領域助力實現自動化、智能化。整個機器視覺系統可分為圖像采集圖像處理兩大
    的頭像 發表于 04-04 08:33 ?1356次閱讀
    機器<b class='flag-5'>視覺</b>中<b class='flag-5'>圖像</b><b class='flag-5'>采集</b>卡的功能與應用

    圖像采集卡:增強視覺數據采集

    圖像采集卡介紹:在視覺數據采集領域,圖像采集卡在捕獲和處理來自各種來源的
    的頭像 發表于 09-24 11:06 ?536次閱讀
    <b class='flag-5'>圖像</b><b class='flag-5'>采集</b>卡:增強<b class='flag-5'>視覺</b>數據<b class='flag-5'>采集</b>

    基于LockAI視覺識別模塊C++圖像的基本運算

    圖像處理中,理解圖像的基本操作是掌握計算機視覺技術的關鍵。本文章將介紹基于LockAI視覺識別
    的頭像 發表于 05-06 16:20 ?47次閱讀
    基于<b class='flag-5'>LockAI</b><b class='flag-5'>視覺</b><b class='flag-5'>識別</b><b class='flag-5'>模塊</b>:<b class='flag-5'>C++</b><b class='flag-5'>圖像</b>的基本運算

    基于LockAI視覺識別模塊C++使用圖像的統計信息

    圖像處理中,統計信息可以幫助我們了解圖像的特性,例如區域內的像素分布、顏色轉換以及特定區域的分析。本文將介紹基于LockAI視覺識別
    的頭像 發表于 05-08 10:09 ?61次閱讀
    基于<b class='flag-5'>LockAI</b><b class='flag-5'>視覺</b><b class='flag-5'>識別</b><b class='flag-5'>模塊</b>:<b class='flag-5'>C++</b>使用<b class='flag-5'>圖像</b>的統計信息
    主站蜘蛛池模板: 天天干狠狠| 亚洲欧美婷婷 | 美女拍拍拍爽爽爽爽爽爽 | 性视频网| 中文字幕777 | 永久免费mv网站入口 | 色中色综合网 | 久久久噜噜噜久久网 | 中文字幕123区 | 中文字幕一区二区三区精品 | 国产毛片毛片精品天天看 | 丁香五月缴情在线 | 中国女人a毛片免费全部播放 | 色我网站 | 亚洲无线码一区在线观看 | 亚洲网站在线看 | 久久午夜影院 | 秋霞麻豆| 亚洲你懂的 | 在线看黄网站 | 欧美日韩一区二区视频图片 | 六月色婷婷 | 九九re | 国产午夜精品福利久久 | 国模沟沟一区二区三区 | 色99色| 五月婷婷网站 | 欧美涩色 | 久久夜色精品国产尤物 | 伊人久久亚洲综合 | 大尺度很肉污的古代小说 | 国产在线视频h | 欧美成人26uuu欧美毛片 | 四虎影视在线观看 | 激情综合色五月丁香六月亚洲 | 在线播放一区二区三区 | 国产无套视频在线观看香蕉 | 啪啪网站免费 | 免费网站日本永久免费观看 | 成人夜夜嗨 | 韩毛片|