不懂的,可以简单,看看这个网址: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. greenplum 存储过程 索引信息

    涉及的索引表 参考:http://blog.nbhao.org/1539.html pg_index pg_indexes pg_stat_all_indexes # 记录当前数据库中所有的索引的使用 ...

  2. vs2010编译C++ 状态标志

    // CTest.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include &l ...

  3. POJ 1027:The Same Game 较(chao)为(ji)复(ma)杂(fan)的模拟

    The Same Game Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5168   Accepted: 1944 Des ...

  4. Java虚拟机05.1(各种环境下jvm的参数如何调整?)

    cmd下 eclipse下 tomcat下 cmd下指定jvm参数 在cmd下执行Java程序可以通过如下方式之地需要配置的Java 虚拟机参数: 这里只是指定了对初始为2M,新生代为1M,堆最大值为 ...

  5. Java提升四:Stream流

    1.Stream流的定义 Stream是Java中的一个接口.它的作用类似于迭代器,但其功能比迭代器强大,主要用于对数组和集合的操作. Stream中的流式思想:每一步只操作,不存储. 2.Strea ...

  6. 二进制枚举之被RE完虐的我的一天

    记录一道学长们说有点难度的题目 好好玩啊这道题 ACM程序设计大赛是大学级别最高的脑力竞赛,素来被冠以"程序设计的奥林匹克"的尊称.大赛至今已有近40年的历史,是世界范围内历史最悠 ...

  7. php phar反序列化任意执行代码

    2018年 原理一.关于流包装stream wrapper大多数的文件操作允许使用各种URL协议去访问文件路径,如data://,zlib://,php://例如常见的有include('php:// ...

  8. javascript实现ul中列表项随机排列

    方法1 <!DOCTYPE html><html lang="en"><head> <script type="text/jav ...

  9. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-info-sign

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  10. c++链表演示

    #include<iostream> #include<string.h> #include<conio.h> using namespace std; #defi ...