C言語でjpgなどの画像データを扱って
モード法やエッジを表したりなどの画像処理をしたいのですが、
どうやってプログラムをくめばいいのか分かりません。
どのたかプログラムを書いて教えてくれませんか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

もしOSがLinuxであるなら、


GdkImlibを使うと簡単にできます。

jpgにかぎらず、ppm、pgm..など、
ファイル形式に関わらず
左上画素値から順に
rgbrgbrgb....というようにデータを並べた
形で画像データを取得できます。

参考URL:http://hiro.pos.to/gtk/
    • good
    • 0

手っ取り早くそういうプログラムを作成したいのであれば


画像ハンドリングするライブラリが販売されていますので
それを使ってみるのがよいでしょう。
しかし、私の知っているライブラリ「Image Gear」は、
\250,000位の価格なので、趣味でやるには高価かも...。
でも、一通りの画像加工できますよ。
確かサンプルプログラムもついています。

参考URL:http://www.softboat.co.jp/product/ig/index.html
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q東京モード学園の「MY MODE」をテーマにした宮本彩菜が出演しているCMのBGMは、banvoxさ

東京モード学園の「MY MODE」をテーマにした宮本彩菜が出演しているCMのBGMは、banvoxさんのなんという曲名ですか?

Aベストアンサー

曲名は付けられていない、あるいは公表されていないようです。
http://kyokutan.jp/music.php?dataId=43660
http://www.mode.ac.jp/mymode/pc/index.html
https://twitter.com/banvox/status/717639447852912640

CMのイメージに合わせて作られた楽曲には時々あることです。
後にリリースされるときにタイトルがつくこともあります。

Qc言語のプログラムでこの実行結果を出したいのですがどうプログラムすればできますか? 続きの画像は補

c言語のプログラムでこの実行結果を出したいのですがどうプログラムすればできますか?

続きの画像は補足でだします

Aベストアンサー

#include <stdio.h>
#include <stddef.h>

void calc_average(int class[][2], size_t n);

int main(void) {
 int class[4][2] = {{0, 0}};
 calc_average(class, sizeof(class)/sizeof(class[0]));
 return 0;
}

void calc_average(int class[][2], size_t n) {
 int i, j, k;
 printf("クラス(1〜3) --> ");
 scanf("%d", &i);
 if (i <= 0) {
  for (j = 1; j < n; j++)
   printf("クラス %d の平均点 : %f\n", j, ((double)class[j][1])/class[j][0]);
 } else if (i > 0 && i < 4) {
  printf("点数 --> ");
  scanf("%d", &k);
  class[i][0] += 1;
  class[i][1] += k;
  return calc_average(class, n);
 } else
  return calc_average(class, n);
}

#include <stdio.h>
#include <stddef.h>

void calc_average(int class[][2], size_t n);

int main(void) {
 int class[4][2] = {{0, 0}};
 calc_average(class, sizeof(class)/sizeof(class[0]));
 return 0;
}

void calc_average(int class[][2], size_t n) {
 int i, j, k;
 printf("クラス(1〜3) --> ");
 scanf("%d", &i);
 if (i <= 0) {
  for (j = 1; j < n; j++)
   printf("クラス %d の平均点 : %f\n", j, ((double)class[j][1])/class[j][0]);
 } else if (i > 0 && i < 4) {
  pri...続きを読む

QMacの簡易FWのステルスモード

OSXの簡易FWに「ステルスモード」というものがあり、これを使用しているにも関わらず下記のようなログの記録があります。

ipfw: Stealth Mode connection attempt to TCP 58.89.69.***:49644 from 202.221.31.***:80
ipfw: Stealth Mode connection attempt to TCP 58.89.69.***:49644 from 202.221.31.***:80
ipfw: Stealth Mode connection attempt to TCP 58.89.69.***:49644 from 202.221.31.***:80
ipfw: Stealth Mode connection attempt to TCP 58.89.69.***:49644 from 202.221.31.***:80
ipfw: Stealth Mode connection attempt to TCP 58.89.69.***:49644 from 202.221.31.***:80
ipfw: Stealth Mode connection attempt to TCP 58.89.69.***:49644 from 202.221.31.***:80
ipfw: Stealth Mode connection attempt to TCP 58.89.69.***:49644 from 202.221.31.***:80
ipfw: Stealth Mode connection attempt to TCP 58.89.69.***:49644 from 202.221.31.***:80

ステルスモードだから見えないはずなのになぜ?と素人は思うのですが、これは狙いを定めてアクセスしてきているのではなく、子供が虫を捕る時にがむしゃらに網を振り回して、その網にたまたま入ってしまった虫みたいなものなのでしょうか?
それともステルスモードとは言え、高度な技を使えば見えるのでしょうか?

OSXの簡易FWに「ステルスモード」というものがあり、これを使用しているにも関わらず下記のようなログの記録があります。

ipfw: Stealth Mode connection attempt to TCP 58.89.69.***:49644 from 202.221.31.***:80
ipfw: Stealth Mode connection attempt to TCP 58.89.69.***:49644 from 202.221.31.***:80
ipfw: Stealth Mode connection attempt to TCP 58.89.69.***:49644 from 202.221.31.***:80
ipfw: Stealth Mode connection attempt to TCP 58.89.69.***:49644 from 202.221.31.***:80
ipfw: St...続きを読む

Aベストアンサー

ステルスモードと言っても相手からの要求に応えないと言うだけで、IPは外から見えます。またランダム、稼働中のIPを探して(ゲームやチャット系のソフト)等の方法でアクセスは可能です。

ステルスモードと言えどもOSのFWの場合セキュリティホールが開いている可能性があります。安全性を高めるのならモデムとPCの間にルーターを接続すればかなり危険率は下がります。もしもどちらかにセキュリティホールが開いていて破られても残った方が防いでくれます。

Q画像を扱うプログラムを書くのに役立つ入門書・webページ

GCCで画像(とりあえずbmp)を扱うプログラムを書こうと思うのですが、
これまで全く画像を扱った経験がありません。

役に立ちそうな分かりやすい入門書・参考書
あるいはwebページなどがありましたら教えてください。

Aベストアンサー

こんばんは。
「画像を扱う」との意味が今一不明のため、一般的な範囲での情報です。

Netpbm: おそらく最も多種な画像フォーマットを扱うソフトです。その中で BMP を扱っている部分のソースが参考になるのではないでしょうか?

ImageMagick: これも多種の画像を扱うソフトです。Netpbm が基本的にコマンドベースで(本質的に画像データを扱う事に専念)あることに対して、これは X 上の GUI も備えています。

GD: C 上から line や circle 等の図形や文字を描画するためのライブラリです。但し、出力は PNG や JPEG です。

主な物を述べましたが、上記ソフト名をキーにネット上を検索されると色々な情報が見つかると思います。

Qサイクルモードは、日本最大級の自転車ショー&試乗会イベント。

サイクルモードは、日本最大級の自転車ショー&試乗会イベント。
TITLE:CYCLE MODE international 2006|サイクルモードとは
DATE:2006/10/30 11:45
URL:http://www.cyclemode.net/2006/about.shtml
に展示する企業一覧とかは判りますか?

Aベストアンサー

こんにちは。

 下記サイト(教えていただいたサイトのページです。)はどうでしょう。

では。

参考URL:http://www.cyclemode.net/2006/brand.shtml

QCで画像を扱うプログラムを作ろうと考えているのですが…

以下のようなプログラムを作ろうと考えています。

1:建物を4方向から撮影し、その画像をプログラムで読み込み、テクスチャキルティングを行って建物以外の背景をすべて消去
2:残った画像を繋ぎ合わせて1つの画像とする
3:その画像を何かのソフトで読み込み、3Dで建物を見れるようにする

3Dと言っても、水平方向のみグルグルと回すようにして建物を見る事のできる、擬似3Dで見れたらいいなと思っています。



図で表しますと、テクスチャキルティングで出力した画像を

C-A-B-D
※A(建物正面の画像) B(建物右面の画像) C(建物左面の画像) D(建物背面の画像)

のように1つの細長い画像にして、何らかのソフトでこれを読み込む、という事です。
テクスチャキルティングの所まではプログラムは出来ています。



特に回答して頂きたいのが
■1枚の画像を3Dで見れるようなソフトについて
■上記のソフトがない場合、どのようにしたらこのプログラムを作る事ができるか
■画像を繋げる際に気をつける点
などです。

また、言い訳するようで言いにくいのですが、プログラム知識は「やさしいC」という本を一通り読んで理解している程度で、
テクスチャキルティングのプログラムも先輩の物をなんとかいじって必死に作りました。

長々としてる上に、若干プログラムと関係ない質問で申し訳ありません。
どなたかお力添え宜しくお願いします。

以下のようなプログラムを作ろうと考えています。

1:建物を4方向から撮影し、その画像をプログラムで読み込み、テクスチャキルティングを行って建物以外の背景をすべて消去
2:残った画像を繋ぎ合わせて1つの画像とする
3:その画像を何かのソフトで読み込み、3Dで建物を見れるようにする

3Dと言っても、水平方向のみグルグルと回すようにして建物を見る事のできる、擬似3Dで見れたらいいなと思っています。



図で表しますと、テクスチャキルティングで出力した画像を

C-A-B-D
※A(建物正面の画...続きを読む

Aベストアンサー

自分で3Dの処理をがんばって作るよりも
DirectX(DirectGraphics)を使って表示したらどうでしょうか?
C++を使うのでやや敷居は高いですけど
ポリゴン作成、画像読み込み、テクスチャー貼り付け、カメラ設定等を
行えばあとは自由に見れます

Qemacsの設定ファイルの追加について(オリジナルモードを追加するには?)

今話題のCUDAでプログラミングしていますが、エディタにemacsを使っています。cc-modeとかのようにcuda-modeというのがないので、自分で新たにcuda-modeを自作して作ろうと考えているのですが、cc-modeの定義ファイルの場所はどこになるのでしょうか?あるいは、どこを変更すればよいのでしょうか?
詳しい知識をお持ちの方がいればよろしくお願いします。

Aベストアンサー

>cc-modeの定義ファイルの場所はどこになるのでしょうか?

基本的にはlispフォルダ内のprogmodes内に存在するようです。デフォルトのモードは全部ここに入ってるようですね。

>cuda-modeというのがない

ググってみたらありますね(笑)。多分これでしょう。

cuda-mode(@Emacs Wiki):
http://www.emacswiki.org/emacs/CudaMode

これじゃないですか?
大体、Emacsの場合、「××言語用のモードが欲しい」となった場合、ある程度有名な言語だったら「誰かが既に作っています」(笑)。だから、自作考える前にEmacs Wiki辺りを検索するのが先ですね。
現状では、「よっぽどの事が無い限り」自作しなきゃならないハメにはまずなりません。
上記のリンクからコードをテキストフォルダにでもコピペしてcuda-mode.elと名づけて、これはsite-lispフォルダ内に放り込んでください。
サーっと見る限り、特に.emacs編集しなくても良いみたいに思います(多分)。

>cc-modeの定義ファイルの場所はどこになるのでしょうか?

基本的にはlispフォルダ内のprogmodes内に存在するようです。デフォルトのモードは全部ここに入ってるようですね。

>cuda-modeというのがない

ググってみたらありますね(笑)。多分これでしょう。

cuda-mode(@Emacs Wiki):
http://www.emacswiki.org/emacs/CudaMode

これじゃないですか?
大体、Emacsの場合、「××言語用のモードが欲しい」となった場合、ある程度有名な言語だったら「誰かが既に作っています」(笑)。だから、自作考える...続きを読む

QJava言語のプログラムをC言語にする場合

次の2つのJava言語のプログラムをC言語にしたいのですが、C言語でプログラムを書いたことがありません。C言語にする場合はどう書けばいいのでしょうか?

import java.io.*;

public class Sort {
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try{
System.out.println("整数値を入力してください");
String line = reader.readLine();
int a = Integer.parseInt(line);

String line2 = reader.readLine();
int b = Integer.parseInt(line2);

String line3 = reader.readLine();
int c = Integer.parseInt(line3);

String line4 = reader.readLine();
int d = Integer.parseInt(line4);

int[] data = {a, b, c, d};

for (int i = 0; i< data.length - 1 ; i++) {
for (int j = i + 1; j< data.length; j++) {
if(data[i] > data[j]) {
int e = data[i];
data[i] = data[j];
data[j] = e;
}
}
}

System.out.println("昇順に並べ替えると、");
for (int i = 0; i< data.length; i++) {
System.out.print(data[i] + " ");
}

System.out.println("です。");

} catch (IOException e){
System.out.println(e);
} catch (NumberFormatException e) {
System.out.println("数式の形式が正しくありません。");
}
}
}



import java.io.*;

public class Yakusu {
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try{
System.out.println("2つの整数値を入力してください");
System.out.print("整数A : ");
String line = reader.readLine();
int a = Integer.parseInt(line);

System.out.print("整数B : ");
String line2 = reader.readLine();
int b = Integer.parseInt(line2);

if(a%b == 0){
System.out.println("BはAの約数です");
} else {
System.out.println("BはAの約数ではありません");
}

} catch (IOException e){
System.out.println(e);
} catch (NumberFormatException e) {
System.out.println("数式の形式が正しくありません。");

}
}
}

次の2つのJava言語のプログラムをC言語にしたいのですが、C言語でプログラムを書いたことがありません。C言語にする場合はどう書けばいいのでしょうか?

import java.io.*;

public class Sort {
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try{
System.out.println("整数値を入力してください");
String line = reader.readLine();
int a = Integer.parseInt(line);

String line2 = reader.readLine();
int b = Integer.parseI...続きを読む

Aベストアンサー

半角スペース2個を全角スペース1個に置換しています。

#include <stdio.h>

int main(void) {
 int a,b,c,d;
 printf("整数値を入力してください\n");
 scanf("%d",&a);
 scanf("%d",&b);
 scanf("%d",&c);
 scanf("%d",&d);

 int data[] = {a,b,c,d};
 int length = 4;
 int i,j,e;

 for (i = 0; i< length - 1 ; i++) {
  for (j = i + 1; j< length; j++) {
   if(data[i] > data[j]) {
    e = data[i];
    data[i] = data[j];
    data[j] = e;
   }
  }
 }

 printf("昇順に並べ替えると、");

 for (i = 0; i< length; i++) {
  printf("%d ",data[i]);
 }

 printf("です。\n");
}


#include <stdio.h>

int main(void) {
 int a,b;
 printf("2つの整数値を入力してください\n");
 printf("整数A : ");
 scanf("%d",&a);
 printf("整数B : ");
 scanf("%d",&b);

 if(a%b == 0){
  printf("BはAの約数です\n");
 } else {
  printf("BはAの約数ではありません\n");
 }
}

半角スペース2個を全角スペース1個に置換しています。

#include <stdio.h>

int main(void) {
 int a,b,c,d;
 printf("整数値を入力してください\n");
 scanf("%d",&a);
 scanf("%d",&b);
 scanf("%d",&c);
 scanf("%d",&d);

 int data[] = {a,b,c,d};
 int length = 4;
 int i,j,e;

 for (i = 0; i< length - 1 ; i++) {
  for (j = i + 1; j< length; j++) {
   if(data[i] > data[j]) {
    e = data[i];
    data[i] = data[j];
    data[j] = e;
   }
  }
 }

 print...続きを読む

QHDDのDMAモード

ASUS P4P800-E Deluxeマザーを使用しています。
S-ATAコネクタにSeagateのST3120026AS(120GB HDD)を接続しています。
HDTuneで転送速度の項目を見ると、

Supported mode : UDMA Mode 6 (Ultra ATA/133)
Current mode : UDMA Mode 5 (Ultra ATA/100)

となっており、ATA/100で動作しているようです。
133対応なのになぜ遅いほうの100になるのでしょうか?
あまり、こだわらなくてもいいことなのでしょうか?

Aベストアンサー

サウスブリッジがIDEの100までしか対応していない為です。

http://www.unitycorp.co.jp/products/478/detail/p4p800/p4p800-e_dx.html

133で利用したい場合は、PromiseのIDEポートを利用すれば、
対応できます。BIOSでポートを有効にして、OSでドライバを
インストールします。

その後、PromiseのポートにHDDを取り付けて、起動すれば
133で動作することも可能です。

QDOS画面以外(IEなど)で、C言語プログラムを操作するには?

タイトル通り、DOS画面以外でプログラムを動作させたいのですが、何をどうすればいいのか分かりません。
例えば、IE上でボタンを選択すると、プログラムを実行する・・・みたいな。
動作させるときの画面をデザインしたいのが一番の目標なので、IE以外でも良いのですが、出来ればVBなどソフトを購入してインストールが必要なものは避けたいなぁと思っています。
(またこれは出来ればでいいのですが、(IEの場合を例に考えたとして)幾つかチャックボックスがあったとして、ユーザーに当てはまる選択肢をチャックしてもらい、それがどこにチャックされたのかCのプログラム内の変数に渡す、みたいな機能もつけたいと思っています。)
何か良い方法があれば教えてください。よろしくお願い致します。

Aベストアンサー

あ、それいいなぁ~って思って調べて見たんですけど
ブラウザを使うのは結構面倒な感じです。
あまり詳しく調べた訳ではないんですけど、ブラウザと
やり取りするには簡易httpdを作って、それを起動させて
ブラウザでローカルIPにアクセスして…って事になると思います。
htmlのformを使ってPOSTするのも、httpdがPOSTコマンドを
解釈してプログラムを起動させているようなので、直接の
やりとりは無理ですし(セキュリティ面からすればあたりまえですね)。

そこまでするなら素直にwin32apiを使ってGUIのひな形を作るか、
VC系を使った方がらくだと思います。

あまり関係ないですけどhtmlを解釈してGUIのソースを作り出すツールが
あれば面白そうですねぇ。


人気Q&Aランキング