異なる画素値

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
median

異なる画素値

#1

投稿記事 by median » 15年前

opencvで40*40のグレースケール画像の画素値を求めてtxtファイルに出力するプログラムを作成したのですが、
なぜかtxtの最後のほうの画素値が、数か所実際の画素値と異なった値になっていました。
もしプログラムに問題があるようでしたらご教授お願いします。

コード:

#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <math.h>

int main(){
	
	IplImage* test = cvLoadImage("1.jpg",CV_LOAD_IMAGE_ANYDEPTH);
	uchar grayvector[1];
	uchar p[1];
	const int facesize = 40; 
	int *yvector_normal = (int*)malloc(sizeof(int*) * facesize * facesize);

	int i = 0;
	for(int y = 0; y < facesize; y++){
		for(int x = 0; x < facesize; x++){
			//入力画像のベクトルを取得
			grayvector[0] = test->imageData[test->widthStep * y + x * 3 + 2];
			yvector_normal[i] = (int)grayvector[0];
			i++;
			}
		}
		
		//保存した画像の画素をファイルに保存
		FILE *outputfile;
		outputfile = fopen("yvector.txt","w");
		//画素情報をファイルに書き込み
		for(int y = 0; y < facesize; y++){
			for(int x = 0; x < facesize; x++){
				p[0] = test->imageData[test->widthStep * y + x * 3 + 2];
				int gray = (int)p[0];
				fprintf(outputfile,"%d ",gray);
			}
		}

		fprintf(outputfile,"\n");
		fclose(outputfile);

	printf("i = %d\n",i);
	//画像の値読み込み(チェック用)
	printf("後ろ40個↓\n");
	for(int i = 1560;i < 1600;i++)
		printf("y[%d] = %d\n",i,yvector_normal[i]);
	printf("前20個↓\n");
	for(int i = 0;i < 20;i++)
		printf("y[%d] = %d\n",i,yvector_normal[i]);
	free(yvector_normal);
	return(0);
}
 

“C言語何でも質問掲示板” へ戻る