OpenCVで画像を読み込み、サイズを取得してサーバに送信して画像を処理し、それを元に戻す必要があります特徴。サーバにデータを転送するためにバイト配列にcv :: Matを格納する
私はvector<byte>
を使用することを考えていましたが、データをcv :: Matにコピーする方法はわかりません。私はそれが速いので、ポインターでデータにアクセスしようとしているwan'tしかし、私は実行時例外があります。私はこのようなものを持っています。このタスクのための最善のアプローチである
Mat image = imread((path + "name.jpg"), 0);
vector<byte> v_char;
for(int i = 0; i < image.rows; i++)
{
for(int j = 0; j < image.cols; j++)
{
v_char.push_back(*(uchar*)(image.data+ i + j));
}
}
- ?それはOpenCVのための最速であるよう
確かに、私はこの方法がより好きです –
なぜあなたはmemcpyをするために必要ですか?なぜすべてのメモリをコピーしないのですか? –
一般的に、Mat :: stepはMat :: colsとは異なるためです。これにより、実際にバイトを再構成することなく、行列をトリミングすることができます。データをコピーせずに、ウィンドウを参照するサブマトリックスを別のマトリックスにすることができます。サブマトリクス内のセルを変更すると、元のマトリクス内のセルが実際に変更されます。サブマトリクスは参照するだけです。 – Dialecticus