欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#?OpenCvSharp?顏色反轉實例詳解

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

1、什么是OpenCVSharp

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

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

2、OpenCVSharp有什么特點

  • 直接封裝了更多的OpenCV方法,降低了學習的難度,比EmguCV更便于使用
  • 大部分繼承了IDisposable接口,方便使用using語句
  • 可以直接調用原始風格的OpenCV方法
  • 可以將圖像對象直接轉換成GDI使用的Bitmap和WPF的WriteBitmap
  • 支持Mono。

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

效果

灰度圖

黑白色反轉

彩色反轉

項目

代碼

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_顏色反轉
{
    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下載

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

相關文章

  • C#利用微軟自帶庫進行中文繁體和簡體之間轉換的方法

    C#利用微軟自帶庫進行中文繁體和簡體之間轉換的方法

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

    c#中值類型和引用類型的基礎教程

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

    C#異常處理的一些經驗和技巧

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

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

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

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

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

    舉例講解C#中自動實現的屬性

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

    sqlserver備份還原數據庫功能封裝分享

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

    淺談C#設計模式之代理模式

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

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

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

    C#對桌面應用程序自定義鼠標光標

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

最新評論