Я очень новичок в OpenCV, поэтому, я думаю, я делаю какую-то глупую ошибку.Сбой функции OpenCV с маской, созданной из пороговой функции OpenCV?
Сначала я создаю пустую матрицу cv::mat
, mask
, CV_8U
и заполняю ее нулями. Затем я заполняю матрицу либо 0, либо 255, проверяя значения в CV_32FC1
типа cv::mat
матрицы croppedDifferenceImage
с использованием cv::threshold
. Затем я использую mask
в качестве параметра для функции cv::mean
.
cv::Mat mask = cv::Mat(croppedDifferenceImage.rows, croppedDifferenceImage.cols, CV_8U, cv::Scalar(0));
cv::threshold(croppedDifferenceImage, mask, 3.2, 255, CV_THRESH_BINARY);
double mean = cv::mean(croppedDifferenceImage, mask)[0];
Но я продолжаю имея аварию с сообщением:
/build/buildd/opencv-2.4.8+dfsg1/modules/core/src/stat.cpp:565: error: (-215) mask.empty() || mask.type() == CV_8U in function mean
Что я делаю неправильно?
Любая причина, по которой вы используете opencv 2.4.0, а не opencv 3? – PhotometricStereo
Я не знаю, есть ли какие-то причины. Я только что присоединился к этому проекту и очень новичок в opencv. –
Каков тип 'mask'? Согласно документации для 'threshold', пункт назначения имеет« тот же размер и тип, что и src ». Это означает, что вы передаете CV_32FC1 в качестве маски для 'mean', что недопустимо. –