2016-03-19 17 views
2

旧バージョンのOpenCVにはStream::enqueueUploadという機能があり、これはCudaMemhow to use gpu::Stream in OpenCV?との比較)と共に非同期にGPUにデータをアップロードするために使用できます。しかし、この関数はOpenCV 3では存在しなくなりました。CudaMemクラスもなくなりましたが、HostMemクラスに置き換えられているようです。OpenCV3:cv :: cuda :: Stream :: enqueueUpload()はどこにありますか?

OpenCV 3で非同期アップロードを実行する方法を教えてもらえますか?それはvoid GpuMat::upload(InputArray arr, Stream& stream)方法を経由して、今行うことができます

答えて

4

cv::cuda::GpuMat d_mat; 
cv::cuda::HostMem h_mat; 
cv::cuda::Stream stream; 
d_mat.upload(h_mat, stream); 
+0

おかげで、私はこれをしようとします! – user1488118

+0

これはこれを行う正しい方法だと思われます。私はまだ知りたいことがあります: 'cv :: mat :: copyTo'を避けるために、イメージを' cv :: imread'でページロックされたメモリに_directly_読み込むことが可能ですか? – user1488118

+2

'cuda :: HostMem'は、' MatAllocator'オブジェクトを返す静的 'getAllocator'メソッドを提供します。これを使って 'cv :: Mat :: setDefaultAllocator'メソッドを使って' cv :: Mat'のデフォルトアロケータをオーバーライドすることができます。その後、 'cuda :: HostMem'の代わりに' cv :: Mat'オブジェクトを使うことができます。 – jet47

関連する問題