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)

确保使用正确的数据类型和索引顺序,以便访问矩阵中的元素。

posted @   aisuanfa  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示