【OpenCV入门学习笔记1】:Mat对象的指针操作和掩膜操作
b站:https://www.bilibili.com/video/BV1uW411d7Wf?p=5
下面是我在b站上看视频学习的笔记和操作的示例代码
实例代码
#include<opencv2/opencv.hpp>
#include<iostream>
#include<math.h>using namespace cv;int main(int argc, char** argv)
{Mat src, dst;src = imread("E:/picture/pic_cv/pic.jpg");if (!src.data) {printf("Could not load image...\n");return -1;}namedWindow("input image", WINDOW_AUTOSIZE);imshow("input image", src);//-------------------------------------------------------------------------//----------------------【自定义掩膜操作过程】-----------------------------//------------------------------------------------------------------------int cols = src.cols * src.channels();//RGB图像是三通道图像int offsetx = src.channels();//左右漂移多少是通道数决定的int rows = src.rows;dst = Mat::zeros(src.size(), src.type());//对dst图像矩阵初始化为src的大小和类型 //一定要注意初始化!!for (int row = 1; row < (rows - 1); row++) {const uchar* previous = src.ptr<uchar>(row - 1);uchar* current = src.ptr<uchar>(row);const uchar* next = src.ptr<uchar>(row + 1);uchar* output = dst.ptr<uchar>(row);//创建指针指向dst的row行for (int col = offsetx; col < cols - offsetx; col++){//方法一:这样出来的图像跟麻脸一样,因为有的数据超过了255,或小于0,造成溢出//output[col] = 5 * current[col] - (current[col - offsetx] + current[col + offsetx] + previous[col] + next[col]);//方法二:用saturate_cast(饱和函数)函数 处理溢出数据output[col] = saturate_cast<uchar>(5 * current[col] - (current[col - offsetx] + current[col + offsetx] + previous[col] + next[col]));}}//-------------------------------------------------------------------------//----------------------【end1】-----------------------------//------------------------------------------------------------------------namedWindow("contrast image demo 1", WINDOW_AUTOSIZE);imshow("contrast image demo 1", dst);//-------------------------------------------------------------------------//----------------------【调用filter2D函数操作】-----------------------------//------------------------------------------------------------------------double t = getTickCount();Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0,-1, 5, -1,0, -1, 0);filter2D(src, dst, src.depth(), kernel);double timeconsume = (getTickCount() - t) / getTickFrequency();printf("time consume :%.2lf", timeconsume);//-------------------------------------------------------------------------//----------------------【end2】-----------------------------//------------------------------------------------------------------------namedWindow("contrast image demo 2", WINDOW_AUTOSIZE);imshow("contrast image demo 2", dst);waitKey(0);return 0;
}
【OpenCV入门学习笔记1】:Mat对象的指针操作和掩膜操作相关推荐
- 【计算机视觉】opencv入门学习笔记Part.1
[计算机视觉]opencv入门学习笔记Part.1 1 前言 1.1 opencv概述(摘取自百度百科) 1.2 图像概念引入 1.3 安装opencv库 2 图像基本操作 2.1 图像的读取 2.2 ...
- 【OpenCV入门学习笔记2】:Mat对象
b站:https://www.bilibili.com/video/BV1uW411d7Wf?p=5 我在b站的学习笔记和实验代码的整理如下: 示例代码: Matdemo //------------ ...
- OpenCV入门学习笔记之Harris角点检测与SIFT特征匹配算法
1. 写在前面 这篇文章整理两个图像处理中非常重要的算法,一个是Harris角点检测算法,另一个是SIFT特征匹配算法,这两个算法本质上还是去找图像里面的关键特征点,帮助我们后续更好的理解图像以及做各 ...
- c++学习笔记之指向对象的指针以及对象数组
用对象数组的方法对数据成员进行初始化. #include<iostream> using namespace std; class box {public:box(int h=10,int ...
- OpenCV学习笔记之Mat
一. Mat介绍 在2001年刚刚出现的时候,OpenCV基于 C 语言接口而建.为了在内存(memory)中存放图像,当时采用名为 IplImage 的C语言结构体,时至今日这仍出现在大多数的旧版教 ...
- Java快速入门学习笔记7 | Java语言中的类与对象
有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...
- 原创 OpenCV3编程入门 学习笔记(总)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_36163358/article/ ...
- OpenCV3编程入门 学习笔记(总)
OpenCV3编程入门 学习笔记 2018.12.12-2018.12.29 此博客为在看过毛星云版<OpenCV3编程入门>后所总结的一本笔记,可供复习使用. 文章目录 OpenCV3编 ...
- 机器学习入门学习笔记:(3.2)ID3决策树程序实现
前言 之前的博客中介绍了决策树算法的原理并进行了数学推导(机器学习入门学习笔记:(3.1)决策树算法).决策树的原理相对简单,决策树算法有:ID3,C4.5,CART等算法.接下来将对ID3决策树算法 ...
最新文章
- C++ 随机函数----谈rand() 和 srand() 体会
- java中的math.abs_Java abs() 方法
- 2022年全球及中国医用口服硫酸钡行业规模格局与市场需求展望报告
- 警惕使用WebClient.DownloadFile(string uri,string filePath)方法
- 实录 | 平安人寿资深算法工程师张智:人机交互场景下的知识挖掘
- Nacos(七)之Spring Cloud集成
- Youtube最佳Red5 官方视频下载指南,字幕【亲测成功】
- HTML5之语义化标签
- 控制台输出Security Warning: The negotiated TLS 1.0 is an insecure protocol and is suported for backward c
- 滤波ad毛刺 c语言算法,Σ-Δ型ADC AD7124和AD717x的后置/增强型滤波器
- 文章阅读 - 机器学习检测DNS隧道
- oracle 伪列访问序列,Oracle同义词与序列基础教程
- GitHub原生AI代码生成工具Copilot,官方支持Visual Studio 2022
- Could not find metadata org.apache.maven.plugins:maven-archetype-plugin/maven-metadata.xml in local
- 当下比较火的直销分销预订返佣模式系统软件定制开发
- [转]JAVA环境变量设置完全版
- 计算机卡慢解决方法,电脑卡怎么办简单步骤 电脑慢怎么处理详细解决办法介绍...
- 在查询分析器里执行数据库的备份和还原操作
- 金仓数据库 KingbaseES V8.3至V8.6迁移最佳实践(3. KingbaseES移植能力支撑体系)
- 【华为/华三】PPP
热门文章
- 基于uml的系统分析的网上商城_UML建模工具Enterprise Architect最新版有哪些新功能呢?立即查看...
- 【NOIP2013模拟9.29】TheSwaps
- python标准词匹配_python匹配目标词
- Linux系统云主机教程,新开的linux云主机磁盘挂载教程
- 实验三——vlan间路由
- Mysql数据库和表的增删改查以及数据备份恢复
- python简说(二十二)写日志
- “/”和“\\”和feof();
- 第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s
- WCF学习之旅—第三个示例之二(二十八)