網站首頁 編程語言 正文
方法一
主要函數
void cv::glob(String pattern,std::vector<string>&result,bool recursive=false)
分析
String pattern:絕對路徑下的照片
-
pattern = "/home/Data/data/*.jpg"
: 選擇*.jpg這一類的圖片 -
std::vector< cv::String > & result
:這里必須為CV的String,即路徑被存在string類型的vector中 -
bool recursive
:可省去,當recursive為false時,僅僅遍歷指定文件夾內符合模式的文件;當recursive為true時,會同時遍歷指定文件夾的子文件夾
頭文件AI.h
#pragma once #include <opencv2/opencv.hpp> using namespace cv; using namespace std; class Ve { public: ?? ?vector<Mat> ReadImage(cv::String pattern); };
cpp文件:
#include "AI.h" #include <iostream> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; int main() { ?? ?cv::String pattern = "E:\\VSprojeect\\test\\test\\images\\*.png"; ?? ?Ve ve; ?? ?vector<Mat> img = ve.ReadImage(pattern); ?? ?return 0; } vector<Mat> Ve::ReadImage(cv::String pattern) { ?? ?vector<cv::String> fn; ?? ?glob(pattern, fn, false); ?? ?vector<Mat> images; ?? ?size_t count = fn.size(); //number of png files in images folder ?? ?for (size_t i = 0; i < count; i++) ?? ?{ ?? ??? ?images.emplace_back(cv::imread(fn[i])); ?? ??? ?imshow("img", imread(fn[i])); ?? ??? ?//imwrite("E:\\VSprojeect\\testyolo\\saveimg\\",images); ?? ??? ?waitKey(1000); ?? ??? ?destroyAllWindows(); ?? ?} ?? ?return images; }
方法二
當文件夾的圖片名稱沒有規律或者有規律時(通用方法,萬能模板)
#include<stdio.h> #include "opencv2/opencv.hpp" #include <opencv2\highgui\highgui.hpp> #include<string> #include<vector> #include<iostream> using namespace cv; using namespace std; void main() { ?? ?String path = "E:\\VSprojeect\\get_muti_images\\images";//文件夾路徑 ?? ?vector<String>src_test; ?? ?glob(path, src_test, false);//將文件夾路徑下的所有圖片路徑保存到src_test中 ?? ?if (src_test.size() == 0) {//判斷文件夾里面是否有圖片 ?? ??? ?printf("error!!!\n"); ?? ??? ?exit(1); ?? ?} ?? ?for (int i = 0; i < src_test.size(); i++) {//依照順序讀取問價下面的每張圖片,并顯示 ?? ??? ?Mat image = imread(src_test[i]); ?? ??? ?imshow("image", image); ?? ??? ?waitKey(1000); ?? ??? ?image.release();//將Mat釋放 ?? ??? ?destroyAllWindows(); ?? ?} }
方法三
文件夾下圖片有序時,OpenCV讀取方法
#include<stdio.h> #include "opencv2/opencv.hpp" #include <opencv2\highgui\highgui.hpp> #include<string> #include<iostream> using namespace cv; using namespace std; void main(){ char fileName[500]; ?Mat pic; ?for (int i = 0; i < 110; i++) {//文件夾下面一共有110張圖片 ? printf("start deal:%d\n", i + 1); ? sprintf_s(fileName, ".//picture//%d.bmp", i);//提取出文價夾下面的每張圖片路徑,放到fileName ? pic = imread(fileName);//讀取fileName路徑下面的圖片 ? imshow("tpian", pic);//顯示圖像 ? waitKey(1000);//顯示延時 ?} ?pic.release();//將Mat釋放 }
原文鏈接:https://blog.csdn.net/wxy2020915/article/details/126869408
相關推薦
- 2022-08-03 C++類與對象深入之引用與內聯函數與auto關鍵字及for循環詳解_C 語言
- 2022-06-29 Oracle數據庫之PL/SQL使用流程控制語句_oracle
- 2022-10-07 C++函數指針與指針函數有哪些關系和區別_C 語言
- 2022-10-08 C#中的timer與線程使用_C#教程
- 2022-04-25 C#使用NPOI導出Excel類封裝_C#教程
- 2022-11-14 正則表達式手冊以備平時自己看
- 2022-06-21 C++分析講解類的靜態成員函數如何使用_C 語言
- 2022-06-07 ASP.NET?Core服務生命周期_基礎應用
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支