您好,登錄后才能下訂單哦!
這篇文章主要介紹“c++怎么結合opencv實現讀取多張圖片并顯示”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“c++怎么結合opencv實現讀取多張圖片并顯示”文章能幫助大家解決問題。
主要函數
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釋放 }
關于“c++怎么結合opencv實現讀取多張圖片并顯示”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。