画像演算、加算、減算、乗算、除算、OR、XOR
ここでは、画像操作用に列挙型が構築されます。
public enum ImageOperation
{
Add,
Divide,
Multiply,
SubStact,
And,
Or,
Xor,
Max,
Min
}
画像の操作と操作をカプセル化し、使いやすくします。
1: 画像加算を追加 2つの行列の値を直接加算します。
2: 画像分割を分割し、2 つの行列に対応する値を scr1/scr2*scale で分割します
3:乗算画像を乗算し、2つの行列に対応する値をscr1*scr2*scaleで乗算します
4:SubStact画像減算、2つの行列の対応する値を減算します
5: そしてそして
6:または または
7: xor 排他的論理和
8: Max 2 つの行列の対応する位置の最大値
9: Min は 2 つの行列の対応する位置の最小値です。
/// <summary>
/// 图片运算
/// </summary>
/// <param name="Srcimage">输入图片1</param>
/// <param name="Srcimage1">输入图片2</param>
/// <param name="mode">运算模式</param>
/// <param name="dst">输出图像</param>
/// <param name="scale">缩放系数</param>
/// <exception cref="ArgumentOutOfRangeException"></exception>
public static void ImageOperation(InputArray Srcimage, InputArray Srcimage1, ImageOperation mode, OutputArray dst, int scale = 0)
{
switch (mode)
{
case ImageOperation.Add:
Cv2.Add(Srcimage, Srcimage1, dst);
break;
case ImageOperation.Divide:
Cv2.Divide(Srcimage, Srcimage1, dst, scale);
break;
case ImageOperation.Multiply:
Cv2.Multiply(Srcimage, Srcimage1, dst, scale);
break;
case ImageOperation.SubStact:
Cv2.Subtract(Srcimage, Srcimage1, dst);
break;
case ImageOperation.And:
Cv2.BitwiseAnd(Srcimage, Srcimage1, dst);
break;
case ImageOperation.Or:
Cv2.BitwiseOr(Srcimage, Srcimage1, dst);
break;
case ImageOperation.Xor:
Cv2.BitwiseXor(Srcimage, Srcimage1, dst);
break;
case ImageOperation.Max:
Cv2.Max(Srcimage, Srcimage1, dst);
break;
case ImageOperation.Min:
Cv2.Min(Srcimage, Srcimage1, dst);
break;
default:
throw new ArgumentOutOfRangeException(nameof(mode), mode, null);
}
}
画像絶対値
通常、sobel などのエッジ探索アルゴリズムで使用されます。
Cv2.ConvertScaleAbs(Srcimage, dst);