C# combinado com operações de imagem OpenCV (3), adição, subtração, multiplicação, divisão e/ou valores não absolutos

Operações de imagem, adição, subtração, multiplicação, divisão, OR, XOR

Aqui, um tipo de enumeração é construído para operações de imagem. 

public enum ImageOperation

    {
        Add,
        Divide,
        Multiply,
        SubStact,
        And,
        Or,
        Xor,
        Max,
        Min
    }

 Encapsule a operação e operação de imagens para facilitar o uso.

1: Adicionar adição de imagem. Os valores das duas matrizes são somados diretamente.

2: Divida a divisão da imagem, os valores correspondentes às duas matrizes são divididos pela escala scr1/scr2*

3: As imagens multiplicadas são multiplicadas e os valores correspondentes às duas matrizes são multiplicados por scr1*scr2*scale

4: Subtração de imagem SubStact, subtraia os valores correspondentes das duas matrizes  

5: E e

6:ou 或

7: xor exclusivo ou

8: Max O valor máximo das posições correspondentes das duas matrizes

9: Min é o valor mínimo das posições correspondentes das duas matrizes

/// <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);
            }
          
        }

Valor absoluto da imagem

Geralmente usado em algoritmos de busca de borda, como Sobel

 Cv2.ConvertScaleAbs(Srcimage, dst);

Acho que você gosta

Origin blog.csdn.net/weixin_43852823/article/details/127744276
Recomendado
Clasificación