Win8 Metro(C#)数字图像处理--2.73一种背景图像融合特效

简介: 原文:Win8 Metro(C#)数字图像处理--2.73一种背景图像融合特效 /// /// Image merge process.
原文: Win8 Metro(C#)数字图像处理--2.73一种背景图像融合特效

        /// <summary>
        /// Image merge process.
        /// </summary>
        /// <param name="bacImage">The background image.</param>
        /// <param name="dstImage">The source image.</param>
        /// <param name="k">One parameter, from 0 to 1.</param>
        /// <returns></returns>
        public static WriteableBitmap ImageMerge(WriteableBitmap bacImage, WriteableBitmap dstImage, double k)
        {
            if (bacImage != null && dstImage != null)
            {
                int w = dstImage.PixelWidth;
                int h = dstImage.PixelHeight;
                int sw = bacImage.PixelWidth;
                int sh = bacImage.PixelHeight;
                WriteableBitmap srcImage = new WriteableBitmap(w, h);
                byte[] dstValue = dstImage.PixelBuffer.ToArray();
                byte[] bacValue = bacImage.PixelBuffer.ToArray();
                byte[] tempValue = new byte[dstValue.Length];
                int r = 0, g = 0, b = 0, R = 0, G = 0, B = 0;
                for (int y = 0; y < h; y++)
                {
                    for (int x = 0; x < w; x++)
                    {
                        int tx = x % sw;
                        int ty = y % sh;
                        b = bacValue[tx * 4 + ty * w * 4];
                        g = bacValue[tx * 4 + 1 + ty * w * 4];
                        r = bacValue[tx * 4 + 2 + ty * w * 4];
                        B = dstValue[x * 4 + y * w * 4];
                        G = dstValue[x * 4 + 1 + y * w * 4];
                        R = dstValue[x * 4 + 2 + y * w * 4];
                        double xr = 0.0, xb = 0.0, xg = 0.0;
                        xr = ((double)r - ((double)R - (double)k * 255.0)) / (2.0 * 255.0 * k);
                        xg = ((double)g - ((double)G - (double)k * 255.0)) / (2.0 * 255.0 * k);
                        xb = ((double)b - ((double)B - (double)k * 255.0)) / (2.0 * 255.0 * k);
                        tempValue[x * 4 + y * w * 4] = (byte)(255.0 * (1.0 - 3.0 * xb * xb + 2.0 * xb * xb * xb));
                        tempValue[x * 4 + 1 + y * w * 4] = (byte)(255.0 * (1.0 - 3.0 * xg * xg + 2.0 * xg * xg * xg));
                        tempValue[x * 4 + 2 + y * w * 4] = (byte)(255.0 * (1.0 - 3.0 * xr * xr + 2.0 * xr * xr * xr));
                    }
                }
                Stream sTemp = srcImage.PixelBuffer.AsStream();
                sTemp.Seek(0, SeekOrigin.Begin);
                sTemp.Write(tempValue, 0, w * 4 * h);
                return srcImage;
            }
            else
            {
                return null;
            }
        }

最后,分享一个专业的图像处理网站(微像素),里面有很多源代码下载:

目录
相关文章
|
7月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
94 0
|
7月前
|
存储 传感器 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK修改图像像素格式Mono8或者Mono10(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK修改图像像素格式Mono8或者Mono10(C#)
188 0
|
7月前
|
存储 数据处理 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机的高速图像保存(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机的高速图像保存(C#)
73 0
|
7月前
|
监控 算法 开发工具
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现获取图像并对图像进行边缘检测(C#)
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现获取图像并对图像进行边缘检测(C#)
74 1
|
7月前
|
存储 监控 开发工具
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C#)
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C#)
71 0
|
7月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C#)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C#)
71 0
|
7月前
|
存储 传感器 监控
Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像高速保存到电脑内存(C#)
Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像高速保存到电脑内存(C#)
105 0
|
3月前
|
数据采集 JavaScript C#
C#图像爬虫实战:从Walmart网站下载图片
C#图像爬虫实战:从Walmart网站下载图片
|
7月前
|
存储 数据处理 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机图像转换由Mono10转换为Mono8(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机图像转换由Mono10转换为Mono8(C#)
90 0
|
3月前
|
编译器 C# Android开发
震惊!Uno Platform 与 C# 最新特性的完美融合,你不可不知的跨平台开发秘籍!
Uno Platform 是一个强大的跨平台应用开发框架,支持 Windows、macOS、iOS、Android 和 WebAssembly,采用 C# 和 XAML 进行编程。C# 作为其核心语言,持续推出新特性,如可空引用类型、异步流、记录类型和顶级语句等,极大地提升了开发效率。要在 Uno Platform 中使用最新 C# 特性,需确保开发环境支持相应版本,并正确配置编译器选项。通过示例展示了如何在 Uno Platform 中应用可空引用类型、异步流、记录类型及顶级语句等功能,帮助开发者更好地构建高效、优质的跨平台应用。
224 59