最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實現(xiàn)圖片邊緣銳化的完整代碼

 更新時間:2024年06月24日 09:14:35   作者:新鑫S  
在 C# 中進行圖像的邊緣銳化,可以通過卷積濾波器實現(xiàn),邊緣銳化的基本思想是通過卷積核(也稱為濾波器或掩模)來增強圖像中的邊緣,下面是如何在 C# 中實現(xiàn)這一操作的完整代碼,需要的朋友可以參考下

在 C# 中進行圖像的邊緣銳化,可以通過卷積濾波器實現(xiàn)。邊緣銳化的基本思想是通過卷積核(也稱為濾波器或掩模)來增強圖像中的邊緣。我們可以使用一個簡單的銳化核,例如:

[ 0, -1,  0][-1,  5, -1][ 0, -1,  0]

這個卷積核可以用于增強圖像中的邊緣。下面是如何在 C# 中實現(xiàn)這一操作的完整代碼,包括加載圖像、應(yīng)用銳化濾波器和保存結(jié)果圖像。

1. 安裝 System.Drawing.Common

確保你已經(jīng)安裝了 System.Drawing.Common 庫。你可以通過NuGet包管理器安裝它,或者使用以下命令:

dotnet add package System.Drawing.Common

2. 編寫卷積濾波器應(yīng)用方法

using System;using System.Drawing;using System.Drawing.Imaging;
public class ImageProcessor
{
    public static Bitmap ApplyConvolutionFilter(Bitmap sourceImage, float[,] kernel)
    {
        int width = sourceImage.Width;
        int height = sourceImage.Height;
        BitmapData srcData = sourceImage.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
        Bitmap resultImage = new Bitmap(width, height);
        BitmapData resultData = resultImage.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);

        int bytesPerPixel = 4;
        int stride = srcData.Stride;
        IntPtr srcScan0 = srcData.Scan0;
        IntPtr resultScan0 = resultData.Scan0;
        int kernelWidth = kernel.GetLength(1);
        int kernelHeight = kernel.GetLength(0);
        int kernelOffset = kernelWidth / 2;

        unsafe
        {
            byte* srcPtr = (byte*)srcScan0.ToPointer();
            byte* resultPtr = (byte*)resultScan0.ToPointer();

            for (int y = kernelOffset; y < height - kernelOffset; y++)
            {
                for (int x = kernelOffset; x < width - kernelOffset; x++)
                {
                    float blue = 0.0f;
                    float green = 0.0f;
                    float red = 0.0f;

                    for (int ky = -kernelOffset; ky <= kernelOffset; ky++)
                    {
                        for (int kx = -kernelOffset; kx <= kernelOffset; kx++)
                        {
                            int pixelPos = ((y + ky) * stride) + ((x + kx) * bytesPerPixel);
                            blue += srcPtr[pixelPos] * kernel[ky + kernelOffset, kx + kernelOffset];
                            green += srcPtr[pixelPos + 1] * kernel[ky + kernelOffset, kx + kernelOffset];
                            red += srcPtr[pixelPos + 2] * kernel[ky + kernelOffset, kx + kernelOffset];
                        }
                    }

                    int resultPos = (y * stride) + (x * bytesPerPixel);
                    resultPtr[resultPos] = (byte)Math.Min(Math.Max(blue, 0), 255);
                    resultPtr[resultPos + 1] = (byte)Math.Min(Math.Max(green, 0), 255);
                    resultPtr[resultPos + 2] = (byte)Math.Min(Math.Max(red, 0), 255);
                    resultPtr[resultPos + 3] = srcPtr[resultPos + 3]; // Copy alpha channel
                }
            }
        }

        sourceImage.UnlockBits(srcData);
        resultImage.UnlockBits(resultData);

        return resultImage;
    }
}

3. 使用卷積濾波器進行邊緣銳化

編寫一個主程序來加載圖像、應(yīng)用銳化濾波器并保存結(jié)果圖像。

using System;using System.Drawing;
class Program
{
    static void Main()
    {
        // 加載原始圖像
        Bitmap sourceImage = new Bitmap("path_to_your_image.jpg");

        // 定義銳化卷積核
        float[,] sharpenKernel = new float[,]
        {
            { 0, -1,  0 },
            { -1,  5, -1 },
            { 0, -1,  0 }
        };

        // 應(yīng)用銳化濾波器
        Bitmap resultImage = ImageProcessor.ApplyConvolutionFilter(sourceImage, sharpenKernel);

        // 保存處理后的圖像
        resultImage.Save("path_to_save_sharpened_image.jpg");
    }
}

圖像對比:

  • 原圖:

  • 處理后:

注意事項

  • 確保路徑 path_to_your_image.jpg 和 path_to_save_sharpened_image.jpg 是正確的。
  • 調(diào)整卷積核可以改變銳化效果。上面使用的是一個常見的銳化卷積核。
  • System.Drawing 命名空間需要 System.Drawing.Common 包,在 .NET Core 或 .NET 5/6 中需要特別注意包的引用。

通過這些步驟,你可以在 C# 中實現(xiàn)圖像的邊緣銳化。這個實現(xiàn)使用了卷積濾波器來增強圖像的邊緣,從而使圖像更加清晰。

到此這篇關(guān)于C#實現(xiàn)圖片邊緣銳化的完整代碼的文章就介紹到這了,更多相關(guān)C#圖片邊緣銳化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#二維數(shù)組基本用法實例

    C#二維數(shù)組基本用法實例

    這篇文章主要介紹了C#二維數(shù)組基本用法,以實例形式分析了C#中二維數(shù)組的定義、初始化、遍歷及打印等用法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • C#實現(xiàn)批量更改文件名稱大小寫或擴展名

    C#實現(xiàn)批量更改文件名稱大小寫或擴展名

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)批量更改文件名稱大小寫或擴展名的功能,文中的示例代碼講解詳細,對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • Unity shader實現(xiàn)移動端模擬深度水效果

    Unity shader實現(xiàn)移動端模擬深度水效果

    這篇文章主要為大家詳細介紹了Unity shader實現(xiàn)移動端模擬深度水效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • c#學(xué)習(xí)教程之JSON文件及解析實例

    c#學(xué)習(xí)教程之JSON文件及解析實例

    json作為互聯(lián)網(wǎng)上輕量便捷的數(shù)據(jù)傳輸格式,越來越受到重視,下面這篇文章主要給大家介紹了關(guān)于c#學(xué)習(xí)教程之JSON文件及解析的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • C# DataSet的內(nèi)容寫成XML時如何格式化字段數(shù)據(jù)

    C# DataSet的內(nèi)容寫成XML時如何格式化字段數(shù)據(jù)

    許多讀者經(jīng)常詢問一個問題,那就是在將DataSet的內(nèi)容寫成XML時,如何格式化字段數(shù)據(jù)。最常見的需求,就是希望日期時間值與數(shù)值數(shù)據(jù)能夠以所需的格式呈現(xiàn)于XML中。
    2009-02-02
  • C#實現(xiàn)從Word文檔和各種Word元素中自動提取文本

    C#實現(xiàn)從Word文檔和各種Word元素中自動提取文本

    手動提取文本既費時又容易出錯,尤其是在處理較長或復(fù)雜的Word文檔時,這篇文章將探討如何使用C# 從Word文檔中提取文本,我們將涵蓋不同方面的內(nèi)容,希望對大家有所幫助
    2025-11-11
  • C#使用OpenCv圖像批處理并改變圖片大小并且重命名

    C#使用OpenCv圖像批處理并改變圖片大小并且重命名

    這篇文章主要介紹了C#使用OpenCv圖像批處理并改變圖片大小并且重命名,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • C#中sizeof的用法實例分析

    C#中sizeof的用法實例分析

    這篇文章主要介紹了C#中sizeof的用法,包括了常見的用法及注釋事項,需要的朋友可以參考下
    2014-09-09
  • 在C#中使用二叉樹實時計算海量用戶積分排名的實現(xiàn)詳解

    在C#中使用二叉樹實時計算海量用戶積分排名的實現(xiàn)詳解

    這篇文章主要介紹了在C#中使用二叉樹實時計算海量用戶積分排名的實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • C#實現(xiàn)全局快捷鍵功能

    C#實現(xiàn)全局快捷鍵功能

    這篇文章介紹了C#實現(xiàn)全局快捷鍵功能的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06

最新評論

洛川县| 屏东市| 界首市| 洛阳市| 新宁县| 沙河市| 兴宁市| 梨树县| 牙克石市| 新巴尔虎左旗| 靖安县| 多伦县| 山阳县| 尼木县| 扎赉特旗| 综艺| 乐安县| 繁昌县| 繁峙县| 吉林省| 铁岭市| 镇坪县| 江山市| 芷江| 凤凰县| 吉安县| 万年县| 西丰县| 合水县| 出国| 阿鲁科尔沁旗| 定兴县| 隆尧县| 南京市| 武川县| 枣阳市| 和田县| 樟树市| 舞钢市| 延吉市| 临泉县|