OpenCV中Mat对象及其创建

在opencv中,Mat用来存储图像的数据结构。由两部分构成:

矩阵头:包含矩阵尺寸、存储方法和存储地址等信息
指针:一个指向存储所有像素值的矩阵的指针

OpenCV中Mat对象及其创建
002程序:
#include
#include

using namespace cv;
using namespace std;

int main(int argc, char** argv) {
    Mat src = imread("D:/VC2017_WORKSPACE/Images/dog.jpg", IMREAD_COLOR);
    if (src.empty()) {
        printf("could not find image file");
        return -1;
    }
    namedWindow("demo-002", WINDOW_NORMAL);
    imshow("demo-002", src);

    waitKey(0);
    destroyAllWindows();
    return 0;
}

显示:

OpenCV中Mat对象及其创建
在上述程序基础上,增加获取图像信息并打印:

int width = src.cols;
int height = src.rows;
int dim = src.channels();

OpenCV中Mat对象及其创建
转为灰度后:
OpenCV中Mat对象及其创建

Mat对象的创建图像

  • 创建空白Mat对象
  • 创建填充值的Mat对象
  • 创建单通道与多通道Mat对象
  • 创建与原图大小和类型相同的Mat对象
Mat grayBack = Mat(256, 256, CV_8UC1);
grayBack = Scalar(0);
imshow("grayBack", grayBack);

Mat colorBack = Mat(256, 256, CV_8UC3);
colorBack = Scalar(0, 0, 255);
imshow("colorBack", colorBack);

显示结果:

OpenCV中Mat对象及其创建

Mat colorBack1 = Mat(Size(512, 512), CV_8UC3);
colorBack1 = Scalar(255, 0, 255);
imshow("colorBack1", colorBack1);

显示结果:

OpenCV中Mat对象及其创建
Mat colorBack2 = Mat::zeros(Size(256, 256), CV_8UC3);
imshow("colorBack2", colorBack2);

显示结果:

OpenCV中Mat对象及其创建
Mat backGround = Mat::zeros(src.size(), src.type());
imshow("backGround", backGround);

OpenCV中Mat对象及其创建

注意赋值和克隆、拷贝的区别:

Mat t1 = src;
Mat t2 = src.clone();
Mat t3;
src.copyTo(t3);

一个工程下包含多个项目的方法:

OpenCV中Mat对象及其创建
上图已有两个项目,现在此基础上继续新建。方法:选中解决方案->右键->添加->新建项目。名称和路径修改,确定。
OpenCV中Mat对象及其创建
选择空项目,确定。
OpenCV中Mat对象及其创建
OpenCV中Mat对象及其创建
然后,分别右键点击源文件–>添加–>新建项,添加cpp源文件
OpenCV中Mat对象及其创建
cpp源文件添加成功
OpenCV中Mat对象及其创建
在opencv4_002.cpp中编写完成程序后,要想运行,需将其设为启动项目(否则会继续运行opencv4_001.cpp)
OpenCV中Mat对象及其创建
重新生成解决方案,然后运行程序,执行的才是002的结果
OpenCV中Mat对象及其创建

Original: https://blog.csdn.net/weixin_45646929/article/details/126689953
Author: 义阳野老
Title: OpenCV中Mat对象及其创建

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/704466/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球