不懂的,可以简单,看看这个网址: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. 百度地图javascript API,每个功能每天免费的次数

  2. Arm-Linux 移植 Ubuntu

    前言: 这篇文章介绍如何构建一个完整基于ARM的Ubuntu系统. 由于改文章当初写的时候是发表在国外产品论坛上面,故保留了原文内容. 使用到的硬件平台:Geekbox 补充说明: 虽然Geekbox ...

  3. ElasticSearch入门了解

    什么是Elasticsearch: Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统 1.什么是搜索? 搜索,就是在任何场景下,找寻你想要的信息,这个时候,会输入一段你要搜索 ...

  4. MAC 终端编辑完成后如何保存:

    如果是vi,则:Esc 退出编辑模式,输入以下命令: :wq 保存后退出vi,若为 :wq! 则为强制储存后退出(常用):w 保存但不退出(常用):w! 若文件属性为『只读』时,强制写入该档案:q 离 ...

  5. Program-Language

    1. 主流编程语言 2. 编程语言分类     2.1 编译or解释     2.2 按照客观系统的描述可分为两类     2.3 按照编程范型可分为 3. 语言范式 Paradigm 4. 计算机语 ...

  6. PHP截取指定字符前的字符串

    $str = 'A|B||C|D'; echo substr($str,0,strpos($str, '||')); 输出:A|B

  7. MongoDB首次启动常见问题

    问题1. exception in initandlisten 29 data directory /data/db not found 问题:MongoDB默认存储路径为/data/db,这里显示没 ...

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

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

  9. JAVA CookieUtil

    package com.itheima.shop.utils; import java.io.UnsupportedEncodingException; import java.net.URLDeco ...

  10. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons)

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