在原始图像最初的10行绘制一个颜色条

   class Program
{
static void Main(String[] args)
{
Mat img = CvInvoke.Imread(@"C:\Users\dell\Pictures\mach.jpg"); CvInvoke.Imshow("draw", img);
Mat dst = img.Clone();
int row = img.Rows;
int col = img.Cols * img.NumberOfChannels;
Console.WriteLine("DepthType is " + dst.Depth+"and elementSize is"+dst.ElementSize); for (int i = ; i < ; i++)
for (int j = ; j < img.Cols;j++)
{
SetAtB(dst, i, j, );
SetAtG(dst, i, j, );
SetAtR(dst, i, j, ); } CvInvoke.Imshow("hello", dst);
CvInvoke.WaitKey(); }
private static IntPtr GetAt(Mat mat,int row,int col)
{
return mat.DataPointer + (row * mat.Cols + col) * mat.ElementSize;
}
private static void SetAtB(Mat mat, int row, int col, byte value)
{
Marshal.Copy(new byte[] { value }, , GetAt(mat, row, col), );
}
private static void SetAtG(Mat mat, int row, int col, byte value)
{
Marshal.Copy(new byte[] { value }, , GetAt(mat, row, col)+, );
}
private static void SetAtR(Mat mat, int row, int col, byte value)
{
Marshal.Copy(new byte[] { value }, , GetAt(mat, row, col)+, );
}
}

类似要求C++的两种处理方法

方法1

#include <opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std; void main(){
//动态地址访问
Mat img=imread("E://green.png");
imshow("src",img);
Mat dst=img.clone();
int rowNumber=img.rows;//获取行数
int colNumber=img.cols;//获取列数
for(int i=;i<rowNumber;i++){
for (int j = ; j <colNumber; j++)
{
dst.at<Vec3b>(i,j)[]=;//蓝色通道
dst.at<Vec3b>(i,j)[]=;//绿色通道
dst.at<Vec3b>(i,j)[]=;//红色通道
//dst.at<uchar>(i,j)=255;//灰度图像
}
}
imshow("dst",dst);
waitKey();
}

方法2:

#include <opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std; void main(){
Mat img=imread("E://green.png");
imshow("src",img);
Mat dst=img.clone();
int rowNumber=img.rows;//获取行数
int colNumber=img.cols*img.channels();//列数×通道数=每一行的元素个数
for(int i=;i<rowNumber;i++){
uchar* data=dst.ptr<uchar>(i);//获取每一行首地址,ptr函数可以得到图像任意行的首地址
for (int j = ; j <colNumber; j++)
{
//data[j]=255;//灰度图
switch (j%)
{
case ://蓝色通道
data[j]=;
break;
case ://绿色通道
data[j]=;
break;
case ://红色通道
data[j]=;
break;
}
}
}
imshow("dst",dst);
waitKey();
}

另外一种方法https://stackoverflow.com/questions/32255440/how-can-i-get-and-set-pixel-values-of-an-emgucv-mat-image

Emgu 学习(4) 使用指针访问图像内存的更多相关文章

  1. 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整

    今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...

  2. Emgu学习之(四)——图像阈值

    http://www.cnblogs.com/CoverCat/p/5043833.html Visual Studio Community 2015 工程和代码:http://pan.baidu.c ...

  3. Emgu学习之(二)——图像读取、显示、保存

    visual Studio Community 2015 工程和源代码:http://pan.baidu.com/s/1o6u5Fdw 内容 在这篇文章中将提到以下内容: 从文件中读取图像 Image ...

  4. Emgu学习之(三)——操作图像数据

    Visual Studio Community 2015 工程和代码:http://pan.baidu.com/s/1jHmlQeE 内容 在这篇文章中将提到以下内容: 修改像素值 图像ROI 图像加 ...

  5. opencv学习笔记(八)IplImage* 访问图像像素的值

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

  6. opencv学习之路(7)、访问图像像素

    一.动态地址访问 #include <opencv2/opencv.hpp> #include<iostream> using namespace cv; using name ...

  7. C++学习 之 指针及动态内存分配(笔记)

    1. 指针 1.1 指针的含义: 简单来说,指针是存储内存地址的变量.当我们声明了一个指针变量后,使用该指针时系统会根据指针内的地址索引内存块,读取内存内的值.指针因为是用来存地址的,所以一般固定长度 ...

  8. js学习之变量、作用域和内存问题

    js学习之变量.作用域和内存问题 标签(空格分隔): javascript 变量 1.基本类型和引用类型: 基本类型值:Undefined, Null, Boolean, Number, String ...

  9. 访问图像中的像素[OpenCV 笔记16]

    再更一发好久没更过的OpenCV,不过其实写到这个部分对计算机视觉算法有所了解的应该可以做到用什么查什么了,所以后面可能会更的慢一点吧,既然开了新坑,还是机器学习更有研究价值吧... 图像在内存中的存 ...

随机推荐

  1. [人物存档]【AI少女】【捏脸数据】活泼少女

    AISChaF_20191028022750507.png

  2. [Linux]ubuntu16.04 nginx彻底删除与重新安装

    nginx彻底删除与重新安装 查看nginx正在运行的进程,如果有就kill掉 sudo netstat -ntlp | grep nginx sudo kill -9 进程id 删除nginx,pu ...

  3. 激活WebStorm2017.3.1

    亲测有效,测试日期:20181202 转发自:https://blog.csdn.net/bjzhaoxiao/article/details/81486490

  4. 通过PCI9030向外部RAM写数据失败现象

    我们的系统方案是:以9030作为PCI接口芯片,本地端映射了一片IDT70V06的双端口RAM.进行数据传输压力测试时,发现PC机向IDT70V06写数据偶尔会失败.这一问题是什么原因造成的呢? 最初 ...

  5. 【一起学源码-微服务】Nexflix Eureka 源码二:EurekaServer启动之配置文件加载以及面向接口的配置项读取

    前言 上篇文章已经介绍了 为何要读netflix eureka源码了,这里就不再概述,下面开始正式源码解读的内容. 如若转载 请标明来源:一枝花算不算浪漫 代码总览 还记得上文中,我们通过web.xm ...

  6. 使用Python操作Excel文档(一)

    Python | 使用Python操作Excel文档(一) 0 前言 在阅读本文之前,请确保您已满足或可能满足以下条件: 请确保您具备基本的Python编程能力. 请确保您会使用Excel. 请确保您 ...

  7. laravel 5以后数据库插入自动转化方式

  8. linux升级安装openssh时出现依赖冲突

    通过如下方式下载到openssh安装包 https://www.cnblogs.com/qq931399960/p/11120429.html -rwxrwxrwx. root root Jul : ...

  9. yum源问题

    配置本地yum源 1.使用工具将iso文件上传到操作系统,或者直接挂载iso文件 2.配置yum #cd /etc/yum.repos.d/ 删除多余的repo文件 # vi /etc/yum.rep ...

  10. 按下home键,重新打开,应用重启

    其实不是重启,只是重新打开了luncher的那个activity.只要通过判断把它finish,就会显示按下home键前的页面. 解决方法: 在重启的页面中加入一下代码,注意加在setContentV ...