亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#?OpenCvSharp?顏色反轉(zhuǎn)實例詳解

 更新時間:2024年02月27日 15:28:42   作者:亂蜂朝王  
OpenCVSharp是OpenCV的.NET?wrapper,它比Emgucv更接近于原始的OpenCV,并且有很多的樣例參考,其采用LGPL發(fā)行,對商業(yè)應(yīng)用友好(基本上相當(dāng)于BSD),這篇文章主要介紹了C#?OpenCvSharp?顏色反轉(zhuǎn)的知識,需要的朋友可以參考下

1、什么是OpenCVSharp

      為了解決在Csharp下編寫OpenCV程序的問題,我做過比較深入的研究,并且實現(xiàn)了高效可用的方法(GOCW);這幾天在搜集資料的時候,偶爾看見了OpenCVSharp,從時間上來看,它已經(jīng)經(jīng)過了更久的發(fā)展,應(yīng)該有許多直接借鑒、或者直接使用的地方。

       OpenCVSharp有一名日本工程師開發(fā),項目地址為:https://github.com/shimat/opencvsharp。其是OpenCV的.NET wrapper,它比Emgucv更接近于原始的OpenCV,并且有很多的樣例參考,其采用LGPL發(fā)行,對商業(yè)應(yīng)用友好(基本上相當(dāng)于BSD)。

2、OpenCVSharp有什么特點

  • 直接封裝了更多的OpenCV方法,降低了學(xué)習(xí)的難度,比EmguCV更便于使用
  • 大部分繼承了IDisposable接口,方便使用using語句
  • 可以直接調(diào)用原始風(fēng)格的OpenCV方法
  • 可以將圖像對象直接轉(zhuǎn)換成GDI使用的Bitmap和WPF的WriteBitmap
  • 支持Mono。

在C#中使用OpenCV(使用OpenCVSharp)的實現(xiàn)

效果

灰度圖

黑白色反轉(zhuǎn)

彩色反轉(zhuǎn)

項目

代碼

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using OpenCvSharp;
using OpenCvSharp.Extensions;
namespace OpenCvSharp_顏色反轉(zhuǎn)
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
        Bitmap bmp;
        String imgPath = "";
        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = fileFilter;
            if (ofd.ShowDialog() != DialogResult.OK) return;
            imgPath = ofd.FileName;
            bmp = new Bitmap(imgPath);
            pictureBox1.Image = bmp;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (imgPath == "")
            {
                return;
            }
            Mat mat = new Mat(imgPath);
            Cv2.CvtColor(mat, mat, ColorConversionCodes.BGR2GRAY);
            Mat dst = new Mat(mat.Height, mat.Width, mat.Type(), Scalar.White);
            byte grayPixel = 0;
            for (int r = 0; r < dst.Rows; r++)
            {
                for (int c = 0; c < dst.Cols; c++)
                {
                    grayPixel = mat.At<byte>(r, c);
                    dst.Set<byte>(r, c, (byte)(255 - grayPixel));
                }
            }
            if (pictureBox2.Image != null)
            {
                pictureBox2.Image.Dispose();
            }
            pictureBox2.Image = BitmapConverter.ToBitmap(dst);
        }
        private void button4_Click(object sender, EventArgs e)
        {
            if (imgPath == "")
            {
                return;
            }
            Mat mat = new Mat(imgPath);
            Cv2.CvtColor(mat, mat, ColorConversionCodes.BGR2GRAY);
            if (pictureBox2.Image != null)
            {
                pictureBox2.Image.Dispose();
            }
            pictureBox2.Image = BitmapConverter.ToBitmap(mat);
        }
        private void button3_Click(object sender, EventArgs e)
        {
            if (imgPath == "")
            {
                return;
            }
            Mat mat = new Mat(imgPath);
            Mat dst = new Mat(mat.Height, mat.Width, mat.Type(), Scalar.White);
            Vec3b vec3B;
            for (int r = 0; r < dst.Rows; r++)
            {
                for (int c = 0; c < dst.Cols; c++)
                {
                    vec3B = mat.At<Vec3b>(r, c);
                    vec3B.Item0 = (byte)(255 - vec3B.Item0);
                    vec3B.Item1 = (byte)(255 - vec3B.Item1);
                    vec3B.Item2 = (byte)(255 - vec3B.Item2);
                    dst.Set<Vec3b>(r, c, vec3B);
                }
            }
            if (pictureBox2.Image != null)
            {
                pictureBox2.Image.Dispose();
            }
            pictureBox2.Image = BitmapConverter.ToBitmap(dst);
        }
    }
}

下載 

Demo下載

到此這篇關(guān)于C# OpenCvSharp 顏色反轉(zhuǎn)的文章就介紹到這了,更多相關(guān)C# OpenCvSharp 顏色反轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#利用微軟自帶庫進(jìn)行中文繁體和簡體之間轉(zhuǎn)換的方法

    C#利用微軟自帶庫進(jìn)行中文繁體和簡體之間轉(zhuǎn)換的方法

    這篇文章主要介紹了C#利用微軟自帶庫進(jìn)行中文繁體和簡體之間轉(zhuǎn)換的方法,涉及C#使用Microsoft.VisualBasic類庫操作中文繁簡字體轉(zhuǎn)換的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • c#中值類型和引用類型的基礎(chǔ)教程

    c#中值類型和引用類型的基礎(chǔ)教程

    這篇文章主要給大家介紹了關(guān)于c#中值類型和引用類型的基礎(chǔ)教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • C#異常處理的一些經(jīng)驗和技巧

    C#異常處理的一些經(jīng)驗和技巧

    本文是異常處理經(jīng)驗性的文章,其實跟C#關(guān)系也不大。比較適合剛剛熟悉異常語法,而缺乏實戰(zhàn)的讀者。當(dāng)然,經(jīng)驗老練的讀者也可指出不足、給予意見、補(bǔ)充說明,一起完善文章,分享更多知識與經(jīng)驗
    2014-03-03
  • C#寫差異文件備份工具的示例

    C#寫差異文件備份工具的示例

    這篇文章主要介紹了C#寫差異文件備份工具的示例,幫助大家利用c#備份,管理文件,感興趣的朋友可以了解下
    2020-10-10
  • 基于C#編寫一個修改文件時間屬性的小工具

    基于C#編寫一個修改文件時間屬性的小工具

    這篇文章主要為大家詳細(xì)介紹了如何基于C#編寫一個修改文件時間屬性的小工具,可以批量修改文件的創(chuàng)建時間、最后訪問時間和最后修改時間,需要的可以參考下
    2024-11-11
  • 舉例講解C#中自動實現(xiàn)的屬性

    舉例講解C#中自動實現(xiàn)的屬性

    這篇文章主要介紹了C#中自動實現(xiàn)的屬性,包括使用自動實現(xiàn)的屬性實現(xiàn)輕量類的方法,需要的朋友可以參考下
    2016-01-01
  • sqlserver備份還原數(shù)據(jù)庫功能封裝分享

    sqlserver備份還原數(shù)據(jù)庫功能封裝分享

    這篇文章主要介紹了sqlserver備份還原數(shù)據(jù)庫功能封裝示例,需要的朋友可以參考下
    2014-03-03
  • 淺談C#設(shè)計模式之代理模式

    淺談C#設(shè)計模式之代理模式

    這篇文章主要介紹了淺談C#設(shè)計模式之代理模式,需要的朋友可以參考下
    2014-12-12
  • C#封裝一個快速讀取寫入操作excel的工具類

    C#封裝一個快速讀取寫入操作excel的工具類

    這篇文章主要為大家詳細(xì)介紹了C#如何封裝一個快速讀取寫入操作excel的工具類,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • C#對桌面應(yīng)用程序自定義鼠標(biāo)光標(biāo)

    C#對桌面應(yīng)用程序自定義鼠標(biāo)光標(biāo)

    這篇文章介紹了C#對桌面應(yīng)用程序自定義鼠標(biāo)光標(biāo)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06

最新評論