opencv初始化Mat矩阵尺寸辨析

博客提及直接键入行列数和用Size定义的相关内容,但未给出更多详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接键入行列数和用Size定义:

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
 
using namespace cv;
using namespace std;

int main()
{
	Mat M(3,2,CV_8UC1,1);
	cout<<"M="<<M<<endl;

	Mat Z(Size(3,2),CV_8UC1,1);
	cout<<"Z="<<Z<<endl;
}

结果如下:
在这里插入图片描述

### 如何在 OpenCV初始化 Mat 对象 #### C++ 初始化 `cv::Mat` 对象的方法 在 C++ 中,可以使用多种方式创建并初始化 `cv::Mat` 类型的对象: 1. **默认构造函数** 创建一个未定义大小和类型的矩阵。 ```cpp cv::Mat mat; ``` 2. **指定尺寸和类型** 可以为新分配的内存设置初始值为零、特定数值或随机数。 ```cpp // 定义一个 3 行 4 列 的单通道浮点型 (CV_32F) 零矩阵 cv::Mat zeros = cv::Mat(3, 4, CV_32FC1, cv::Scalar(0)); // 定义一个 5x5 单通道字节型 (CV_8U),所有元素都设为 255 的矩阵 cv::Mat whiteImage = cv::Mat(5, 5, CV_8UC1, cv::Scalar(255)); // 使用 Scalar 来填充多维数组 cv::Mat multiChannel = cv::Mat(cv::Size(cols, rows), CV_8UC3, cv::Scalar(0, 255, 0)); // 绿色背景图 ``` 3. **从现有数据初始化** 如果已经有了图像文件或其他形式的数据源,则可以直接加载这些资源作为新的 `cv::Mat` 实例的内容[^3]。 ```cpp // 加载图片到 Mat 对象中 cv::Mat image = cv::imread("path/to/image.jpg"); ``` #### Python 初始化 `numpy.ndarray`(即 `cv2.Mat`) 对于 Python 用户来说,由于 OpenCV-Python 库依赖 NumPy 数组来表示图像,所以实际上是在操作 `numpy.ndarray` 而不是严格意义上的 `cv::Mat`。不过二者之间存在紧密联系,并且 API 设计尽可能保持一致以便于跨平台移植代码[^2]。 以下是几种常见的初始化方法: 1. **创建空白画布** ```python import numpy as np # 黑底白线绘图板 blank_canvas = np.zeros((height, width, channels), dtype=np.uint8) # 白纸黑墨水效果 paper_with_black_ink = 255 * np.ones((height, width, channels), dtype=np.uint8) ``` 2. **读取外部媒体文件** ```python import cv2 img = cv2.imread('example.png') gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 将彩色图像转灰度图 ``` 这两种语言环境下都可以方便快捷地完成对图像容器的基础构建工作,具体选择取决于项目需求和个人偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值