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;