ページ 11

画像を表示するプログラムについて

Posted: 2012年11月06日(火) 17:28
by ハスキー
はじめまして。始めて質問をさせていただきます。

C言語で、読み込んだグレイスケール画像を表示するプログラムを作っています。
いろいろなサイトを巡り、fopen関数を使用して画像を読み込むことはできたのですが、肝心の出力部分がどうしても分かりませんでした。
ようやく見つけたソースも、パッケージにwindows.hを使用していたりと、全然進歩がありません。
どなたか画像を表示するための簡単なプログラム例を教えてもらえないでしょうか。

自分のC言語の知識は無いも同然ですが、どうぞよろしくお願いします。
開発環境はLinuxで、コンパイラはgccです。

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 17:54
by h2so5
Linuxでしたら、OpenCVを導入するのがお勧めです。

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 18:21
by ハスキー
返信ありがとうございます。
学校の課題の一部ですので、導入や別のコンパイラを使うといった選択肢はないです。
説明が不足してしまい、申し訳ありません。

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 18:25
by h2so5
C言語の標準ライブラリだけで画像を表示するのは不可能です。
課題で画像を表示する必要があるなら、その方法が提示されているはずです。

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 18:28
by ハスキー
そうですか……。
わかりました。もう一度課題を見なおしてみます。
わざわざありがとうございました。

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 18:40
by softya(ソフト屋)
画像を表示するには、xlibやOpenGLやSDLやGTK+などLinuxで動くAPIやライブラリを何かを使うはずです。
そこをまず調べてみてください。課題であれば、どれを使ってもOKにはならないはずです。

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 18:58
by ハスキー
返信あがとうございます。
調べてみた結果、全部で何が入っているのかは分かりませんでしたが、xlib、SDLあたりは揃ってると思います。
OpenCVやGLはよく分かりません。

とりあえずwindows.hを使用しない画像表示プログラムの例か何かありましたら教えて頂けると幸いです。
具体性のない質問で申し訳ありません。

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 19:06
by softya(ソフト屋)
既に教えられた画像を扱うサンプルにコードを見せてもらえませんか?


>調べてみた結果、全部で何が入っているのかは分かりませんでしたが、xlib、SDLあたりは揃ってると思います。
>OpenCVやGLはよく分かりません。
>とりあえずwindows.hを使用しない画像表示プログラムの例か何かありましたら教えて頂けると幸いです。

とりあえずは示せますが解決につながるとは思えませんが。
●XLIBを使った場合。
「グラフィックスを描画する」
http://homepage3.nifty.com/rio_i/lab/xl ... aphics.htm

●SDLを使った場合。
「SDLでなんかする」
http://utsukemononi.gozaru.jp/gc/sdl/index.html

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 19:20
by ハスキー
コ、コードとは……?
基本的な事も知らずに申し訳ないですが、何のコードでしょう?
今書いてあるプログラムコードであれば、以下のようになります。

コード:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
FILE *fp;
unsigned char a[255];

if ((fp = fopen("グレスケ画像", "rb")) == NULL) return 0;

while (fgets(a, 255, fp) != NULL) {
printf("%c", a);
}

fclose(fp);

return 0;
}

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 19:23
by softya(ソフト屋)
いきなり何もなしに画像を表示しろと言われたわけではないと思います。
これまでに、Xwindowなどを使ってウィンドウ表示は行なっておこなかったのですか?
そういうウィンドウ表示関連のソースコードがあれば見せてくださいと言うことです。

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 19:40
by ハスキー
えーっと、ウィンドウ関連のコードはないですね。
そもそもこの授業が、「勝手に調べて作れ」的な方針を取ってあるのと、ちょうど半年前に学校のサーバを一斉に入れ替えたために、前期のコード全てが飛んでます。
ですので、ウィンドウを作ってそこに表示するのも、或いはウェブブラウザ上に出すのも自由だとは聞いています。
まったく要求にそえるものがなく、申し訳ありません。

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 19:50
by h2so5
ハスキー さんが書きました: 学校の課題の一部ですので、導入や別のコンパイラを使うといった選択肢はないです。
ハスキー さんが書きました:ウィンドウを作ってそこに表示するのも、或いはウェブブラウザ上に出すのも自由だとは聞いています。
矛盾してないですか?制限があるのか無いのかさっぱり分かりません。

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 20:55
by softya(ソフト屋)
ハスキー さんが書きました:えーっと、ウィンドウ関連のコードはないですね。
そもそもこの授業が、「勝手に調べて作れ」的な方針を取ってあるのと、ちょうど半年前に学校のサーバを一斉に入れ替えたために、前期のコード全てが飛んでます。
ですので、ウィンドウを作ってそこに表示するのも、或いはウェブブラウザ上に出すのも自由だとは聞いています。
まったく要求にそえるものがなく、申し訳ありません。
とりあえずXlibで良いのであれば、次のページを足掛かりにすればグレイスケールの表示は出来ると思います。
http://www.wakhok.ac.jp/biblion/1995/JJ/JJ.html
XCreatePixmapFromBitmapData()を使えば良いと思うんですが。

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 21:20
by softya(ソフト屋)
ハスキー さんが書きました:コ、コードとは……?
基本的な事も知らずに申し訳ないですが、何のコードでしょう?
今書いてあるプログラムコードであれば、以下のようになります。

コード:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
FILE *fp;
unsigned char a[255];

if ((fp = fopen("グレスケ画像", "rb")) == NULL) return 0;

while (fgets(a, 255, fp) != NULL) {
printf("%c", a);
}

fclose(fp);

return 0;
}
ちなみに文字列と文字を混同しているので激しく間違っています。
文字列は文字の配列あるいは文字のポインタです。

ところでグレイスケールデータは文字列データなのでしょうか?

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 22:04
by ハスキー
softya(ソフト屋) さんが書きました:
ちなみに文字列と文字を混同しているので激しく間違っています。
文字列は文字の配列あるいは文字のポインタです。

ところでグレイスケールデータは文字列データなのでしょうか?
懇切丁寧な回答ありがとうございます。
グレイスケールデータは恐らく文字列データで合ってます。
ネタばらしをしてしまえば、これは「衛星写真をカラー画像にしろ」という課題なのですが、その衛星画像を読み込んで表示する地点で躓いています。

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 22:09
by softya(ソフト屋)
ハスキー さんが書きました: 懇切丁寧な回答ありがとうございます。
グレイスケールデータは恐らく文字列データで合ってます。
ネタばらしをしてしまえば、これは「衛星写真をカラー画像にしろ」という課題なのですが、その衛星画像を読み込んで表示する地点で躓いています。
衛星写真のデータを扱ったことは無いので質問を続けるなら詳細なフォーマット資料を開示してもらう必要があるかと思います。
それと状況説明であって質問になってませんが良いのですか?
作るのは、ハスキーさんであって私ではありませんよ。

Re: 画像を表示するプログラムについて

Posted: 2012年11月06日(火) 22:18
by ハスキー
現在手元に資料がないので開示は難しいと思います。
とりあえずいただいた資料を元に頑張ってみます。
もし再び躓くことがありましたら、今度は具体性をもった質問をさせていただきます。
この時間までお付き合いしていただいてありがとうございました。