Я использую cv2::absdiff()
для вычитания скаляра из матрицы изображений. Код я использую:Не могу понять поведение cv2 :: absdiff: C++
double min;
double max;
Scalar mean;
Scalar std_dev;
minMaxLoc(img_a_color_planes[1], &min, &max);
meanStdDev(img_a_color_planes[1], mean, std_dev);
Mat img_a_color_planes[3];
split(img_a, img_a_color_planes);
Mat oper = img_a_color_planes[1];
absdiff(oper, mean, oper);
divide(oper, std_dev, oper);
multiply(oper, 10, oper);
add(oper, mean, oper);
Здесь, я специально переписал зеленый канал img_a
в Mat oper
, несмотря на выходной матрицы oper
уточняются в absdiff
. Даже тогда на зеленый цветной канал img_a_color_planes[1]
влияет. Я не понимаю причину этого. Как я могу избежать этого? Вот как мой img_a
становится пострадавших после absdiff
операции:
Начальная img_a
:
Что такое mean и std_dev? Зеленый только, или целое изображение? –
Они предназначены только для зеленого канала. Я редактировал свой код. –
'Mat oper = img_a_color_planes [1] .clone();' – Miki