C++で画像ファイルを読み込んで、その画像を表示させたいんですが、それを行うには、OpenCVというライブラリを使うとできるそうなんですが、OpenCVにはその他色々な機能が備わっているみたいで、インストールも大変そうで、他に方法がないかと考えています。
自分でも読み込む専用のライブラリを作ればいいんじゃないかと思ったのですが、参考になるサイトなどありませんか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/26 09:54 編集
退会済みユーザー
2017/06/26 11:27
2017/06/26 11:44
退会済みユーザー
2017/06/26 11:48
2017/06/26 11:53
0
Visual C++をお使いなら、ATLのCImage
クラスがお手軽です。GDI+をラップしたクラスなので特殊な操作(変形とか回転とか)はできませんが、ファイルを読んで表示するだけなら何の問題もありません。ファイル形式もJPEG,PNG,GIF,BMPに対応しています。
投稿2017/06/26 06:21
総合スコア5938
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/26 09:42
2017/06/26 11:18
2017/06/26 11:21
0
Windowsタグが付いていますが、もしマルチプラットフォーム化も考慮する必要がありましたら、libpngやlibjpegなどもいいかもしれません。
投稿2017/06/26 00:47
総合スコア10807
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/26 09:48
2017/06/26 10:34
2017/06/26 10:39
2017/06/26 10:50
2017/06/26 11:48
2017/06/26 12:26
退会済みユーザー
2017/06/26 13:27
2017/06/26 13:27
2017/06/26 13:30
0
ただ画像を表示させるだけならDXライブラリとかどうでしょうか
投稿2017/06/25 21:56
総合スコア206
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。