1

私はopencvマトリックスを学び、使用しようとしてきましたが、ある点に行き詰まっています。

ここに私のコードがあります、

Mat my_img, im_rgb;

im_rgb = imread(imageName, 1);
my_img.create(im_rgb.size(), im_rgb.type()); 

cout << (int)my_img.at<Vec3b>(20,20).val[0] << " first\n";

my_img.zeros(im_rgb.size(), im_rgb.type()); 
cout << (int)my_img.at<Vec3b>(20,20).val[0] << " second \n" ;

my_img.at<Vec3b>(20,20).val[0] = 0;
cout << (int)my_img.at<Vec3b>(20,20).val[0] << third;

イメージを読み取り、Mat, my_imgと同じタイプの を作成しim_rgb, CV_8UC3ます。

出力は

205 first
205 second
0 third

出力に関する多くの試行錯誤の後、私の解釈は、マトリックス内で作成された my_img がいっぱいに205なり、関数を呼び出したときにzeros何もしていないということです。しかし、行列の要素の値を変更できます。

これをmatlabで試すと、行列が0で満たされます。

私は何が間違っているのだろうか?ありがとう、

4

1 に答える 1