mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
Allow access to CUDA memory and stream pointers for interoperability.
This commit is contained in:
parent
43a907ddda
commit
53c0189ed7
@ -305,6 +305,9 @@ public:
|
|||||||
//! returns true if GpuMat data is NULL
|
//! returns true if GpuMat data is NULL
|
||||||
CV_WRAP bool empty() const;
|
CV_WRAP bool empty() const;
|
||||||
|
|
||||||
|
// returns pointer to cuda memory
|
||||||
|
CV_WRAP void* cudaPtr() const;
|
||||||
|
|
||||||
//! internal use method: updates the continuity flag
|
//! internal use method: updates the continuity flag
|
||||||
CV_WRAP void updateContinuityFlag();
|
CV_WRAP void updateContinuityFlag();
|
||||||
|
|
||||||
@ -681,6 +684,9 @@ public:
|
|||||||
//! returns true if stream object is not default (!= 0)
|
//! returns true if stream object is not default (!= 0)
|
||||||
operator bool_type() const;
|
operator bool_type() const;
|
||||||
|
|
||||||
|
//! return Pointer to CUDA stream
|
||||||
|
CV_WRAP void* cudaPtr() const;
|
||||||
|
|
||||||
class Impl;
|
class Impl;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -343,6 +343,12 @@ bool GpuMat::empty() const
|
|||||||
return data == 0;
|
return data == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline
|
||||||
|
void* GpuMat::cudaPtr() const
|
||||||
|
{
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
GpuMat createContinuous(int rows, int cols, int type)
|
GpuMat createContinuous(int rows, int cols, int type)
|
||||||
{
|
{
|
||||||
|
@ -535,6 +535,15 @@ Stream& cv::cuda::Stream::Null()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void* cv::cuda::Stream::cudaPtr() const
|
||||||
|
{
|
||||||
|
#ifndef HAVE_CUDA
|
||||||
|
return nullptr;
|
||||||
|
#else
|
||||||
|
return impl_->stream;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
cv::cuda::Stream::operator bool_type() const
|
cv::cuda::Stream::operator bool_type() const
|
||||||
{
|
{
|
||||||
#ifndef HAVE_CUDA
|
#ifndef HAVE_CUDA
|
||||||
|
@ -26,5 +26,13 @@ class cuda_test(NewOpenCVTests):
|
|||||||
|
|
||||||
self.assertTrue(np.allclose(cuMat.download(), npMat))
|
self.assertTrue(np.allclose(cuMat.download(), npMat))
|
||||||
|
|
||||||
|
def test_cuda_interop(self):
|
||||||
|
npMat = (np.random.random((128, 128, 3)) * 255).astype(np.uint8)
|
||||||
|
cuMat = cv.cuda_GpuMat()
|
||||||
|
cuMat.upload(npMat)
|
||||||
|
self.assertTrue(cuMat.cudaPtr() != 0)
|
||||||
|
stream = cv.cuda_Stream()
|
||||||
|
self.assertTrue(stream.cudaPtr() != 0)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
NewOpenCVTests.bootstrap()
|
NewOpenCVTests.bootstrap()
|
||||||
|
Loading…
Reference in New Issue
Block a user