Как установить 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;

с тем же результатом.

Каково решение?

0 ответов

Другие вопросы по тегам