首页 > 编程语言 >C++ openCV 相关

C++ openCV 相关

时间:2022-10-14 19:46:07浏览次数:60  
标签:Mat image C++ col openCV CV 相关 cv row

1. opencv的Mat矩阵

Mat是opencv在C++中的一个图像容器类,可以使用Mat进行图像矩阵的定义

Mat矩阵的定义

#include<iostream>
#include<opencv2/opencv.hpp>

// 定义图像矩阵
cv::Mat  image(cv::Size(row, col), CV_8UC1)     // 单通道图像,存放uchar
cv::Mat  image = cv::Mat(cv::Size(row, col), CV_8UC3)     // 三通道图像,存放Vec3b类型

// 特殊矩阵定义
cv::Mat zeros = cv::Mat::zeros(cv::Size(row, col), CV_8UC1)     // 全0
cv::Mat zeros = cv::Mat::zeros(h,w,CV_8UC1)

cv::Mat ones = cv::Mat::ones(cv::Size(row, col), CV_8UC1)      // 全1
cv::Mat ones = cv::Mat::ones(h,w,CV_8UC1)

cv::Mat eyes = cv::Mat::eyes(cv::Size(row, col), CV_32FC1)     // 对角线全1
cv::Mat eyes = cv::Mat::eyes(h,w,CV_32FC1)

opencv中的坐标系左上角为(0, 0),向左下方向,Mat矩阵是按照(row, col)进行排布的,即(y, x)

单通道灰度图数据存放格式

多通道图像的数据存放格式

opencv中三通道图像的存储是以二维矩阵的形式实现的,即rows * (channel * cols  )

Mat矩阵的访问

Mat矩阵不能像python中直接用 [ ]进行访问,有多种访问方式,这里使用at进行访问,先y后x(先行后列)

// 单通道图像的访问
uchar  pixel = image.at<uchar>(row, col);     // 单通道图像是以uchar形式存储的,输入需要int(pixel)
uchar pixel = image.at<uchar>(Point(x, y));

// 三通道图像的访问
Vec3b  pixels = image.at<Vec3b>(row, col);     // 三通道图像是以Vec3b形式存储的
uchar bp = image.at<uchar>(row, col)[0];     // 蓝色通道,单通道还是uchar
uchar gp = image.at<uchar>(row, col)[1]; // 绿色通道
uchar rp = image.at<uchar>(row, col)[2]; // 红色通道

Mat的拷贝使用 image.clone()

标签:Mat,image,C++,col,openCV,CV,相关,cv,row
From: https://www.cnblogs.com/Liang-ml/p/16792667.html

相关文章

  • C++实现太阳系行星系统
    实验楼项目:C++实现太阳系行星系统关于详细知识跟着实验做比较好基础知识做这个项目需要知道一些基础知识:OpenGLGLUT类设计main.cpp#include<GL/glut.h>#include......
  • 邮件相关一:SO00
    SCOT的邮箱配置一般有basis处理,这里不做介绍tcode:SO00:SO零零点击执行后,还并没有发送过去进入scot发送成功......
  • linux tar 解压缩相关
    linuxtar解压缩相关tar压缩示例tar–cvffile.tardir/files#将dir里files文件打包tar-zcvftarame.tar.gzdir/files#将dir/files压缩#z用gzip压缩,#c另......
  • ALV 相关
    目录:1​​ALV双击弹出新ALV,并响应新ALV事件​​2​​DEMO:ALV 行、列、单元格颜色控制​​3​​Demo: DisableDELETEkeyonKeyboard​​4​​ALV输入数据后点回车自......
  • 增强相关
    序号文章连接1​​出口增强应用:强制邮箱大写​​2​​字段出口增强FIELD-EXIT​​3​​BTE相关的标准函数​​4​​增强——BTE流程简介​​5​​SE75采购申请创建抬头文本......
  • C++11 中的 noexcept
    关键字noexcept用于指出函数不会引发异常,它也可用作运算符,判断操作数(表达式)是否可能引异常:如果操作数可能引发异常,则返回false,否则返回tue。例如,请看下面的声明:......
  • C++程序的内存分区
    1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量值等。2、堆区(heap):一般由程序员分配释放,随叫随到,挥之即走。3、全局/静态区(static):全局变量和静态变量的存储是......
  • egg.js 24.3-24.5router路由相关
    编写路由基础用法//router.jsrouter.get('/admin/:id',controller.admin.index);//controllerasyncindex(){const{ctx}=this;//获取路由get传值参数(路由......
  • C/C++ 错题总结
    写出下列程序在X86上的运行结果structmybitfields{unsignedshorta:4;......
  • R实战—相关矩阵可视化
    近几天毕业生相继离校了你们走了,我好继承华水的食堂在这里,祝毕业生一路顺风愿此去前程似锦再相逢依旧如故今天讲相关分析,并将得出的相关矩阵可视化。dvdf相关关系是一种非确......