1
Mat img=imread("image_location");

「img」変数は、元のオブジェクト(この場合は画像)を参照するJavaのオブジェクト参照変数のようなものであることがわかりました。好奇心から、「img」変数が保持するものを見つけようと考えました。実際のオブジェクトを参照する場合、アドレスを保持し、使用時にアドレスを返す必要があります

cout<<img;

しかし、ショック、実際の画像(ピクセル値)を出力に返しています。私の理解には何か問題があると思います。助けてください、私は脳にこれらの概念を理解させようとしている初心者プログラマーです。

4

3 に答える 3

2

cv::Mat配列内の画像を表すデータと、インスタンスに固有のその他のデータを保持しcv::Matます。データ配列自体は、画像の形式によって異なります。さまざまな数のチャネルとチャネル深度を使用できます。使用するimread場合は、これをある程度制御できる 2 番目のパラメーターを渡すことができます。したがってcv::Mat、元のオブジェクトへのポインターはありません。そのオブジェクトを表すデータを含む配列へのポインターがあります。

その上、OpenCV の新しいバージョンでは、ostream& operator<<が にオーバーロードされcv::Mat、配列値の適切な出力を行列形式で生成しようとします。これはあなたがあなたがするときあなたが見るものですstd::cout << someMat;

于 2012-05-13T07:43:13.243 に答える
1

のオーバーロードが原因である可能性がありoperator<<ますcv::Mat

于 2012-05-13T07:08:22.830 に答える
0

Mat オブジェクトにはデータへのポインターが含まれていますが、他の値も含まれています。詳細については、ドキュメントを参照してください。

于 2012-05-13T07:37:22.317 に答える