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

 2023-09-09 阅读 28 评论 0

摘要:目录 1、点的表示:Point类 2、颜色的表示:Scalar类 3、尺寸的表示:Size类 4、矩形的表示:Rect类 5、颜色空间转换:cvtColor()函数 1、点的表示:Point类 Point类数据结构表示了二维坐标系下的点,即由图像坐标x和y指定的2D点。

目录

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效果图

 

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/26182.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息