测试 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. 创建红色图像<

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

被折叠的 条评论
为什么被折叠?



