#include
#include
int main(void){
char img_name1[]="";
char img_name2[]="";
printf("画像1をドロップしてください\n");
scanf("%s", img_name1);
printf("画像2をドロップしてください\n");
scanf("%s", img_name2);
// 画像の読み込み
int x2 = 0;
cv::Mat srcImg = cv::imread(img_name1);
printf("gray_img");
cv::Mat gray_img;
printf("グレースケール");
// グレースケールに変換する
cvtColor(srcImg, gray_img, CV_RGB2GRAY);
printf("Mat gray_img_B");
cv::Mat gray_img_B;
// グレースケールに変換する
cvtColor(srcImg, gray_img_B, CV_RGB2GRAY);
cv::Mat srcImg2 = cv::imread(img_name2);
cv::Mat gray_img2;
// グレースケールに変換する
cvtColor(srcImg2, gray_img2, CV_RGB2GRAY);
int count = gray_img_B.rows*gray_img_B.cols;
int color[20000];
int color2[20000];
int color_S[20000];
int hist_G[20000]; //ヒストグラム
int hist_G_S[20000]; //ヒストグラム
int hist_G2[20000]; //ヒストグラム
int hist_G2_S[20000]; //ヒストグラム
int x, y;
//*******************************************
//* 濃淡変換 *
//*******************************************
x2 = 0;
for (y = 0; y < gray_img.rows; y++) {
// ポインタの取得
for (x = 0; x < gray_img.cols; x++) {
color_S[x2] = gray_img.at(x, y);
//符号計算
if (color_S[x2] >= 0)
color_S[x2] = 0 - color_S[x2];
if (color_S[x2]<0)
color_S[x2] = 0 + color_S[x2];
gray_img.at(x, y) = color_S[x2];
x2++;
}
}
cv::namedWindow("入力画像", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
cv::namedWindow("出力画像", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
cv::imshow("入力画像", srcImg);
cv::imshow("出力画像", gray_img);
cv::waitKey(2000);
// 指定したウィンドウを消す
cv::destroyWindow("出力画像");
printf("処理中\n");
//************************************************************************************
x2 = 0;
//*******************************************
//* 値取得 *
//*******************************************
printf("1\n");
for (y = 0; y < gray_img_B.rows; y++) {
// ポインタの取得
for (x = 0; x < gray_img_B.cols; x++) {
color[x2] = gray_img_B.at(x, y);
x2 = x2 + 1;
}
}
y = 0;
//初期化
for (x = 0; xcount)
flag = false;
}
y++;
}
y = 0;
for (x = 0; x0){
hist_G_S[y] = hist_G[x];
y++;
}
}
//************************************************************************************
flag = true;
//************************************************************************************
x2 = 0;
//*******************************************
//* 値取得 *
//*******************************************
printf("2\n");
for (y = 0; y < gray_img_B.rows; y++) {
// ポインタの取得
for (x = 0; x < gray_img_B.cols; x++) {
color2[x2] = gray_img2.at(x, y);
x2 = x2 + 1;
}
}
y = 0;
//初期化
for (x = 0; xcount)
flag = false;
}
y++;
}
y = 0;
for (x = 0; x0){
hist_G2_S[y] = hist_G2[x];
y++;
}
}
//************************************************************************************
int sum_count[20000];
int sum_count_C = 0;
int num = 0;
float sum_count_C2;
for (x = 0; x
↧