VS+openCV之深入了解 cv::Mat

本文详细介绍了OpenCV中cv::Mat数据结构的使用,包括创建图像、显示、重新分配、创建彩色图像、副本图像的性质以及灰度图像的转换。通过实例展示了如何操作图像,如创建红色图像、处理副本图像以及转换灰度图像,并讨论了浅复制和深复制的区别。此外,还提到了类中图像属性的正确处理方式,避免了潜在的错误。

测试 cv::Mat 数据结构的不同属性

1. 头文件

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

2. 测试函数,它创建一幅图像

        这里需要注意 如果是单纯的function的话,后续调用函数可能会报错,因此我这里加了个1。其次,CV_8U表示每个像素对应1字节(灰度图像),U表示无符号,也可用S表示有符号。

        对于彩色图像,应该使用CV_8UC3。也可以定义16位或32位,有符号或者无符号,例如CV_16SC3。甚至可以使用32位或者64位的浮点数,例如CV_32F。

cv::Mat function1() {
	//创建图像
	cv::Mat ima(500, 500, CV_8U, 50);
	//返回图像
	return ima;
}

3. 创建一个240行x320列的图像并显示

    cv::Mat image1(240, 320, CV_8U, 100);
	cv::imshow("Image", image1);//显示图像
	cv::waitKey(0);

4. 重新分配一个新图像

        可以随时用create分配或重新分配图像的数据块。若图像已被分配,其原来的内容会先被释放。如果新的尺寸与类型与原来相同,就不会重新分配内存。

    image1.create(200, 200, CV_8U);
	image1 = 200;

	cv::imshow("Image", image1);
	cv::waitKey(0);

5. 创建红色图像<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值