##概要
画像処理をしていると、連続での読み込みや連続での保存なんかしたくなる時ありますよね。特に大量に画像データがある場合は必要な技術だと思います。色々なやり方があると思いますが、ここでは僕がよく使うやり方を説明したいと思います。
##Mark7 画像の連続の読み込み
#include <opencv2/opencv.hpp>
#include<iostream>
#if _DEBUG
#pragma comment(lib,"opencv_world430d.lib")
#else
#pragma comment(lib,"opencv_world430.lib")
#endif;;
using namespace cv;
using namespace std;
int main()
{
Mat img;
for (int n = 1; n < 11; n++) {
string filepas = "C:\\Users\\abc\\Desktop\\aaa\\" + to_string(n) + ".png";
img = imread(filepas);
imshow("a", img);
waitKey(0);
}
return 0;
}
######解説①
for (int n = 1; n < 11; n++)
まずfor文で何枚の画像があるのかとnが何の数字なのかをここで決めます。
######解説②
string filepas = "C:\\Users\\abc\\Desktop\\aaa\\" + to_string(n) + ".png";
次にstringを使いfilepasを宣言します。filepasでなくても名前は何でもいいです。そこに画像までのパスを入れます。そして画像の名前の違うとこだけをto_string(n) でfor分の数字になるようにして、最後に""の中に画像の拡張子を入れてやればOKです。これで連続での表示はできると思います。
##Mark8 画像の連続の保存
#include <opencv2/opencv.hpp>
#include<iostream>
#if _DEBUG
#pragma comment(lib,"opencv_world430d.lib")
#else
#pragma comment(lib,"opencv_world430.lib")
#endif;;
using namespace cv;
using namespace std;
int main()
{
Mat img;
for (int n = 1; n < 11; n++) {
string filepas = "C:\\Users\\abc\\Desktop\\aaa\\" + to_string(n) + ".png";
img = imread(filepas);
string filepas1 = "C:\\Users\\abc\\Desktop\\ccc\\" + to_string(n) + ".png";
imwrite(filepas1, img);
imshow("a", img);
waitKey(0);
}
return 0;
}
######解説①
せっかくなので先ほど読み込んだ画像をファイルに保存していきます。
ほとんどさっきと同じですが、次はimwriteにパスであるfilepas1を入れて先に読み込んでいたimgを保存するようにしましょう。
imwrite(filepas1, img);
##最後に
そんなに難しくないと思うのでぜひやってみてください。ただ今回紹介したのはあくまでも連続の番号になってる画像に限ります。もしそうじゃないならちょっと複雑になると思うので頑張って下さい。
最近、藤井風にはまってます。とってもいいアーティストなので聞いてみてください。