女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內(nèi)不再提示

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

福州市凌睿智捷電子有限公司 ? 2025-04-30 18:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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


1. 基礎(chǔ)知識講解

1.1 OpenCV簡介

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

1.2 VideoCapture模塊

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

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

逐幀捕獲圖像

資源釋放管理


2. API文檔

2.1 cv::VideoCapture類

2.1.1 cv::VideoCapture類依賴頭文件

#include

2.1.2 初始化攝像頭

cv::VideoCapturecap;

功能:創(chuàng)建攝像頭管理對象

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

2.1.3 設(shè)置攝像頭分辨率

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

參數(shù)

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

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

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

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

2.1.4 打開攝像頭設(shè)備

cap.open(0);

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

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

2.1.5 讀取視頻幀

cap>>frame;

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


2.2 lockzhiner_vision_module::Edit類

2.2.1 依賴頭文件

#include

2.2.2 初始化模塊

Editedit;

說明:創(chuàng)建Edit對象,用于后續(xù)圖像傳輸操作

2.2.3 建立連接

edit.StartAndAcceptConnection();

參數(shù):無

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

2.2.4 圖像傳輸

edit.Print(frame);

參數(shù):cv::Mat對象,表示圖像幀

返回值:無


3. 綜合代碼解析

3.1 基礎(chǔ)攝像頭讀取

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 完整代碼實現(xiàn)

#include
#include

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

cap.open(0); // 參數(shù)0表示默認攝像頭設(shè)備
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 完整代碼實現(xiàn)

#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; // 設(shè)置攝像頭分辨率寬度
intheight=480;// 設(shè)置攝像頭分辨率高度
cap.set(cv::CAP_PROP_FRAME_WIDTH,width);
cap.set(cv::CAP_PROP_FRAME_HEIGHT,height);

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

// 主循環(huán):讀取攝像頭幀并傳遞給 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 編譯環(huán)境搭建

請確保你已經(jīng)按照開發(fā)環(huán)境搭建指南正確配置了開發(fā)環(huán)境。

同時以正確連接開發(fā)板。

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)

# 配置攝像頭數(shù)據(jù)
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 容器并執(zhí)行以下命令來編譯項目

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

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


5. 例程運行示例

5.1 準備工作

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

5.2 運行過程

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

chmod777Test_Capture
./Test_Capture

5.3 運行效果

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


6. 總結(jié)

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

初始化攝像頭并設(shè)置分辨率;

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

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

注意事項

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

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

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

    關(guān)注

    2

    文章

    307

    瀏覽量

    41639
  • 視覺識別
    +關(guān)注

    關(guān)注

    3

    文章

    107

    瀏覽量

    17064
  • AI視覺
    +關(guān)注

    關(guān)注

    0

    文章

    88

    瀏覽量

    4785
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

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

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

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

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

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

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

    基于LockAI視覺識別模塊C++二維碼識別

    二維碼識別視覺模塊經(jīng)常使用到的功能之一。我們將演示如何使用基于瑞芯微RV1106的LockAI視覺識別
    發(fā)表于 05-26 09:57

    基于LockAI視覺識別模塊C++條碼識別

    條碼識別視覺模塊經(jīng)常使用到的功能之一,經(jīng)常用于識別超市的貨物信息。本文我們將演示如何基于瑞芯微RV1106的LockAI
    發(fā)表于 05-27 10:26

    基于LockAI視覺識別模塊C++目標檢測

    本文檔基于瑞芯微RV1106的LockAI凌智視覺識別模塊,通過C++語言做的目標檢測實驗。 本文檔展示了如何使用 lockzhiner_v
    發(fā)表于 06-06 14:43

    基于LockAI視覺識別模塊:手寫數(shù)字識別

    手寫數(shù)字識別是一種經(jīng)典的模式識別圖像處理問題,旨在通過計算機自動識別用戶手寫的數(shù)字。 本文將教會你如何使用基于RV1106的 LockAI
    發(fā)表于 06-30 16:45

    基于LockAI視覺識別模塊C++人臉識別

    本文基于RV1106做成的LockAI視覺識別模塊,采用 LZ-Picodet 模型訓練的人臉檢測模型 LZ-Face,以及ArcFace人臉識別
    發(fā)表于 07-01 12:01

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

    圖像處理中,理解圖像的基本操作是掌握計算機視覺技術(shù)的關(guān)鍵。本文章將介紹基于LockAI視覺識別
    的頭像 發(fā)表于 05-06 16:20 ?223次閱讀
    基于<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++使用圖像的統(tǒng)計信息

    圖像處理中,統(tǒng)計信息可以幫助我們了解圖像的特性,例如區(qū)域內(nèi)的像素分布、顏色轉(zhuǎn)換以及特定區(qū)域的分析。本文將介紹基于LockAI視覺識別
    的頭像 發(fā)表于 05-08 10:09 ?231次閱讀
    基于<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>的統(tǒng)計信息

    基于LockAI視覺識別模塊C++二維碼識別

    二維碼識別視覺模塊經(jīng)常使用到的功能之一。我們將演示如何使用基于瑞芯微RV1106的LockAI視覺識別
    的頭像 發(fā)表于 05-26 09:42 ?273次閱讀
    基于<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++條碼識別

    條碼識別視覺模塊經(jīng)常使用到的功能之一,經(jīng)常用于識別超市的貨物信息。本文我們將演示如何基于瑞芯微RV1106的LockAI
    的頭像 發(fā)表于 05-27 09:32 ?159次閱讀
    基于<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++目標檢測

    本文檔基于瑞芯微RV1106的LockAI凌智視覺識別模塊,通過C++語言做的目標檢測實驗。本文檔展示了如何使用lockzhiner_vis
    的頭像 發(fā)表于 06-06 13:56 ?213次閱讀
    基于<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>目標檢測

    基于LockAI視覺識別模塊:手寫數(shù)字識別

    手寫數(shù)字識別是一種經(jīng)典的模式識別圖像處理問題,旨在通過計算機自動識別用戶手寫的數(shù)字。本文將教會你如何使用基于RV1106的LockAI
    的頭像 發(fā)表于 06-30 15:44 ?426次閱讀
    基于<b class='flag-5'>LockAI</b><b class='flag-5'>視覺</b><b class='flag-5'>識別</b><b class='flag-5'>模塊</b>:手寫數(shù)字<b class='flag-5'>識別</b>

    基于LockAI視覺識別模塊C++人臉識別

    本文基于RV1106做成的LockAI視覺識別模塊,采用LZ-Picodet模型訓練的人臉檢測模型LZ-Face,以及ArcFace人臉識別
    的頭像 發(fā)表于 07-01 10:09 ?156次閱讀
    基于<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>