2

私の質問は、 std::vector の cv::Mat に似ています...どうすればいいですか?

各要素が std::vector である行列が必要です。この行列は、同じサイズの一連の画像 (ビデオなど) に対して行われた計算の出力です。計算の多くは典型的な cv 関数 (グレー スケール、ボックス フィルターなどに変換) であり、ピクセルの値がベクトルに追加されます。画像がいくつあるかは事前にわかりませんが、いずれにせよ、画像が 512 を超える可能性があるため、チャネルの概念を使用することはできません。

そこで提案された答えの 1 つは、ポインターのマットを使用することでした。それで、次のことを試してみると、うまくいくでしょうか?

これは Windows マシン上で行われ、ポインターのサイズが INT-PTR 64 ビット幅であることを理解しています。その後、CV_64 を使用できますが、CV_64F のみが定義されています。この行列では計算を行わないので、これを使用してポインタを格納できますか。最初の画像を読み取る前に、サイズを取得し、この行列を作成し、「new std::vector」を使用して各ピクセルのベクトルを作成し、そのポインタを要素に格納すると考えています。計算のループでは、同じアクセス オフセットを使用して元の画像を読み取り、出力をベクトルに格納します。ベクトルの処理が完了したら、cv::mat を解放する前にこれらを削除する必要があります。

私よりも opencv について詳しい方からのご意見をお待ちしております。これは、実際には opencv を使用した最初のアプリケーションからのものです。

4

1 に答える 1