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对象的指针操作和掩膜操作相关推荐

  1. 【计算机视觉】opencv入门学习笔记Part.1

    [计算机视觉]opencv入门学习笔记Part.1 1 前言 1.1 opencv概述(摘取自百度百科) 1.2 图像概念引入 1.3 安装opencv库 2 图像基本操作 2.1 图像的读取 2.2 ...

  2. 【OpenCV入门学习笔记2】:Mat对象

    b站:https://www.bilibili.com/video/BV1uW411d7Wf?p=5 我在b站的学习笔记和实验代码的整理如下: 示例代码: Matdemo //------------ ...

  3. OpenCV入门学习笔记之Harris角点检测与SIFT特征匹配算法

    1. 写在前面 这篇文章整理两个图像处理中非常重要的算法,一个是Harris角点检测算法,另一个是SIFT特征匹配算法,这两个算法本质上还是去找图像里面的关键特征点,帮助我们后续更好的理解图像以及做各 ...

  4. c++学习笔记之指向对象的指针以及对象数组

    用对象数组的方法对数据成员进行初始化. #include<iostream> using namespace std; class box {public:box(int h=10,int ...

  5. OpenCV学习笔记之Mat

    一. Mat介绍 在2001年刚刚出现的时候,OpenCV基于 C 语言接口而建.为了在内存(memory)中存放图像,当时采用名为 IplImage 的C语言结构体,时至今日这仍出现在大多数的旧版教 ...

  6. Java快速入门学习笔记7 | Java语言中的类与对象

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  7. 原创 OpenCV3编程入门 学习笔记(总)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_36163358/article/ ...

  8. OpenCV3编程入门 学习笔记(总)

    OpenCV3编程入门 学习笔记 2018.12.12-2018.12.29 此博客为在看过毛星云版<OpenCV3编程入门>后所总结的一本笔记,可供复习使用. 文章目录 OpenCV3编 ...

  9. 机器学习入门学习笔记:(3.2)ID3决策树程序实现

    前言 之前的博客中介绍了决策树算法的原理并进行了数学推导(机器学习入门学习笔记:(3.1)决策树算法).决策树的原理相对简单,决策树算法有:ID3,C4.5,CART等算法.接下来将对ID3决策树算法 ...

最新文章

  1. C++ 随机函数----谈rand() 和 srand() 体会
  2. java中的math.abs_Java abs() 方法
  3. 2022年全球及中国医用口服硫酸钡行业规模格局与市场需求展望报告
  4. 警惕使用WebClient.DownloadFile(string uri,string filePath)方法
  5. 实录 | 平安人寿资深算法工程师张智:人机交互场景下的知识挖掘
  6. Nacos(七)之Spring Cloud集成
  7. Youtube最佳Red5 官方视频下载指南,字幕【亲测成功】
  8. HTML5之语义化标签
  9. 控制台输出Security Warning: The negotiated TLS 1.0 is an insecure protocol and is suported for backward c
  10. 滤波ad毛刺 c语言算法,Σ-Δ型ADC AD7124和AD717x的后置/增强型滤波器
  11. 文章阅读 - 机器学习检测DNS隧道
  12. oracle 伪列访问序列,Oracle同义词与序列基础教程
  13. GitHub原生AI代码生成工具Copilot,官方支持Visual Studio 2022
  14. Could not find metadata org.apache.maven.plugins:maven-archetype-plugin/maven-metadata.xml in local
  15. 当下比较火的直销分销预订返佣模式系统软件定制开发
  16. [转]JAVA环境变量设置完全版
  17. 计算机卡慢解决方法,电脑卡怎么办简单步骤 电脑慢怎么处理详细解决办法介绍...
  18. 在查询分析器里执行数据库的备份和还原操作
  19. 金仓数据库 KingbaseES V8.3至V8.6迁移最佳实践(3. KingbaseES移植能力支撑体系)
  20. 【华为/华三】PPP

热门文章

  1. 基于uml的系统分析的网上商城_UML建模工具Enterprise Architect最新版有哪些新功能呢?立即查看...
  2. 【NOIP2013模拟9.29】TheSwaps
  3. python标准词匹配_python匹配目标词
  4. Linux系统云主机教程,新开的linux云主机磁盘挂载教程
  5. 实验三——vlan间路由
  6. Mysql数据库和表的增删改查以及数据备份恢复
  7. python简说(二十二)写日志
  8. “/”和“\\”和feof();
  9. 第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s
  10. WCF学习之旅—第三个示例之二(二十八)