A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
2バイト画像のバイトオーダーは確認されましたか
Big Endian か Little Endian か
ご回答ありがとうございます。
読み込む画像が1バイトの画像になってました。
1バイト毎読み込むように変えたらうまくいきました。
誠にありがとうございました。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++ 3 2022/12/22 01:49
- C言語・C++・C# C言語の質問です。バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、 3 2023/07/19 14:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あるプログラムのコマンドライ...
-
Excelで4096点以上のFFTの方法
-
このプログラミング誰か教えて...
-
PICマイコンのコピー(クローン...
-
テキストボックスのエンターキ...
-
Excelに埋め込んだVBAのプログ...
-
プログラムを斜めに並べる
-
「Outlookが他のプログラムによ...
-
Notepad++の関数リスト表示でC...
-
円周率を求めるC言語のプログラム
-
等差数列の和を求めるプログラム
-
表計算プログラムの作り方
-
寿命
-
ラベルのアドレスを知る方法は...
-
Vba UserFormを前面に出す方法...
-
VBAにてメール作成した際、一部...
-
COBOLの連絡領域について
-
XnViewにwebpを「いつも開く」...
-
自動クエリとはどういうもので...
-
グラフをC#のASP.net MVCで表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelに埋め込んだVBAのプログ...
-
Notepad++の関数リスト表示でC...
-
あるプログラムのコマンドライ...
-
これってほんとにみますか?
-
Excelで4096点以上のFFTの方法
-
「Outlookが他のプログラムによ...
-
自動クエリとはどういうもので...
-
VBAでユーザーフォームが自動的...
-
VBAにてメール作成した際、一部...
-
PICマイコンのコピー(クローン...
-
テキストボックスのエンターキ...
-
読み込み中にアクセス違反が発...
-
特定のwebサイトのタイトルや記...
-
未使用の変数を一括検索する方法
-
モジュール、アプリケーション...
-
COBOLの連絡領域について
-
Google カレンダーの商用利用
-
エクセルとワードをデスクトッ...
-
ドロップダウンリストの文字を...
-
binファイルってiphone専用です...
おすすめ情報