用實(shí)踐C++)
OpenCVOpen Source Computer Vision Library是一個(gè)開源的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫提供了數(shù)百種計(jì)算機(jī)視覺算法核心功能包括圖像視頻處理、特征檢測、目標(biāo)檢測、圖像分割、相機(jī)標(biāo)定與3D重建、機(jī)器學(xué)習(xí)等本文通過一個(gè)簡單的圖像處理程序來介紹OpenCV在RK3588平臺下如何調(diào)用C版本完成完整工程搭建親測可運(yùn)行。主要功能是讀取一張指定路徑的圖片將其縮放為 400×400 像素轉(zhuǎn)換為灰度圖然后保存為resized.png。1. 頭文件與命名空間#include iostream #include opencv2/opencv.hpp2. 主函數(shù)入口int main(int argc, char **argv)argc命令行參數(shù)個(gè)數(shù)。argv命令行參數(shù)字符串?dāng)?shù)組argv[0]通常是程序自身路徑argv[1]是第一個(gè)用戶傳入的參數(shù)。3.參數(shù)檢查if (argc ! 2) { std::cout 請輸入圖片路徑 std::endl; return -1; } else { std::cout 圖片路徑為 argv[1] std::endl; // ... 處理代碼 ... }程序期望恰好 1 個(gè)額外參數(shù)即圖片路徑。如果參數(shù)數(shù)量不對則輸出提示信息并返回-1若參數(shù)正確則打印該路徑。4、讀取圖片cv::Mat image cv::imread(argv[1]);cv::imread()用于從文件加載圖像返回一個(gè)cv::Mat對象矩陣它是 OpenCV 中存儲圖像數(shù)據(jù)的核心數(shù)據(jù)結(jié)構(gòu)。5、縮放圖像cv::Mat image_resized; cv::resize(image, image_resized, cv::Size(400, 400));cv::resize()將原始圖像縮放到 400×400 像素寬和高均為 400默認(rèn)使用雙線性插值cv::INTER_LINEAR。6、轉(zhuǎn)換為灰度圖cv::cvtColor() 將縮放后的彩色圖像BGR 通道順序OpenCV 默認(rèn)轉(zhuǎn)換為單通道灰度圖像cv::cvtColor()將縮放后的彩色圖像BGR 通道順序OpenCV 默認(rèn)轉(zhuǎn)換為單通道灰度圖像。7、保存結(jié)果cv::imwrite(resized.png, image_resized);cv::imwrite()將灰度圖保存為當(dāng)前工作目錄下的resized.png文件PNG 格式無損壓縮。8、CMakeList.txt 通過cmake完成編譯cmake_minimum_required(VERSION 3.4.1) set(PROJECT_NAME demo_opencv) set(SDK_ROOT_PATH /home/tronlong/3588/linux-sdk/rk3588_linux_release_v1.2.1) set(RKNPU_PATH ${SDK_ROOT_PATH}/external/rknpu2) ... ... # opencv set(OpenCV_DIR ${RKNPU_PATH}/examples/3rdparty/opencv/opencv-linux-aarch64/lib/aarch64-linux-gnu/cmake/opencv4) find_package(OpenCV REQUIRED) ... ...如果這篇小文幫到了你別忘了點(diǎn)個(gè)關(guān)注也歡迎大家在評論區(qū)交流。我會持續(xù)更新更多有趣的視覺小實(shí)驗(yàn)和實(shí)用技巧。關(guān)注后私信我“我要資源”我會把本篇完整代碼 包發(fā)給你。