博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【opencv】图像元素的访问
阅读量:6344 次
发布时间:2019-06-22

本文共 1513 字,大约阅读时间需要 5 分钟。

hot3.png

    一直在看opencv,但都是断断续续,不成体系,知识点过于凌乱,今天第一次做笔记,为了自己更好的理解,也为了有和我一样兴趣的人参考。正文如下:

    这篇笔记主要记录一下图像元素的访问:

单通道字节图像的访问

1.用cvGet2D()和cvSet2D():

    cvGet2D()函数的原型:CvScalar cvGet2D( const CvArr* arr, int idx0, int idx1 ),返回的是一个CvScalar类型的容器,idx0和idx1分别表示的是该点到图像(0,0)点的垂直距离和水平距离,和我们一般理解的相反。

    cvSet2D也类似,只不过加了一个要设置的cvScalar类型的参数

例如:

cvScalar test;IplImage* image = cvCreateImage(cvSize(200,200),IPL_DEPTH_8U,1);//创建一个单通道无符号整形字节图像test = cvGet2D(image,x,y);//返回的数据赋值给cvScalar类型的testprintf("result:%f\n",test.val[0]);//列印出单通道(x,y)的值cvSet2D(image,x,y,test);//cvSet2D的使用

2.直接访问:

例如:

IplImage* image = cvCreateImage(cvSize(200,200),IPL_DEPTH_8U,1);((uchar*)( image->imageData + i*image->widthStep))[j] = 255;
image->imageData:存储图像像素值数组的首地址

image->widthStep:指的是图像每行所占的字节数,这个概念不要和width混淆。(往往因为存储要遵循字节对齐的原则,widthStep并不是单纯的像素数*nChannels,往往会更大一点)

所以因为是单通道的图像,所以(.....)[j]就是(i,j)点的值

3.指针直接访问:

例如:

IplImage* image = cvCreateImage(cvSize(200,200),IPL_DEPTH_8U,1);int height = image->height;int width = image->width;int widthstep = image->widthStep;uchar* data = (uchar*) image->imageData;data[i*widthstep+j] = 255;
这种方法感觉像是创建数组指向存储区域,然后对数组操作,省掉了首地址了。我是这么理解的,不知道对不对。

多通道字节图像的访问

1.其实和单通道差不多,只不过通道数变多了,像第一种方法中cvGet2D返回的test就可以取出相对应的bgr通道的值了:test[0],test[1].test[2]。cvSet2D的用法不变

2.直接访问的方式就要加上:

((uchar*)( image->imageData + i*image->widthStep))[j*nChannels+0] = 255;//或者+1,+2分别表示bgr通道的值

3.指针的方式同上一种:

data[i*widthstep+j*nChannels+k] = 255;//k的值为0-通道数

OK,That's all.

第一次写,新手请轻喷!!!

有时间再写绘制函数的笔记好了,内容很少,仅当作自己的复习!!

转载于:https://my.oschina.net/u/941819/blog/324770

你可能感兴趣的文章
D语言/DLang 2.085.1 发布,修复性迭代
查看>>
手机玻璃表面检测机器视觉应用
查看>>
为何风口过去之后,百果园反而要在无人零售上发力?
查看>>
权威分析@RequestParam和@RequestPart 的区别(官方文档)
查看>>
Redis主从复制
查看>>
CopyNet 阅读笔记
查看>>
开发基于以太坊智能合约的DApp
查看>>
要获得“机器学习或数据科学”的工作,到底选哪种编程语言更好?
查看>>
感觉JVM的默认异常处理不够好,既然不好那我们就自己来处理异常呗!那么如何自己处理异常呢?...
查看>>
Java 基础 之 算数运算符
查看>>
OpenAI最新研究:通过无监督学习提高语言理解能力
查看>>
Windows下配置安装Git(二)
查看>>
一个最简单的基于Android SearchView的搜索框
查看>>
Android ToggleButton:状态切换的Button
查看>>
Android ListView Adapter的getItemViewType和getViewTypeCount多种布局
查看>>
CentOS+Nginx+Supervisor部署ASP.NET Core项目
查看>>
uliweb_apijson 0.1.0 发布,自动化接口和文档
查看>>
Windows Server 2008系统如何取消登录时要按Ctrl+Alt+Delete组合键
查看>>
谷歌为 Chrome 推出12款官方新皮肤
查看>>
对话中国AI先锋,生态科技岛首秀深圳
查看>>