2009-07-05T13:28:00
  • MSN ホーム
  • Hotmail
  • サインイン
  • 相談箱
  • デジタルライフ
  • ビューティースタイル
  • 転職・求人
MSN Japan 相談箱
  • 質問集
  • カテゴリ一覧
MSN相談箱IE8

PR

サインインすると質問や回答を投稿できます。

相談箱にサインイン 新規登録

この質問に関連するQ&A

このカテゴリーの新着Q&A

編集部ピックアップQ&A

夏のボーナス特集
夏のボーナス特集

恒例のボーナスシーズン!ボーナスの使い道や殖やし方など、ボーナスに関するQ&Aを集めました

ゴルフお悩み相談箱
ゴルフお悩み相談箱

コースでのナイスプレーには正しい知識と練習が必須!飛ばない、曲がる、ゴルフの悩みを解決

おすすめ特集

あみ先生の公開質問授業
あみ先生の公開質問授業

もうすぐ終了。スカパー!Netテレビに関する疑問質問を、公開授業で一発解決!

気になるキーワード

検索語キーワードランキング

1位:
むずむず脚症候群
up
2位:
東国原知事
keep
3位:
蛇にピアス
up
他のランキングを見る
注目キーワード
  • 七夕
  • 梅雨
  • 海開き
  • クールビズ
  • お中元
  • エコポイント

最新の話題

ちょっと! 何撮ってるの?
ちょっと! 何撮ってるの?
  • 与那国島に陸自配置へ 中国に対抗
  • 橋下マジック限界?首長連合の行方
  • アマゾン関連会社に140億円追徴
  • 水没の車に遺体 コードで手縛られ
  • 早食い小林さん、3個半及ばず2位
  • 大塚ちひろ、西川貴教との破局示唆
  • マイケルさんの医師5人以上を捜査

MSN 関連チャンネル

デジタルライフ  |  資格・学習  |  ビデオ  |  辞書  |  エンカルタ百科事典  |  転職・アルバイト  |  自動車

PR

MSN相談箱 > [技術者向] コンピューター > プログラミング > C&C++

C言語でヒストグラムを作成するプログラムを作りたいのですが

例: 湿気 対策

検索オプション 質問する

インタレストマッチ(詳細)
  • FX取引なら≪上田ハーロー≫  -  手数料0円スプレッド最小0銭から!高水準サービスを誇る上田ハーロー
  • 「生涯学習のユーキャン」  -  ユーキャンは資格・趣味等の通信講座を提供。案内資料請求・申込受付中
  • 写真・画像をより魅力的に  -  チュートリアル満載!アドビの無料オンラインマガジンDEKIMAGA
  • 安心・有利なFX取引なら  -  FXよりも有利でお得?為替ライフ&くりっく365の魅力はコチラから
  • このQ&Aは役に立った
  • 役にたった:0件
  • このQ&Aをともだちに紹介する
  • このQ&Aをブックマークする

質問

質問者:locker C言語でヒストグラムを作成するプログラムを作りたいのですが
困り度:
  • すぐに回答を!
C言語でヒストグラムを作成するプログラムを書いたのですが、正しい濃度値が出力されずに困っています。
ヘッダなしの2バイト画像データを読み込みヒストグラムを書き出すプログラムです。
gccを使っています。
よろしくお願いします。
質問投稿日時:07/01/16 14:32
質問番号:2670267
  • この質問に回答します
  • 質問を締め切ります
最新から表示|回答順に表示

回答

 

回答者:php504 2バイト画像のバイトオーダーは確認されましたか
Big Endian か Little Endian か
種類:アドバイス
どんな人:一般人
自信:参考意見
  • ログインして投票する
  • 参考になった:0件
回答日時:07/01/17 09:01
回答番号:No.2
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼ご回答ありがとうございます。
読み込む画像が1バイトの画像になってました。
1バイト毎読み込むように変えたらうまくいきました。
誠にありがとうございました。

回答

 

回答者:yosi_yosi それで具体的に質問したいことは何でしょう?
これだけの情報だと、あなたの作ったプログラムが間違っているとしか答えようが無いと思いますが・・・
種類:アドバイス
どんな人:経験者
自信:参考意見
  • ログインして投票する
  • 参考になった:0件
回答日時:07/01/16 17:05
回答番号:No.1
この回答への補足回答ありがとうございます。
下記のプログラムを作成したのですが、間違いがありますでしょうか?

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

int main(int argc, char *argv[]) {
char infile[256], histogramfile[256];
int mszx, mszy;
short *inputimg;
int *histogram;
short max;
int i;
short bin_width,bin_num;
FILE *fp;

if (argc != 6) {
printf("Usage: %s (入力画像ファイル) (ヒストグラムファイル) (画像サイズX) (画像サイズY) (区関数) \n", argv[0]);
exit(0);
}

strcpy(infile,argv[1]); /*入力画像ファイル名をinfileに代入*/
strcpy(histogramfile,argv[2]); /*ヒストグラムファイル名をhistogramfileに代入*/
mszx = atoi(argv[3]); /*画像のx方向の画素数をmszxに代入*/
mszy = atoi(argv[4]); /*画像のy方向の画素数をmszyに代入*/
bin_width = atoi(argv[5]); /*区間の幅をbin_widthに代入*/

printf("INPUT ORIGINAL IMAGE = %s \n", infile);
printf("Histogram FILE = %s \n", histogramfile);
printf("size X = %d \n", mszx);
printf("size Y = %d \n", mszy);
printf("bin width = %d \n", bin_width);

/*----------画像のメモリ領域確保 入力画像をメモリに記憶する領域を確保する.---------------*/
inputimg = (short*)malloc(mszx * mszy * sizeof(short));

/*-----------原画像読み込み ヘッダ無しの2バイト画像データファイルを読み込む.-------------*/
if((fp=fopen(infile,"rb")) == NULL) {
printf("OPEN FAILED %s\n", infile);
exit(0);
}
fread(inputimg, sizeof(short), mszx * mszy, fp);
fclose(fp);

/*------------データ区間数の設定 画像値の最大値を求めて区関数を設定する.----------*/

max = 0;
for (i = 0; i < mszx * mszy; i++) {
if ( inputimg[i] > max ){
max = inputimg[i];
}
}
printf("max = %d\n",max);
bin_num = max / bin_width + 1;
printf("bins num = %d\n",bin_num);

/*-----------ヒストグラムのメモリ領域確保 ヒストグラムデータをメモリに記憶する領域を確保する.----------*/

histogram = (int*)malloc(bin_num * sizeof(int));

/*------------ヒストグラムの初期化 ヒストグラムのメモリ領域を0で初期化する.--------------*/

for (i = 0; i < bin_num; i++) {
histogram[i] = 0;
}

/*-------------画像処理 (ヒストグラム作成)-------------*/
for (i = 0; i < mszx * mszy; i++) {
histogram[ (short)( (float) inputimg[i] / (float) bin_width ) ] ++;
}

/*-------------ヒストグラム書き出し------------*/
if((fp=fopen(histogramfile,"wt")) == NULL) {
printf("OPEN FAILED %s\n", histogramfile);
exit(0);
}
fprintf(fp,"Histogram INPUT IMAGE %s \n",infile);
for (i = 0; i < bin_num; i++) {
fprintf(fp,"%d %d \n",i,histogram[i]);
}
fclose(fp);

/*----------メモリ領域開放 確保していたメモリ領域を開放する.------------*/
free(inputimg);
free(histogram);

return 0;
}
この回答へのお礼この回答にお礼をつける(質問者のみ)
  • このQ&Aをともだちに紹介する
  • このQ&Aをブックマークする
  • このQ&Aは役に立った
  • 役にたった:0件
最新から表示|回答順に表示

この質問に関連するQ&A


「ぜんぶ検索」で、画像や動画もまとめて検索してみよう!
インタレストマッチ(詳細)
  • FX取引なら≪上田ハーロー≫  -  手数料0円スプレッド最小0銭から!高水準サービスを誇る上田ハーロー
  • 「生涯学習のユーキャン」  -  ユーキャンは資格・趣味等の通信講座を提供。案内資料請求・申込受付中
  • 写真・画像をより魅力的に  -  チュートリアル満載!アドビの無料オンラインマガジンDEKIMAGA

[PR] お役立ち情報

このページのトップへ
  • ライフ | 
  • デジタルライフ | 
  • 趣味 | 
  • エンターテインメント | 
  • 美容&健康 | 
  • ビジネス&キャリア | 
  • 社会 | 
  • マネー | 
  • 学問&教育
はじめての方へ|ヘルプ|FAQ

利用規約|プライバシーポリシー

Copyright © OKWave. All rights reserved.Powered by OKWave
  • プライバシー
  • 使用条件
  • 広告掲載
  • RSS
  • ヘルプ
  • お問い合わせ・ご意見
© 2009 Microsoft