opencvで画像ピクセルにfloat配列としてアクセスしたい。私は次のことをしました:
Mat input = imread("Lena.jpg",CV_LOAD_IMAGE_GRAYSCALE);
int height = input.rows;
int width = input.cols;
Mat out;
input.convertTo(input, CV_32FC1);
copyMakeBorder(input, input, 3, 3, 3, 3, 0);
out = Mat(height, width, input.type());
float *outdata = (float*)out.data;
float *indata = (float*)input.data;
for(int j = 0; j < height; j++){
for(int i =0; i < width; i++){
outdata[j*width + i] = indata[(j* width + i)];
}
}
normalize(out, out,0,255,NORM_MINMAX,CV_8UC1);
imshow("output", out);
waitKey();
これにより、元の画像が「アウト」に返されるはずですが、奇妙な画像が得られます。コードの何が問題なのか誰でも説明できますか。ステップサイズ(widthStep)を使用する必要があると思います。ありがとう。