【OpenCV】OpenCV实战从入门到精通之 -- 常用数据结构和函数(Point、Scalar、Size、Rect、cvtColor)

目录

1、点的表示:Point类

2、颜色的表示:Scalar类

3、尺寸的表示:Size类

4、矩形的表示:Rect类

5、颜色空间转换:cvtColor()函数


1、点的表示:Point类

Point类数据结构表示了二维坐标系下的点,即由图像坐标x和y指定的2D点。用法如下:

Point point;
point.x = 10;
point.y = 8;

或者:

Point point = Point(10, 8)

在OpenCV中有如下定义:

  • typedef Point_<int> Point2i;
  • typedef Point2i Point;
  • typedef Point_<float> Point2f;

所以,Point_<int>、Point2i、Point互相等价,Point_<float>、Point2f互相等价


2、颜色的表示:Scalar类

Scalar()表示具有4个元素的数组,在OpenCV中用于传递像素值

如下边颜色表达式,表示定义的RGB颜色值:红色分量为c,绿色分量为b,蓝色分量为a(OpenCV中颜色通道为BGR):

Scalar(a, b, c)

Scalar类其实就是Scalar_<double>。


3、尺寸的表示:Size类

OpenCV中有如下定义:

  • typedef Size_<int> Size2i;
  • typedef Size2i Size;

所以,Size_<int>、Size2i、Size这三个类型是等价的。

OpenCV中常用的Size构造函数为:

  • Size_<int>(_TP _width,  _Tp _height)

可以使用XXX.widthXXX.height来分别表示宽度和高度。

下边是Size的一个例子:

Size(5,5) //构造出的Size宽度和高度都为5,即XXX.width和XXX.height都为5

4、矩形的表示:Rect类

Rect类的成员变量有x,y,width,height,分别为左上角点的坐标和矩形的宽和高

常用的成员函数有:

  • Size():返回值为Size
  • area():返回矩形的面积
  • contains(Points):判断点是否在矩形内
  • inside(Rect):判断矩形是否在该矩形内
  • tl:返回左上角点坐标
  • br:返回右下角点坐标 

求两个矩形的交集和并集:

Rect rect = rect1 & rect2;
Rect rect = rect1 | rect2;

 矩形进行平移操作和缩放操作:

Rect rectShift = rect + point;
Rect rectScale = rect + size;

5、颜色空间转换:cvtColor()函数

cvtColor()函数是颜色空间转换函数,能够实现RGB颜色向HSV、HSI等颜色空间的转换,也可以转换为灰度图像。

格式如下:

void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0)

参数说明:

第一个参数:输入图像

第二个参数:输出图像

第三个参数:颜色空间转换标识符

第四个参数:目标图像的通道数,若该参数为0,表示目标图像取源图像的通道数。

下边是一个调用示例:

cvtColor(stcImage, dstImage, COLOR_GRAY2BGR)

cvtColor()函数标识符如下表所示:

 下边代码shi关于cvtColor()函数的测试:

# include <opencv2/opencv.hpp>
# include <iostream>

using namespace cv;
using namespace std;

void main(){
    Mat srcImage = imread("1.jpg", 1);  //载入图像
    Mat dstImage_gray, dstImage_Lab, dstImage_HLS;

    imshow("原始图", srcImage);  //显示原始图

    cvtColor(srcImage, dstImage_gray, COLOR_BGR2GRAY);  //转换颜色空间
    imshow("Gray效果图", dstImage_gray);    //显示效果图

    cvtColor(srcImage, dstImage_Lab, COLOR_BGR2Lab);
    imshow("Lab效果图", dstImage_Lab);

    cvtColor(srcImage, dstImage_HLS, COLOR_BGR2HSV);
    imshow("HLS效果图", dstImage_HLS);

    waitKey();  //保持窗口显示
}

运行就结果:

                                        原始图

                                           Gray效果图

                                       Lab效果图

                                                HLS效果图

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值