OpenCV坐标体系的初步认识
来源:互联网 发布:gta5捏脸完美数据男 编辑:程序博客网 时间:2024/06/05 23:39
本次实验通过一个简短的例子,主要来说明下面4个问题:
1. 坐标体系中的零点坐标为图片的左上角,X轴为图像矩形的上面那条水平线;Y轴为图像矩形左边的那条垂直线。该坐标体系在诸如结构体Mat,Rect,Point中都是适用的。(OpenCV中有些数据结构的坐标原点是在图片的左下角,可以设置的)。
2. 在使用image.at<TP>(x1, x2)来访问图像中点的值的时候,x1并不是图片中对应点的x轴坐标,而是图片中对应点的y坐标。因此其访问的结果其实是访问image图像中的Point(x2, x1)点,即与image.at<TP>(Point(x2, x1))效果相同。
3. 如果所画图像是多通道的,比如说image图像的通道数时n,则使用Mat::at(x, y)时,其x的范围依旧是0到image的height,而y的取值范围则是0到image的width乘以n,因为这个时候是有n个通道,所以每个像素需要占有n列。但是如果在同样的情况下,使用Mat::at(point)来访问的话,则这时候可以不用考虑通道的个数,因为你要赋值给获取Mat::at(point)的值时,都不是一个数字,而是一个对应的n维向量。
4. 多通道图像在使用minMaxLoc()函数是不能给出其最大最小值坐标的,因为每个像素点其实有多个坐标,所以是不会给出的。因此在编程时,这2个位置应该给NULL。
实验代码及注释
main.cpp:
实验结果:
单通道图像的输出结果如下所示:
由上图可以看出,黑色的图像中有2个白色的点(读者可以仔细看下,由于只有1个像素点,所以需要自己找下,呵呵)的位置是不同的,因此可以证明Mat::at(x,y)和Mat::at(Point(x, y))是有区别的。
3通道图像的输出结果如下所示:
由上图可以看出,3通道的图像也是有2个点的,但是程序中在使用Mat::at(x, y)其y的值为300和302,这已经超出了图像的宽度256。这同时证明了实验基础中的第3点。
后台输出结果如下:
- OpenCV坐标体系的初步认识
- OpenCV坐标体系的初步认识
- OpenCV坐标体系的初步认识
- OpenCV坐标体系的初步认识
- OpenCV坐标体系的初步认识
- OpenCV坐标体系的初步认识
- OpenCV坐标体系的初步认识
- OpenCV坐标体系的初步认识
- OpenCV坐标体系的初步认识
- OpenCV坐标体系的初步认识
- OpenCV坐标体系的初步
- 基础学习笔记之opencv(23):OpenCV坐标体系的初步认识
- 基础学习笔记之opencv(23):OpenCV坐标体系的初步认识
- OpenCV坐标体系+minMaxLoc的使用细节
- OpenCV坐标体系+minMaxLoc的使用细节
- OpenCV坐标体系+minMaxLoc的使用细节
- OpenCV坐标体系+minMaxLoc的使用细节
- OpenCV坐标体系
- HYSBZ 1444 有趣的游戏 AC自动机+概率DP+高斯消元
- Linux+树莓派3开发总结——linux中终端控制键Ctrl+C,Ctrl+Z,Ctrl+D的使用场合
- iOS开发中如何对数据与数据模型进行处理
- 验证法:如何选择模型,参数等
- 安卓开发学习之015 ImageView(一)基础属性详解
- OpenCV坐标体系的初步认识
- ExpandableListView(可张开列表)+右侧字母索引条的使用
- javaScript入门篇
- lib和dll
- jQuery资料查询
- EventBus源码阅读(23)-EventBus其它
- Adaboost 训练详解
- java实现定时任务的基础方法
- Python_多线程初解(threading模块)