opencv各种宽高的尺寸先后顺序
cv::Size img_size;
在 OpenCV 中,cv::Size
的构造函数接受两个参数,分别表示宽度和高度。具体来说,cv::Size(width, height)
的参数顺序是:
- 第一个参数:宽度(width)
- 第二个参数:高度(height)
示例
#include <opencv2/opencv.hpp>
int main() {
// 创建一个 640x480 的 Size 对象
cv::Size img_size(640, 480);
// 获取宽度和高度
int width = img_size.width; // 640
int height = img_size.height; // 480
return 0;
}
Mat 宽高顺序
在 OpenCV 中,cv::Mat
的宽高顺序与 cv::Size
一致。具体来说,cv::Mat
的尺寸属性是以以下顺序定义的:
- 宽度(列数):即图像的水平像素数量。
- 高度(行数):即图像的垂直像素数量。
示例
#include <opencv2/opencv.hpp>
int main() {
// 创建一个 640x480 的空图像
cv::Mat img = cv::Mat::zeros(480, 640, CV_8UC3); // 高度在前,宽度在后
// 获取图像的宽度和高度
int width = img.cols; // 640
int height = img.rows; // 480
return 0;
}
属性说明
img.cols
:返回图像的宽度(列数)。img.rows
:返回图像的高度(行数)。
注意事项
- 在 OpenCV 中,
cv::Mat
的构造函数参数顺序为(rows, cols)
,即高度在前,宽度在后。这与cv::Size
的(width, height)
顺序不同,需要特别注意。
cv::Mat at<>()括号顺序
一维矩阵(向量)
对于一维矩阵(如 cv::Mat
类型的向量),使用单个索引:
mat.at<Type>(index);
二维矩阵(图像)
对于二维矩阵(如图像),使用两个索引:
mat.at<Type>(row, col);
三维矩阵
对于三维矩阵,使用三个索引:
mat.at<Type>(z, row, col);
示例
假设你有一个 cv::Mat
类型的灰度图像(单通道):
cv::Mat img = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE);
uchar pixelValue = img.at<uchar>(y, x);
在这个例子中,y
是行索引,x
是列索引,uchar
是数据类型。
总结
- 对于 一维 矩阵:
at<Type>(index)
- 对于 二维 矩阵:
at<Type>(row, col)
- 对于 三维 矩阵:
at<Type>(z, row, col)
确保使用正确的数据类型和索引顺序,以便访问矩阵中的元素。
分类:
opencv
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?