EmguCV-图像基本运算

图像加法

// 两图片必须有相同的大小和位深度
    Mat img1 = CvInvoke.Imread(@"C:\Users\Administrator\Desktop\22.jpg", LoadImageType.Color);
    Mat img2 = CvInvoke.Imread(@"C:\Users\Administrator\Desktop\11.png", LoadImageType.Color);
    Mat dstImg = new Mat();
    CvInvoke.Add(img1, img2, dstImg);
    //按照权重叠加
    CvInvoke.AddWeighted(img1, 0.5, img2, 0.5, 0, dstImg);

图像加减

Mat img1 = CvInvoke.Imread(@"C:\Users\Administrator\Desktop\22.jpg", LoadImageType.Color);
    Mat img2 = CvInvoke.Imread(@"C:\Users\Administrator\Desktop\11.PNG", LoadImageType.Color);
    Mat dstImg = new Mat();
    
    //CvInvoke.Subtract(img1, img2, dstImg);//差值   小于0 取0
    CvInvoke.AbsDiff(img1, img2, dstImg);//差值的绝对值
    CvInvoke.Imshow("result Img", dstImg);
    CvInvoke.WaitKey(0);

图像的乘除法

Mat img1 = CvInvoke.Imread(@"C:\Users\Administrator\Desktop\22.jpg", LoadImageType.Color);
    Mat img2 = CvInvoke.Imread(@"C:\Users\Administrator\Desktop\11.PNG", LoadImageType.Color);
    
    Mat temp = new Mat(new Size(img1.Cols,img1.Rows),DepthType.Cv8U,3);
    temp.SetTo(new MCvScalar(1,5,1));
    Mat dstImg = new Mat();
    CvInvoke.Multiply(img1, temp, dstImg, 1);//矩阵相乘
    
    //CvInvoke.Divide(img1, temp, dstImg, 1);//矩阵相除
    CvInvoke.Imshow("result Img", dstImg);
    CvInvoke.WaitKey(0);

图像逻辑运算 按位操作

Mat img1 = CvInvoke.Imread(@"C:\Users\Administrator\Desktop\111.png", LoadImageType.Color);
Mat img2 = CvInvoke.Imread(@"C:\Users\Administrator\Desktop\222.png", LoadImageType.Color);
Mat dstImg = new Mat();
//CvInvoke.BitwiseAnd(img1, img2, dstImg);//图像相与
//CvInvoke.BitwiseOr(img1, img2, dstImg);//图像相或
//CvInvoke.BitwiseNot(img1,dstImg);//逻辑非
CvInvoke.BitwiseXor(img1, img2, dstImg);//图像异或
CvInvoke.Imshow("result Img", dstImg);
CvInvoke.WaitKey(0);

 

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注