VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > C#编程 >
  • C#教程之C#调用OpenCV开发简易版美图工具(2)

效果图如下:

反转

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
using (var src = new Mat(@"..\..\Images\ocv02.jpg", ImreadModes.AnyDepth | ImreadModes.AnyColor))
{
    using (var dst = new Mat())//复制以后处理
    {
        Cv2.BitwiseNot(src, dst, new Mat());
        var mem = dst.ToMemoryStream();
        BitmapImage bmp = new BitmapImage();
        bmp.BeginInit();
        bmp.StreamSource = mem;
        bmp.EndInit();
        imgOutput.Source = bmp;
    }
}

效果图如下:

亮度—变暗

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
BitmapImage bmpSource = new BitmapImage(new Uri("pack://application:,,,/images/ocv02.jpg" ));
Mat mat = bmpSource.ToMat();
for (var y = 0; y < mat.Height; y++)
{
    for (var x = 0; x < mat.Width; x++)
    {
        Vec3b color = mat.Get<Vec3b>(y, x);
        int item0 = color.Item0;
        int item1 = color.Item1;
        int item2 = color.Item2;
        #region  变暗
        item0 -= 60;
        item1 -= 60;
        item2 -= 60;
        if (item0 < 0)
            item0 = 0;
        if (item1 < 0)
            item1 = 0;
        if (item2 < 0)
            item2 = 0;
        #endregion
        #region  变亮
        //item0 += 80;
        //item1 += 80;
        //item2 += 80;
        //if (item0 > 255)
        //    item0 = 255;
        //if (item1 > 255)
        //    item1 = 255;
        //if (item2 > 255)
        //    item2 = 255;
        #endregion
 
        color.Item0 = (byte)item0;
        color.Item1 = (byte)item1;
        color.Item2 = (byte)item2;
        mat.Set(y, x, color);
    }
}
var mem = mat.ToMemoryStream();
BitmapImage bmp = new BitmapImage();
bmp.BeginInit();
bmp.StreamSource = mem;
bmp.EndInit();
imgOutput.Source = bmp;
mat.Dispose();/// 该方法在mat里被重写了,可以释放资源,可以放心调用
相关教程