diff --git a/aidge_backend_opencv/unit_tests/test_tensor.py b/aidge_backend_opencv/unit_tests/test_tensor.py index a47e9a9812b45f71a3a859ddb04a7ce586f0500a..a3cf628588dcaa9ac479f6a61ced9dad624dc75c 100644 --- a/aidge_backend_opencv/unit_tests/test_tensor.py +++ b/aidge_backend_opencv/unit_tests/test_tensor.py @@ -19,7 +19,7 @@ class test_tensor(unittest.TestCase): # np_array = np.arange(9).reshape(1,1,3,3) # # Numpy -> Tensor # t = aidge_core.Tensor(np_array) - # self.assertEqual(t.dtype(), aidge_core.DataType.Int32) + # self.assertEqual(t.dtype(), aidge_core.dtype.int32) # for i_t, i_n in zip(t, np_array.flatten()): # self.assertTrue(i_t == i_n) # for i,j in zip(t.dims(), np_array.shape): @@ -41,7 +41,7 @@ class test_tensor(unittest.TestCase): # np_array = np.random.rand(1, 1, 3, 3).astype(np.float32) # # Numpy -> Tensor # t = aidge_core.Tensor(np_array) - # self.assertEqual(t.dtype(), aidge_core.DataType.Float32) + # self.assertEqual(t.dtype(), aidge_core.dtype.float32) # for i_t, i_n in zip(t, np_array.flatten()): # self.assertTrue(i_t == i_n) # TODO : May need to change this to a difference # for i,j in zip(t.dims(), np_array.shape): diff --git a/include/aidge/backend/opencv/data/TensorImpl.hpp b/include/aidge/backend/opencv/data/TensorImpl.hpp index 84a5e54540794ce432e518e43d5ed13ea80db082..c0689ed85c28f3e69d862147892fabb3226ae06f 100644 --- a/include/aidge/backend/opencv/data/TensorImpl.hpp +++ b/include/aidge/backend/opencv/data/TensorImpl.hpp @@ -31,7 +31,7 @@ public: virtual void setCvMat(const cv::Mat& mat ) = 0; }; -template <class T> +template <class T> class TensorImpl_opencv : public TensorImpl, public TensorImpl_opencv_ { private: // Stores the cv::Mat @@ -44,7 +44,7 @@ public: static constexpr const char *Backend = "opencv"; TensorImpl_opencv() = delete; - TensorImpl_opencv(DeviceIdx_t device, std::vector<DimSize_t> dims) + TensorImpl_opencv(DeviceIdx_t device, std::vector<DimSize_t> dims) : TensorImpl(Backend, device, dims) { mDims = dims; @@ -70,6 +70,14 @@ public: return std::make_unique<TensorImpl_opencv<T>>(device, dims); } + inline std::size_t capacity() const noexcept override { + return mData.total() * mData.channels(); + } + + void zeros() override final { + mData = cv::Mat::zeros(mData.size(), mData.type()); + } + void resize(std::vector<DimSize_t> dims) override{ mDims = dims; size_t product = 1; @@ -98,7 +106,7 @@ public: if (length == 0) { return; } - + T* dstT = static_cast<T *>(rawPtr(offset)); AIDGE_ASSERT(length <= (mData.total() * mData.channels()) || length <= mNbElts, "copy length is above capacity"); switch (srcDt) @@ -192,7 +200,7 @@ public: }; void setCvMat(const cv::Mat& mat) override {mData=mat;} - + virtual ~TensorImpl_opencv() = default;