質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

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

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

C++

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

Q&A

解決済

4回答

23173閲覧

C++で画像の読み込み、表示

ryohasegawa

総合スコア437

OpenCV

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

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

C++

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

0グッド

1クリップ

投稿2017/06/25 16:16

C++で画像ファイルを読み込んで、その画像を表示させたいんですが、それを行うには、OpenCVというライブラリを使うとできるそうなんですが、OpenCVにはその他色々な機能が備わっているみたいで、インストールも大変そうで、他に方法がないかと考えています。
自分でも読み込む専用のライブラリを作ればいいんじゃないかと思ったのですが、参考になるサイトなどありませんか?

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

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

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

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

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

yuki23

2017/06/26 11:37

Windows 専用が嫌なのでしたら、質問文にその旨を記入した上で、Windows のタグを消していただけないでしょうか。
guest

回答4

0

ベストアンサー

Windows標準のAPIを使うならWIC(Windows Imaging Component)
JPEG、TIFF、GIF、PNG、BMPとJpeg XRに対応しています。

WICはWindows専用で、以下は全てマルチプラットフォーム対応(DXライブラリはPS4とかAndroidとかなので微妙かも?、一応、SDLを使った互換ライブラリはある)

特定の画像フォーマットを表示したいのならば、libPNGやlibJpegなど表示したいフォーマット個別のライブラリ
とにかくメジャーなものからマイナーなものまで多数のフォーマットに対応したいなら、DevILとか、FreeImageなど

ウィンドウの生成から画像の表示までをとにかく簡単に行いたいなら、DXライブラリとかSimple DirectMedia Layer
よりC++っぽく書きたいならSiv3DとかSFML
これらは主にゲーム制作用途のライブラリになります。

ちなみにSDL2で大雑把に書くとこんな感じです。

c++

1#include <SDL2/sdl.h> 2#include <SDL2/sdl_image.h> 3#include <cstdlib> 4 5int main(int args, char *argv[]) 6{ 7 // SDLの初期化 8 SDL_Init(SDL_INIT_VIDEO); 9 IMG_Init(IMG_INIT_PNG); 10 11 // 可能ならばテクスチャの拡大縮小に線形フィルタを使用する 12 SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "1"); 13 14 // ウィンドウの生成 15 SDL_Window *window = SDL_CreateWindow("SDL_image Test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_RESIZABLE); 16 // レンダラーの生成 17 SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); 18 19 // サーフェスに画像ファイルの読み込み 20 SDL_Surface *surface = IMG_Load("test.png"); 21 if (surface == nullptr) 22 { 23 SDL_Log("%s", SDL_GetError()); 24 return EXIT_FAILURE; 25 } 26 27 // サーフェスからテクスチャを生成 28 SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, surface); 29 SDL_FreeSurface(surface); 30 31 // レンダラーにテクスチャをコピーして表示 32 SDL_RenderClear(renderer); 33 SDL_RenderCopy(renderer, texture, nullptr, nullptr); 34 SDL_RenderPresent(renderer); 35 36 /* 解放処理等中略 */ 37 38 return EXIT_SUCCESS; 39} 40

投稿2017/06/26 01:25

編集2017/06/26 01:45
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ryohasegawa

2017/06/26 09:54 編集

今はWindowsのアプリケーション開発を行っていますが、将来Macでの開発も行いたく、SwiftからC++が扱えるという事を聞いたので、表示部分はOS依存させて、処理部分はOSに依存させない形で作って行こうかな?って思っているんで、表示は、WICを使えばいいですかね?
退会済みユーザー

退会済みユーザー

2017/06/26 11:27

表示部分はWindows依存でその他の処理部分は非依存ということだと、 WICは画像の読み込みや保存(エンコード・デコード)処理を行なう(読み込みまでで、表示までは行わない)ものなので、そこはOS非依存のライブラリ(libPNG等)を使ったほうが良いと思います。
ryohasegawa

2017/06/26 11:44

DevIL を検討しているんですが、DevILならOS非依存ですよね?
退会済みユーザー

退会済みユーザー

2017/06/26 11:48

Win/Mac/Linuxで使えてコンパイラもMSVC++やgcc他DelphiやVBなんかでも使えるようです。
ryohasegawa

2017/06/26 11:53

DevIL を使用します。
guest

0

Visual C++をお使いなら、ATLのCImageクラスがお手軽です。GDI+をラップしたクラスなので特殊な操作(変形とか回転とか)はできませんが、ファイルを読んで表示するだけなら何の問題もありません。ファイル形式もJPEG,PNG,GIF,BMPに対応しています。

投稿2017/06/26 06:21

catsforepaw

総合スコア5938

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

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

ryohasegawa

2017/06/26 09:42

ATLのCImageクラスはウインドウズに依存していますよね?
catsforepaw

2017/06/26 11:18

OSが提供するAPIのラッパーなのでWindows専用ということになりますね、
ryohasegawa

2017/06/26 11:21

ありがとうございます。
guest

0

Windowsタグが付いていますが、もしマルチプラットフォーム化も考慮する必要がありましたら、libpngやlibjpegなどもいいかもしれません。

参考: Loading a PNG as texture in OpenGL using libPNG

投稿2017/06/26 00:47

Bongo

総合スコア10807

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

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

ryohasegawa

2017/06/26 09:48

libpngやlibjpeg を使うにはOpenGLが必要なんですか?
Bongo

2017/06/26 10:34

いえ、OpenGLは関係ありません。たまたま上記のサイトの方の場合は、OpenGLで用いるテクスチャをファイルから読み込むのにlibpngを使ったということです。もしご参考にされる場合も、サイトの方の書かれたloadPngImage関数を中心にお読みになれば十分かと思います。
ryohasegawa

2017/06/26 10:39

libpngやlibjpegはその名前に入ったpngとjpegしか扱えないんですよね?
Bongo

2017/06/26 10:50

そういうことになりますね。様々なフォーマットを扱うご予定でしたら、lunateaさんご提示のFreeImageやDevILがいいでしょう。FreeImageのサポートするフォーマットはhttp://freeimage.sourceforge.net/features.htmlの右側に、DevILはhttp://openil.sourceforge.net/about.phpに掲載されております。
ryohasegawa

2017/06/26 11:48

DevIL の導入を考えているんですが、Winで開発するんですが、今後Macでも開発を行いたい場合の事を考えて、ダウンロードは Source (zip) をした方がいいですよね?
ryohasegawa

2017/06/26 12:26

ソースコードをDLしたんですが、ファイルがたくさんありすぎて、どれをどう使えばいいかがわかりません。 ネットでDevilの使い方と検索したんですが、日本語サイトが一切でないんですが、ないんですか?
退会済みユーザー

退会済みユーザー

2017/06/26 13:27

いきなりソースコードからのビルドは難易度が高いので まずはDevIL 1.8.0 SDK for Windowsでビルド済みのdllとlibを導入する所から初めてみてはどうでしょう?
Bongo

2017/06/26 13:27

使用例に関しては、OpenGLなど3Dグラフィックス関連の記事がぽつぽつある程度のようですね...DevILのマニュアルの日本語訳のようなものは、少なくとも検索結果の上位にはないようです。 DevILを用いた画像ファイルの読み込み http://d.hatena.ne.jp/magpoc/20090704/1246684632 OpenGL+DevILで画像を入出力する https://nullorempry.jimdo.com/2012/03/01/opengl-devil%E3%81%A7%E7%94%BB%E5%83%8F%E3%82%92%E5%85%A5%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B/ 英語ですけれども、とりあえず使ってみるには、本家サイトのチュートリアルがお役に立つのではないでしょうか? The Developer's Image Library (DevIL) Tutorials http://openil.sourceforge.net/tuts/index.htm
ryohasegawa

2017/06/26 13:30

ありがとうございます。とてもた助かります。
guest

0

ただ画像を表示させるだけならDXライブラリとかどうでしょうか

http://dxlib.o.oo7.jp/

投稿2017/06/25 21:56

KureteRubyLua

総合スコア206

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

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

ryohasegawa

2017/06/26 09:49

WIN専用ですよね?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問