本文测试环境:

win10  64位

vistual studio 2019

Emgu CV 4.6.0

环境配置准备:

1 新增控制台项目,.net framework为4.7.2

2  把win-x64目录的native目录下的文件全部拷贝到项目的运行目录Debug目录下

3  项目选择x64

4 添加项目引用Emgu.CV.dll、Emgu.CV.Platform.NetFramework.dll、System.Drawing.dll和System.Runtime.InteropServices.RuntimeInformation.dll

具体配置参考:

Emgu CV4图像处理之环境搭建1(C#)_zxy2847225301的博客-CSDN博客

下面的内容参考自:

EmguCV-第08讲-访问图像像素_YADONCHEN的博客-CSDN博客

预备知识:

(Row0,Column0)代表像素的(横坐标,纵坐标),注意观察,当图片为彩色图片时,一个Column就存有3个通道的值,分别为BGR

创建EmguCV的Image对象并访问像素值:

1   灰度图

创建方式1:创建宽度为300,高度为200的灰度图片

Image<Gray, Byte> image1 = new Image<Gray, Byte>(300, 200);

创建方式2:从文件中读取灰度图并创建Image对象

Image<Gray, Byte> image1 = new Image<Gray, Byte>(“test.png”);

访问像素(100,200)对应的灰度值

Gray grayValue = image1[100,200];

设置像素(100,200)对应的灰度值

image1[100, 200]=new Gray(244);

把一张彩色的图片通过灰度的方式读进来会怎样呢?

彩色图片deskpic.png如下:

代码如下:

            Image<Gray, Byte> image1 = new Image<Gray, Byte>("deskpic.png");Gray grayValue = image1[100,200];//Image转MatMat mat_deskpic = image1.Mat;//显示图CvInvoke.Imshow("mat_deskpic", mat_deskpic);CvInvoke.WaitKey(0);

运行结果如下:

2  彩色图

创建方式1:创建宽度为300,高度为200的灰度图片

创建方式1 :创建一张宽度为300,高度为200纯红色的背景图
 Image<Bgr, Byte> image1 = new Image<Bgr, Byte>(300, 200, new Bgr(0, 0, 255));

创建方式2:从文件中读取灰度图并创建Image对象

Image<Gray, Byte> image1 = new Image<Gray, Byte>(“test.png”);

访问值:

//访问像素宽度为100,像素高度为100蓝色通道的像素值
            Byte bgrValue_100_100_0 = image.Data[100, 100, 0];
            //访问像素宽度为100,像素高度为100绿色通道的像素值
            Byte bgrValue_100_100_1 = image.Data[100, 100, 1];
            //访问像素宽度为100,像素高度为100红色通道的像素值
            Byte bgrValue_100_100_2 = image.Data[100, 100, 2];

设置值:

//设置像素宽度为100,像素高度为100蓝色通道的像素值
            image.Data[100, 100, 0]=254;
            //设置像素宽度为100,像素高度为100绿色通道的像素值
            image.Data[100, 100, 1]=254;
            //设置像素宽度为100,像素高度为100红色通道的像素值
            image.Data[100, 100, 2]=254;

例子:创建一张300*200的红色背景图,然后遍历像素,把下半部分变成蓝色

using Emgu.CV;
using Emgu.CV.Structure;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace EmguCVDemo2
{class Program{static void Main(string[] args){//创建一张宽度为300,高度为200纯红色的背景图Image<Bgr, Byte> image = new Image<Bgr, Byte>(300, 200, new Bgr(0, 0, 255));//Image转MatMat mat_red = image.Mat;//显示红色背景图CvInvoke.Imshow("mat_red", mat_red);CvInvoke.WaitKey(0);//销毁红色背景图窗体CvInvoke.DestroyWindow("mat_red");//把图像保存后,可以看到图片的像素为 300*200CvInvoke.Imwrite("mat_red_save.png", image);for (int width = 0; width <300; width++){for (int height = 100; height < 200; height++){//b通道设为255image.Data[height,width, 0] = 255;//g通道设为0image.Data[height, width, 1] = 0;//r通道设置为0image.Data[height, width, 2] = 0;}}CvInvoke.Imshow("red_green_pic", image);CvInvoke.WaitKey(0);Console.ReadLine();}}
}

运行结果:

随便按键盘一个键后的效果:

Emgu CV4图像处理之访问图像像素通道值7(C#)相关推荐

  1. c++ opencv数字图像处理:访问图像像素,遍历图像像素

    文章目录 前言 一.访问图像像素 1.访问(j,i)处像素 2.例子:在图像中加入白色椒盐噪声 二.遍历图像像素 1.指针扫描 2.opencv自带的卷积运算:filter2D 前言 数字图像处理c+ ...

  2. Opencv--IplImage访问图像像素的值

    opencv2.1版本之前使用IplImage*数据结构来表示图像,2.1之后的版本使用图像容器Mat来存储.IplImage结构体如下所示. 1 typedef struct _IplImage 2 ...

  3. opencv2.4.3通过不同方式访问图像像素

    通过不同方式访问图像像素 最近在学习vs2010并结合opencv2.4.3进行图像处理,首先研究了在opencv中如何去访问像素,查阅资料,浏览博客,总结了一下,一般有三种方法:Mat类的.at() ...

  4. ITK系列4_ ITK访问图像像素数据

    实例4 ITK访问图像像素数据 #include "itkImage.h" //这个例子阐述了 SetPixel( )和 GetPixel( )方法的用法 //可以直接访问图像中包 ...

  5. Emgu CV4图像处理之轮廓查找与绘制15(C#)

    本文测试环境: win10  64位 vistual studio 2019 Emgu CV 4.6.0 环境配置准备: 1 新增控制台项目,.net framework为4.7.2 2  把win- ...

  6. Emgu CV4图像处理之膨胀和腐蚀、梯度计算、开闭运算14(C#)

    本文测试环境: win10  64位 vistual studio 2019 Emgu CV 4.6.0 环境配置准备: 1 新增控制台项目,.net framework为4.7.2 2  把win- ...

  7. Opencv3编程入门学习笔记(三)之访问图像像素的三种方法

    访问图像像素的三种方法:指针访问,迭代器访问,动态地址访问.访问最快的为指针访问,以下算法在几毫秒,但指针访问容易造成内存泄漏:其次为迭代器访问:最后为动态地址访问. 以下程序是根据<OpenC ...

  8. python使用openCV图像加载(转化为灰度图像)、平滑图像处理就是将每个像素的值变换为其相邻元素的平均值、可视化平滑处理之后的图像(Blurring Images)

    python使用openCV图像加载(转化为灰度图像).平滑图像处理就是将每个像素的值变换为其相邻元素的平均值.可视化平滑处理之后的图像(Blurring Images) 目录

  9. Emgu CV4图像处理之ROI与mask掩码10(C#)

    本文测试环境: win10  64位 vistual studio 2019 Emgu CV 4.6.0 环境配置准备: 1 新增控制台项目,.net framework为4.7.2 2  把win- ...

最新文章

  1. 初识Tcl(五):Tcl 循环
  2. 控件授权:知道Infragitics是怎么限制别人使用它的控件了。
  3. laravel 异常捕获_Laravel框架捕获各种类型错误
  4. servlet 接收request发送过来的多维数组_049 JAVA-Servlet
  5. 初级第七课——模拟计算器
  6. 玩转华为数据中心交换机系列 | 配置基于VLAN的MAC地址学习限制示例
  7. python调用adb shell命令_Python3 执行 adb shell 命令详解
  8. 关于EN信号通过电阻分压的问题
  9. 有没有中文域名SSL证书?如何申请
  10. 国内公有云对比(1.5)- 功能篇之青云
  11. IOS FaceID TouchID识别
  12. 深信服 星耀前端一面面经+二面凉了
  13. 飞机专家调查发现坐飞机 机首、机翼和机尾最安全
  14. svn服务器现存的库文件导入,svn导入版本库及相关知识
  15. 聊聊P2P网贷平台的风险【站在平台的角度】
  16. Java面向对象01:什么是面向对象
  17. ORACLE认证(OCM)介绍
  18. 结合Vue实现344分割手机号码
  19. .设计一个敏感词过滤程序
  20. 信息系统投标的一些心得和总结

热门文章

  1. 5分钟了解单片机数据、地址、控制总线结构
  2. 互联网黑市分析之一:信封号产业链
  3. (转)VB程序逆向反汇编常见的函数
  4. MySQL数据下载安装教程
  5. 使用Google App Engine将自己的IP所在地显示为Google~
  6. win10常用快捷键及官网说明
  7. 华硕飞行堡垒7(FX95GT)配置风扇快捷键
  8. 图像处理实验,中值滤波处理椒盐噪声
  9. Mac Sublime Text 3中文汉化
  10. Symbian技巧-安装sisx或sis后实现应用程序的自动启动