OpenCV 学习记录3 数据结构和基本绘图
2017-04-16 10:13
477 查看
Mat类
OpenCV里很重要的一个类就是Mat, 图像处理基本靠这个类,Mat即matrix,矩阵。图像在计算机中的存储是一个矩阵,各个点记录着图片每个像素点的灰度值。因为大图像复制需要消耗大量时间,会减慢程序速度,所以OpenCV里的复制是传址复制,就是各个变量名指向的都是同一个图像的地址,一个变量修改了图像,则这个图像就会发生改变,所有指向这个地址的变量引用的图像都会改变。
Mat A=imread("image.jpg"); Mat B=A;//赋值运算符 Mat C(A);//拷贝构造函数
如上面3个对象ABC的创建,三个对象指向的都是image.jpg这个图像,通过任一对象对图像做改变都会影响另外两个对象。
如果想要完全复制,对象之间互不影响的话可以使用下面两种方法进行复制。
Mat A=imread("image.jpg"); Mat F=A.clone();//第一种 Mat G; A.copyTo(G);//第二种
数据结构之点类:
Point p; p.x=10; p.y=10; //或者直接 Point p=Point(10,10);
矩形,Rect类 :
Rect类的成员变量里有x,y,width,height,(x,y )表示左上角点的坐标,后面两个参数是矩形的宽和高。
颜色表示,Scalar类:
Scalar(10,100,200);//OpenCV里默认的颜色是按BGR的顺序
颜色转换,cvtColor()函数:
#include<opencv2\opencv.hpp> using namespace cv; int main() { Mat image = imread("dota.jpg"), dstimage; cvtColor(image, dstimage,COLOR_BGR2Lab); imshow("convertcolor", dstimage); waitKey(0); return 0; }
绘图,画实心圆:
#include<opencv2\opencv.hpp> using namespace cv; #define WINDOW_WIDTH 600 void DrawFilledCircle( Mat img,Point center) { int thickness = -1; int lineType = 8; circle(img, center, WINDOW_WIDTH / 32, Scalar(0, 0, 255), thickness, lineType); } int main() { Mat image = imread("dota.jpg") ;//注意图片路径,不然会有异常 //imshow("origin", image); Point p = Point(300, 300); DrawFilledCircle(image, p); imshow("convertcolor", image); waitKey(0); return 0; }
还有一些画直线、画矩形等等,今天有点累就不想再打一遍书上代码了,就到这里吧,依旧有问题欢迎大家留言指出 。
相关文章推荐
- opencv学习笔记——数据结构与基本绘图
- OpenCV3学习笔记-数据结构和基本绘图
- opencv学习笔记[9]:Opencv的基本数据类型和矩阵结构
- OpenCV系统学习:一、OpenCV结构、基本数据类型
- OpenCV3——数据结构与基本绘图
- OpenCV学习(3)——命名风格和基本数据结构
- opencv学习笔记[9]:Opencv的基本数据类型和矩阵结构
- OpenCV笔记(一)——数据结构与基本绘图
- 学习OpenCV范例(六)——基本绘图
- opencv学习-2-0初探-基本类型数据
- opencv学习-2-0初探-基本类型数据
- opencv 2.x学习笔记(四)基本数据类型(二)
- Study notes for OpenCV——第七节 OpenCV基本数据结构
- opencv 2.x学习笔记(三)基本数据类型(一)
- Delphi7学习基本数据格式和开发操作记录
- 黑马程序员_学习记录12:String、StringBuffer、基本数据类型对象包装类
- 学习数据结构 -> 数据结构的基本概念
- OpenCV 2.x新数据结构cv::Mat的一些学习材料
- Opencv基本绘图 Point 和 Scalar 这两个结构:
- 基础学习笔记之opencv(13):基本绘图