opencv03-Mat矩阵API的使用
opencv03-Mat矩阵API的使用
构造方法(具体介绍看API文档)
int main() {Mat m1 = Mat(200, 100, CV_8UC1);imshow("o1", m1);Mat m2 = Mat(Size(100, 200), CV_8UC1);imshow("o2", m2);Mat m3 = Mat(200, 100, CV_8UC3, Scalar(255, 0, 0));imshow("o3", m3);const int sizes[] = {200, 3};Mat m4 = Mat(2, sizes, CV_8UC3);imshow("m4", m4);waitKey(0);return 0;
}
成员方法
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;/*** Mat操作*/
int main() {string filename = "D:/workspace/cpp_workspace/my-cv/data/img/lena.jpg";Mat img = imread(filename, ImreadModes::IMREAD_COLOR);Mat b = Mat(img); //部分复制Mat,只复制对象的头和指针,不复制数据/*** 1. int channels() 返回矩阵的channel*/cout << img.channels() << endl; // 3Mat img2;cvtColor(img, img2, COLOR_BGR2GRAY); // 彩色转换为灰白imshow("img2", img2);cout << img2.channels() << endl; // 1/***2. int depth() 返回一个矩阵元素的深度* img.cols:矩阵的列数* img.dims:矩阵的维数 >=2* img.rows:矩阵的行数* img.size:矩阵的行数*列数* img.row(0); //* bool empty(); 判断矩阵是否为空*/cout << img.depth() << endl; // 0cout << img2.depth() << endl;// 0cout << img.cols << endl; // 512cout << img2.cols << endl; // 512cout << img.dims << endl; // 2 -维数cout << img.size << endl; // 512 x 512cout << img.rows << endl; // 512cout << img2.rows << endl; // 512cout << img.row(0).size << endl; // 1 x 512cout << img.col(0).size << endl; // 512 x 1// Returns true if the array has no elements.cout << img.empty() << endl;/*** 3. void copyTo(Mat mat) 将矩阵复制到另一个矩阵, 参数 mat为目标矩阵,如果在操作前没有适当的大小或类型,则为重新分配。* 该方法将矩阵数据复制到另一个矩阵。在复制数据之前,该方法调用* m.create(this->size(), this->type());* 以便在需要时重新分配目标矩阵。While m.copyTo(m); works flawlessly, 函数不处理源矩阵和目标矩阵之间部分重叠的情况。* 指定操作掩码时,如果上面显示的 Mat::create 调用重新分配矩阵,在复制数据之前,新分配的矩阵将初始化为全零。** 完全复制Mat,包括对象的头,指针和数据*/Mat copyTo;img.copyTo(copyTo);imshow("copyTo", copyTo);/*** 4. void convertTo(Mat dst, int type)**/Mat convertTo;img.convertTo(convertTo, CV_8UC4);imshow("convertTo", convertTo);/*** 5. Mat clone(): 创建一个完整的mat的copy, 完全复制Mat,包括对象的头,指针和数据*/Mat clone = img.clone();imshow("clone", clone);cout << ".............................." << endl;/*** 6. uchar* ptr(i=0)*/Mat M;M.create(4, 3, CV_8UC2);M = Scalar(127, 127);cout << "M = " << endl << " " << M << endl << endl;uchar *firstRow = M.ptr<uchar>(1);printf("%d\n", *firstRow);Mat C = (Mat_<double>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);cout << "C = " << endl << " " << C << endl << endl;cout << ".............................." << endl;cv::Mat image = cv::Mat::ones(5, 10, CV_8UC1); //宽5,长10uchar *data00 = image.ptr<uchar>(0); // data00是指向image第一行第一个元素的指针。uchar *data10 = image.ptr<uchar>(1); // data10是指向image第二行第一个元素的指针。uchar data01 = image.ptr<uchar>(0)[1]; // data01是指向image第一行第二个元素的指针。printf("%d\n", *data00); // 1printf("%d\n", data01); // 1cout << image << endl; //waitKey(0);return 0;
}
成员方法 create
/**** 1. void create(int rows, int cols, int type);* 2. void create(Size size, int type);* 3. void create(int ndims, const int* sizes, int type);* 4. void create(const std::vector<int>& sizes, int type);*/
int main() {//1. void create(int rows, int cols, int type);Mat m;m.create(2, 3, CV_8UC1);//3. void create(int ndims, const int* sizes, int type);Mat m3;const int sizes[] = {3, 4};m3.create(2, sizes, CV_8UC3);cout << m3 << endl;// 4. void create(const std::vector<int>& sizes, int type);Mat m4;std::vector<int> sizes2 = vector<int>();sizes2.push_back(3);sizes2.push_back(4);m4.create(sizes2, CV_8UC3);cout << m4 << endl;waitKey(0);return 0;
}相关文章:
opencv03-Mat矩阵API的使用
opencv03-Mat矩阵API的使用 构造方法(具体介绍看API文档) int main() {Mat m1 Mat(200, 100, CV_8UC1);imshow("o1", m1);Mat m2 Mat(Size(100, 200), CV_8UC1);imshow("o2", m2);Mat m3 Mat(200, 100, CV_8UC3, Scalar(255, 0, 0));imshow("o3&…...
2023届浙江大学MPA提面A资格经验总结分享
本人是去年报考的浙大MPA项目,并通过提面获得了A资格,新一年浙大MPA项目提前批面试已经开始了,受达立易考周老师邀请来分享下我的提面经验,希望我的经验能对还在迷茫中的小伙伴有所帮助。 点开提面通知,首先看到…...
BugKu CTF(杂项篇MISC)—想要种子吗
BugKu CTF(杂项篇MISC)—想要种子吗 提 示: 描 述:flag{} 题目下载后是一张图片,打开如下。 一、工具 十六进制编辑器010 editor kali系统文件分离工具binwalk或者foremost 维吉尼亚密码 STEGHIDE图片隐写工具 文章所需的软件下载地址 ARCHPR压缩包密码破解…...
类之间的关系
1、类关系 继承、实现、依赖、组合、聚合 继承:一个类继承另一个类; 实现:一个类实现另一个接口; 依赖:一个类作为另一个的局部变量,方法的参数,临时对象等; 组合:一个类…...
【蓝图】p40-p43对象引用、变量有效性、实现键盘控制物体自转、简单点名系统
p40-p43对象引用、变量有效性、实现键盘控制物体自转、简单点名系统 p40对象引用、变量有效性p41实现键盘控制物体自转创建bool值控制旋转实现通过键盘控制自转 p42p43简单点名系统Get All Actors Of Class(获得场景中所有该类的actor演员)getFor Each L…...
vscode设置远程登录和免密登录
首先,我们去官网下载VScode 安装过程比较简单,大家自行安装即可,注意建议安装在除C盘外的其他盘中。 安装完成后,打开我们下载好的VScode,点击左侧的Extensions选项,搜索Remote,Install第一项R…...
今日头条面试真题及答案,软件测试工程师面试秘籍
试题1.在浏览器地址栏里输入一个网址,接下来会发生什么? 答案:发生的操作如下。 (1)浏览器查找该网址的IP地址。 (2)浏览器根据解析得到的IP地址向Web服务器发送一个HTTP请求。 &am…...
JavaScript Windows 浏览器对象模型
Window 对象 BOM 的核心就是 window 对象所有浏览器都支持 window 对象。它表示浏览器窗口。所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。全局变量是 window 对象的属性。全局函数是 window 对象的方法。HTML DOM 的 document 也是 window 对象的属…...
【uniapp 获取缓存及清除缓存】
小程序及H5 获取缓存: 使用uniapp中的wx.getStorageInfoSync()方法可以获取当前小程序或H5应用的本地缓存信息,如下所示: let storageInfo uni.getStorageInfoSync() console.log(storageInfo)其中,storageInfo是一个对象&…...
【vim 学习系列文章 2 - vim 常用插件配置】
文章目录 1.1 vim 常用插件1.1.1 vim 插件 Pathogen 管理1.1.2 vim 常用插件推荐1.1.3 vim Leaderf1.1.4 vim ripgrep 工具1.1.5 vim Leaderf 配合 rg1.1.6 vim autocmd 配置 1.2 其它类型文件 vimrc 配置1.2.1 System Verilog vimrc 配置 上篇文章:vim 学习系列文章…...
【外卖系统】修改菜品
需求分析 在菜品管理列表页面点击修改按钮,跳转到修改页面,在修改页面回显菜品相关信息并进行修改,在最后点击确定按钮完成修改操作 代码设计 页面发送ajax请求,请求服务端获取分类数据,用于菜品分类下拉框中数据显…...
【暑期每日一练】 day11
目录 选择题 (1) 解析: (2) 解析: (3) 解析: (4) 解析: (5) 解析: 编程题 题一 描…...
神经概率语言模型
本文主要参考《A Neural Probabilistic Language Model》这是一篇很重要的语言模型论文,发表于2003年。主要贡献如下: 提出了一种基于神经网络的语言模型,是较早将神经网络应用于语言模型领域的工作之一,具有里程碑意义。采用神经网络模型预测下一个单词…...
什么是shadow DOM?
Shadow DOM(影子DOM)是一种用于在Web组件中封装HTML、CSS和JavaScript的技术。它是Web组件的一个重要特性,旨在将组件的结构、样式和行为封装在一个独立的、隔离的DOM树中,从而与主文档的DOM树相互隔离。 传统的Web开发中&#x…...
我的 365 天创作纪念日
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…...
spark-sql : “java.lang.NoSuchFieldError: out“ 异常解决
异常现象 at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:847)at org.apac…...
Node.js入门笔记(包含源代码)以及详细解析
Node.js 入门笔记源码 01、如何在终端中执行js 文件 目标:将下面的代码语句在中断中执行 代码演示: console.log(Hello World)for (let i 0;i < 3;i) {console.log(6)}方法:在文件上右击打开在终端中执行,然后输入node空格 输…...
windows自动化点击大麦app抢购、捡漏,仅支持windows11操作系统
文章目录 必要条件程序运行必要条件 确保windows11版本操作系统,如果不是可以通过镜像升级为windows11如果已经是windows11操作系统,确保更新到最新版本 修改系统所在时区,将国家或地区改为美国 开启虚拟化 勾选Hyper-V,如果没有则不需要勾选 勾选虚拟机平台 勾选完毕,点…...
vue 拦截 v-html 中 a 标签 href 跳转
记录 template 中 给需要 拦截的 代码片段加上click 方法 click“targetNodeNameClick” <p class"message-content message-content-text" v-html"replaceURLWithHTMLLinks(getText(message))" click"targetNodeNameClick"></p>然…...
分布式id、系统id、业务id以及主键之间的关系
推荐 连分布式ID都理解不了,你是刚培训出来冒充面试官的吧 1 分布式id、系统id、业务id以及主键之间的关系 分布式ID、系统ID、业务ID和主键的关系: 分布式ID:在分布式系统中,由于存在多个独立的节点,为了保证每个节…...
明日方舟游戏素材宝库:8000+高清美术资源免费获取终极指南
明日方舟游戏素材宝库:8000高清美术资源免费获取终极指南 【免费下载链接】ArknightsGameResource 明日方舟客户端素材 项目地址: https://gitcode.com/gh_mirrors/ar/ArknightsGameResource 你是否曾为寻找高质量的游戏美术素材而烦恼?无论是角色…...
思源宋体:中文排版设计中的成本效益革命
思源宋体:中文排版设计中的成本效益革命 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是否曾为商业项目中的中文字体授权费用而头疼?或者为寻找既专业又免费…...
专业解析:Windows APK安装器的架构设计与跨平台应用部署实践
专业解析:Windows APK安装器的架构设计与跨平台应用部署实践 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在移动应用生态日益多元化的今天,W…...
5分钟彻底解决Mac NTFS读写难题:开源工具Nigate完全指南
5分钟彻底解决Mac NTFS读写难题:开源工具Nigate完全指南 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and management …...
告别闪烁!用STM32和Multisim搞定LED PWM调光,从仿真到实战保姆级教程
从零构建无频闪LED调光系统:STM32硬件PWM与Multisim滤波电路全解析 当你在深夜伏案工作时,台灯突然出现肉眼可见的闪烁;当你在实验室观察培养样本时,光源的不稳定导致数据出现偏差——这些恼人的场景背后,往往隐藏着L…...
Taotoken用量看板如何让我们清晰掌握各模型消耗与团队使用习惯
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken用量看板如何让我们清晰掌握各模型消耗与团队使用习惯 作为团队管理者,在引入大模型能力支持业务开发时&#…...
利用Taotoken的审计日志功能追溯每日大赛期间的API调用详情
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用Taotoken的审计日志功能追溯每日大赛期间的API调用详情 对于一场持续数日的AI应用开发大赛,运营与技术保障团队在赛…...
CMake包签名终极指南:如何实现数字签名与完整性验证
CMake包签名终极指南:如何实现数字签名与完整性验证 【免费下载链接】cmake-examples Useful CMake Examples 项目地址: https://gitcode.com/gh_mirrors/cm/cmake-examples 在软件开发过程中,确保代码和二进制包的完整性与真实性至关重要。CMake…...
Formal验证签核深度解析:从COI、Proof Core到Mutation,你的覆盖率真的够了吗?
Formal验证签核深度解析:从COI、Proof Core到Mutation,你的覆盖率真的够了吗? 在芯片设计领域,Formal验证已经成为确保设计正确性的重要手段。不同于传统的仿真验证,Formal验证通过数学方法穷举所有可能的输入组合&…...
网盘直链下载助手终极指南:3分钟解锁9大网盘满速下载
网盘直链下载助手终极指南:3分钟解锁9大网盘满速下载 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...
