Как установить cv::Mat в ноль, где другая матрица отлична от нуля?
У меня есть матрица D
который я хотел бы установить на ноль, где другая матрица T
равен нулю и остаётся нетронутым В Numpy, я бы сделал это:
D[T==0]=0;
но с cv::Mat
, не уверен, как это сделать. Я попробовал это:
D&=(T!=0);
с этим результатом:
OpenCV Error: Assertion failed (type == B.type()) in gemm, file /build/opencv-AuXD2R/opencv-3.3.1/modules/core/src/matmul.cpp, line 1558
terminate called after throwing an instance of 'cv::Exception'
what(): /build/opencv-AuXD2R/opencv-3.3.1/modules/core/src/matmul.cpp:1558: error: (-215) type == B.type() in function gemm
Проблема в том, что я смешиваю числовые типы? Я тоже попробовал это тогда (D
является CV_32F
а также, что я проверял, выводя T.type()
, 5
):
cv::Mat TnotZero;
cv::Mat(T!=0).convertTo(TnotZero,CV_32F);
D&=TnotZero;
с тем же результатом.
Каково решение?