2016-03-19 45 views
2

Eski sürümlerinde OpenCV işlevi Stream::enqueueUpload işleviyle, 0Uile birlikte (how to use gpu::Stream in OpenCV? karşılaştırmasıyla) GPU'ya eşzamansız olarak veri yüklemek için kullanılabilir. Ancak, bu işlev artık OpenCV 3'te yok. CudaMem sınıfı da gitti ancak HostMem sınıfı tarafından değiştirilmiş gibi görünüyor.OpenCV3: cv :: cuda :: Stream :: enqueueUpload() nereye gitti?

Herkes OpenCV 3'te eşzamansız karşıya yükleme işlemini nasıl gerçekleştirebilir?

cevap

4

O void GpuMat::upload(InputArray arr, Stream& stream) yöntemle artık yapılabilir:

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

Teşekkürler, ben bu çalışacağız! – user1488118

+0

Görünüşe göre, şimdi bunu yapmanın doğru yolu bu. Hâlâ bilmek istediğim şey: ekli bir görüntüyü 'cv :: Mat :: copyTo' önlemek için' cv :: imread' ile sayfa kilitli belleğe _directly_ okunabilir mi? – user1488118

+2

'cuda :: HostMem',' MatAllocator' nesnesini döndüren statik 'getAllocator' yöntemini sağlar. 'Cv :: Mat :: setDefaultAllocator' yöntemini kullanarak cv :: Mat' için varsayılan ayırıcıyı geçersiz kılmak için kullanabilirsiniz. Bundan sonra cuda :: HostMem' yerine 'cv :: Mat' nesnelerini kullanabilirsiniz. – jet47