#include <opencv2/core/core.hpp>
是OpenCV库中的一个核心模块头文件,它包含了许多用于处理图像和计算的基本数据结构、函数和类。以下是opencv2/core/core.hpp
中的一些常用接口和用法:
- 基本数据结构
cv::Mat
:OpenCV中用于表示图像的矩阵类。它可以处理多维、多通道和不同数据类型的数组。cv::Point_<Tp>
:表示二维点的模板类。常用的别名有 cv::Point2i
(整数点)和 cv::Point2f
(浮点数点)。cv::Size_<Tp>
:表示二维大小的模板类。常用的别名有 cv::Size2i
(整数大小)和 cv::Size2f
(浮点数大小)。cv::Rect_<Tp>
:表示矩形的模板类。常用的别名有 cv::Rect
(整数矩形)和 cv::Rect2f
(浮点数矩形)。cv::Scalar_<Tp>
:表示多通道数值的模板类,如表示像素值。常用的别名是 cv::Scalar
。
- 常用操作
- 复制图像:
src.copyTo(dst);
- 设置图像区域(感兴趣区域,ROI):
cv::Mat roi = src(cv::Rect(x, y, width, height));
- 转换图像数据类型:
src.convertTo(dst, CV_32F);
- 通道拆分与合并:
cv::split(src, channels);
和 cv::merge(channels, dst);
- 利用
cv::Scalar
操作多通道值:cv::Scalar(0, 255, 0);
(例如在绘制函数中设置颜色)
- 基本数学和图像处理操作
cv::norm
:计算向量或矩阵的范数。cv::minMaxLoc
:找到矩阵(如图像)中的最小值和最大值,以及它们的位置。cv::add
、cv::subtract
、cv::multiply
和 cv::divide
:对两个矩阵(如图像)执行逐元素的加法、减法、乘法和除法操作。cv::bitwise_and
、cv::bitwise_or
、cv::bitwise_xor
和 cv::bitwise_not
:对两个矩阵(如图像)执行逐元素的位操作。
以下是 #include <opencv2/core/core.hpp>
中一些高频使用的函数接口和用法:
- 创建和操作
cv::Mat
对象
创建 cv::Mat
对象:
cv::Mat mat1(rows, cols, CV_8UC3);
cv::Mat mat2 = cv::Mat::zeros(rows, cols, CV_8UC1);
cv::Mat mat3 = cv::Mat::ones(rows, cols, CV_32FC1);
访问和修改 cv::Mat
元素:
uchar pixel_value = mat1.at<uchar>(row, col);
cv::Vec3b pixel_value = mat1.at<cv::Vec3b>(row, col);
mat1.at<uchar>(row, col) = new_value;
mat1.at<cv::Vec3b>(row, col) = cv::Vec3b(r, g, b);
- 线性代数操作
计算矩阵的范数:
double norm_value = cv::norm(mat1, cv::NORM_L2);
矩阵乘法:
cv::Mat result = mat1 * mat2;
- 数学操作
矩阵(图像)加法:
cv::Mat result;
cv::add(mat1, mat2, result);
矩阵(图像)按位与:
cv::Mat result;
cv::bitwise_and(mat1, mat2, result);
- 基本图像处理
水平拼接:
cv::Mat result;
cv::hconcat(mat1, mat2, result);
垂直拼接:
cv::Mat result;
cv::vconcat(mat1, mat2, result);
- 计时
计算代码执行时间:
int64 start = cv::getTickCount();
int64 end = cv::getTickCount();
double duration = (end - start) / cv::getTickFrequency();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)