不懂的,可以简单,看看这个网址:https://blog.csdn.net/xiongwen_li/article/details/78503491

图片放到了桌面,所以,图片的路径就是桌面了,剩余的代码如下

 #include<iostream>
#include<opencv.hpp> using namespace std;
using namespace cv; int main()
{
//定义两个位图的类
Mat sour, dest;
//将你要弄的图片读进来
sour=imread("C:\\Users\\32829\\Desktop\\aa.jpg");
if (!sour.data)//这里还可以用sour.empty()来检验图片读入是否正确
{
cout << "图片读入失败" << endl;
return -;
}
//创建一个要展示图片的窗口
namedWindow("原图片展示", );
imshow("原图片展示", sour);//进行图片展示 //创建一个空的和原图片大小一样的图,并把它赋值给dest
dest = Mat::zeros(sour.size(), sour.type());
//图片的宽度,注意是原图片的列数减了1,为啥减一,暂时理解为是不考虑图片的第一列,还得乘以他的管道数
int cols = (sour.cols - )*sour.channels();
//因为你不考虑他的第一列,所以就设置了一个偏移量,这个变量
int offsets = sour.channels();
//图片的宽度
int rows = sour.rows; for (int row = ; row < (rows-); row++)
{
const uchar* current = sour.ptr<uchar>(row);//获取当前图片当前行的指针
const uchar*privious = sour.ptr<uchar>(row - );//获取图片上一行行的指针
const uchar* next = sour.ptr<uchar>(row + );//获取当前图片下一行行的指针
uchar* output = dest.ptr<uchar>(row);//获取目标图片当前行的指针
for (int col = offsets; col < cols; col++)
{
//目的图片的当前像素点的计算。 saturate_cast<uchar>,这个就是保证你的RGB不溢出,范围都控制在0-255
output[col] = saturate_cast<uchar>( * current[col] - (current[col - offsets] + current[col + offsets] + next[col] + privious[col]));
}
}
namedWindow("新的图片展示");
imshow("新的图片展示",dest); waitKey();
return ;
}

还有一个简单的代码,用opencv自己带的一个函数实现掩膜操作

 #include<iostream>
#include<opencv.hpp> using namespace std;
using namespace cv; int main()
{
//定义两个位图的类
Mat sour, dest;
//将你要弄的图片读进来
sour=imread("C:\\Users\\32829\\Desktop\\aa.jpg");
if (!sour.data)//这里还可以用sour.empty()来检验图片读入是否正确
{
cout << "图片读入失败" << endl;
return -;
}
//创建一个要展示图片的窗口
namedWindow("原图片展示", );
imshow("原图片展示", sour);//进行图片展示 // 使用Filter2D函数
Mat result;
Mat kern = (Mat_<char>(, ) << , -, , -, , -, , -, );
filter2D(sour, dest, sour.depth(), kern); namedWindow("新的图片展示");
imshow("新的图片展示", dest); waitKey();
return ;
}

(5)opencv的基础操作和矩阵的掩模操作的更多相关文章

  1. OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)

    PS. 因为csdn博客文章长度有限制,本文有部分内容被截掉了.在OpenCV中文站点的wiki上有可读性更好.而且是完整的版本号,欢迎浏览. OpenCV Wiki :<OpenCV 编程简单 ...

  2. OpenCV学习笔记:矩阵的掩码操作

    矩阵的掩码操作很简单.其思想是:根据掩码矩阵(也称作核)重新计算图像中每个像素的值.掩码矩阵中的值表示近邻像素值(包括该像素自身的值)对新像素值有多大影响.从数学观点看,我们用自己设置的权值,对像素邻 ...

  3. OpenCV - Operations on Arrays 对数组(矩阵)的一些操作

    Function (函数名) Use (函数用处) add 矩阵加法,A+B的更高级形式,支持mask scaleAdd 矩阵加法,一个带有缩放因子dst(I) = scale * src1(I) + ...

  4. OpenCV 对矩阵进行掩码操作

    Mask operations on matrices https://docs.opencv.org/master/d7/d37/tutorial_mat_mask_operations.html ...

  5. OpenCV学习笔记(六) 滤波器 形态学操作(腐蚀、膨胀等)

    转自:OpenCV 教程 另附:计算机视觉:算法与应用(2012),Learning OpenCV(2009) 平滑图像:滤波器 平滑 也称 模糊, 是一项简单且使用频率很高的图像处理方法.平滑处理的 ...

  6. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  7. OpenGL的glPushMatrix和glPopMatrix矩阵栈顶操作函数详解

    OpenGL中图形绘制后,往往需要一系列的变换来达到用户的目的,而这种变换实现的原理是又通过矩阵进行操作的.opengl中的变换一般包括视图变换.模型变换.投影变换等,在每次变换后,opengl将会呈 ...

  8. 用状态矩阵解决有序操作的case爆炸问题(转载)

    转自http://qa.baidu.com/blog/?p=167 作者:qabloger 一. 简介 我们在测试中可能都会面对case爆炸问题.有的case组合是无序的,我们可以通过pict[1]组 ...

  9. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

随机推荐

  1. Task使用注意

    1. CancellationTokenSource的使用 https://binary-studio.com/2015/10/23/task-cancellation-in-c-and-things ...

  2. JavaScript 文件延迟和异步加载

    JavaScript 文件延迟和异步加载 -般情况下,在文档的 <head> 标签中包含 JavaScript 脚本,或者导入的 JavaScript 文件. 这意味着必须等到全部 Jav ...

  3. redis 模糊查询与删除

    创建一条数据 set  name1  zhangsan 查询 get name1 在创建一条数据 set name2 lisi 查询 get name2 模糊查询 keys name* 查询结果  n ...

  4. 在html中创建自定义标签

    创建并使用自定义标签 Web Components 标准非常重要的一个特性是,它使开发者能够将HTML页面的功能封装为 custom elements(自定义标签),本篇介绍使用 CustomElem ...

  5. XV6源代码阅读-中断与系统调用

    Exercise1 源代码阅读 1.启动部分: bootasm.S bootmain.c 和xv6初始化模块:main.c bootasm.S 由16位和32位汇编混合编写成的XV6引导加载器.boo ...

  6. 如何创建一个SpringBoot多模块项目

    创建主模块rail-plate-line 1.点击Create New Project  --> 选择Spring Initializr  -- > 选择本地jdk 2.Group为com ...

  7. Android Studio相关

    1.下载安装 Android Studio 2.打开已有或是新建工程,gradle编译时候会报错(被墙),可以切换阿里的源 修改build.gradle 的配置: buildscript { repo ...

  8. 【SQL必知必会笔记(3)】SELECT语句的WHERE子句数据过滤操作

    上个笔记主要介绍了利用SELECT语句检索单个/多个/所有列,并利用DISTINCT关键字检索具有唯一性的值.利用LIMIT/OFFSET子句限制结果:以及利用ORDER BY子句排序检索出的数据,主 ...

  9. mysql 索引入门

    创建索引的语法结构:

  10. 前端 移动端H5页面 DEBUG

    下载网址:https://github.com/Tencent/vConsole 把这个JS复制到项目里面 然后引入到HTML中 然后在JS上面实例化一下即可 页面就会有一个绿色的,然后点击一下就可以 ...