🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

399閲覧

画像データの連続読み取りがわかりません

asuka_wataki

総合スコア6

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/02/12 15:20

c++をopencv使って勉強中なのですが、for文でパスの先にあるディレクトリ内の画像データを全部読み取るということをしたくて、いくつかのサイトを参考に途中まで書いてみたのですが書き方がわかりませんでした。 
ご教授いただけるとありがたいです。

c++

1int no, no_num; 2 3for(no=0;no<no_num;no++){ 4 5 std::string path = "/Users/save_picture/outside/*.png" ,no; 6 7・・・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

C++

1// C++17 : カレントdir.の ~.png を列挙する 2 3#include <filesystem> 4#include <iostream> 5 6namespace fs = std::filesystem; 7 8int main() { 9 for (const fs::directory_entry& ent : fs::directory_iterator(".")) { 10 fs::path fpath = ent; 11 if ( fpath.extension() == ".png" ) { 12 std::cout << fpath.string() << std::endl; 13 } 14 } 15}

投稿2021/02/13 01:12

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

はじめまして

ディレクトリの中にあるすべての画像ファイルを読むということなら
まずはディレクトリの中の画像ファイル名を拾うことから始めましょう

以下はC言語で取得する方法ですが、C++17が使える環境なら
もう少し簡単な方法があります

c++

1#include <iostream> 2#include <string> 3#include <string.h> 4#include <cstdlib> 5#include <dirent.h> 6 7 8using std::cout; 9using std::cerr; 10using std::endl; 11using std::string; 12 13 14int main(int argc, char** argv) 15{ 16 // 検索するフォルダを指定する 17 string path = "./data/"; 18 DIR *dp; 19 20 // ディレクトリのポインタを取得 21 dp = opendir(path.c_str()); 22 23 if(dp==NULL) 24 cerr << "not found directory" << endl; 25 26 // ディレクトリ内を読み込む 27 dirent *entry = readdir(dp); 28 29 // ディレクトリ内のすべての情報を一個毎に読む 30 while(entry != NULL){ 31 if(entry != NULL){ 32 33 const char *ext = strrchr(entry->d_name, '.'); 34 35 // 拡張子が正しいか比較する 36 if(strcmp(".png", ext) == 0){ 37 38 // ファイル名を取得する 39 cout << path << entry->d_name << endl; 40 41 /** 42 ここに画像を読み込む処理を追加する 43 **/ 44 } 45 } 46 entry = readdir(dp); 47 } 48}

投稿2021/02/13 07:32

DaiGuard

総合スコア159

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Python で

py

1path = 'Users/save_picture/outside/' + str(no) + '.png'

と書くように、整数を std::string 型に変換し結合すれば良いと思われます。

cpp

1std::string path = "Users/save_picture/outside/" + std::to_string(no) + ".png";

また他の手段として、 sprintf や std::stringstream を使う、もしくはそもそもディレクトリの走査に <filesystem> ヘッダの機能 (C++17 以降) を使う、などが挙げられそうです。

投稿2021/02/13 00:53

yaito3014

総合スコア209

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問