(5)opencv的基础操作和矩阵的掩模操作
不懂的,可以简单,看看这个网址: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的基础操作和矩阵的掩模操作的更多相关文章
- OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
PS. 因为csdn博客文章长度有限制,本文有部分内容被截掉了.在OpenCV中文站点的wiki上有可读性更好.而且是完整的版本号,欢迎浏览. OpenCV Wiki :<OpenCV 编程简单 ...
- OpenCV学习笔记:矩阵的掩码操作
矩阵的掩码操作很简单.其思想是:根据掩码矩阵(也称作核)重新计算图像中每个像素的值.掩码矩阵中的值表示近邻像素值(包括该像素自身的值)对新像素值有多大影响.从数学观点看,我们用自己设置的权值,对像素邻 ...
- OpenCV - Operations on Arrays 对数组(矩阵)的一些操作
Function (函数名) Use (函数用处) add 矩阵加法,A+B的更高级形式,支持mask scaleAdd 矩阵加法,一个带有缩放因子dst(I) = scale * src1(I) + ...
- OpenCV 对矩阵进行掩码操作
Mask operations on matrices https://docs.opencv.org/master/d7/d37/tutorial_mat_mask_operations.html ...
- OpenCV学习笔记(六) 滤波器 形态学操作(腐蚀、膨胀等)
转自:OpenCV 教程 另附:计算机视觉:算法与应用(2012),Learning OpenCV(2009) 平滑图像:滤波器 平滑 也称 模糊, 是一项简单且使用频率很高的图像处理方法.平滑处理的 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- OpenGL的glPushMatrix和glPopMatrix矩阵栈顶操作函数详解
OpenGL中图形绘制后,往往需要一系列的变换来达到用户的目的,而这种变换实现的原理是又通过矩阵进行操作的.opengl中的变换一般包括视图变换.模型变换.投影变换等,在每次变换后,opengl将会呈 ...
- 用状态矩阵解决有序操作的case爆炸问题(转载)
转自http://qa.baidu.com/blog/?p=167 作者:qabloger 一. 简介 我们在测试中可能都会面对case爆炸问题.有的case组合是无序的,我们可以通过pict[1]组 ...
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
随机推荐
- python中判断素数的函数
来看这一种判断素数(质数)的函数: form math import sart def is_prime(n): if n==1: return False for i in range(2, int ...
- python-python基础3
本章内容: 函数 递归 高阶函数 一.函数 一个函数一般完成一项特定的功能 函数使用 函数需要先定义 使用函数,调用
- C++ 11 :override 关键字的使用
override 关键字 作用:在成员函数声明或定义中, override 确保该函数为虚函数并覆写来自基类的虚函数. 位置:函数调用运算符之后,函数体或纯虚函数标识 "= 0" ...
- fuseki远程访问方法
./fuseki-server启动服务后,我们的服务只能是localhost访问,无法被其他人访问,那么 要怎么修改呢.很简单,把apche-jena-fuseki-3.10.0/run 下面的shi ...
- 磁盘空间引起ES集群shard unassigned的处理过程
1.问题描述 早上醒来发现手机有很多ES状态为red的告警,集群就前几天加了几个每天有十多亿记录的业务,当时估算过磁盘容量,应该是没有问题的,但是现在集群状态突然变成red了,这就有点懵逼了. 2.查 ...
- CC26XX开发
[CC26XX开发] 2016-01-26 [CC2650 入门] CC2650 sensortag入门 http://processors.wiki.ti.com/index.php/CC2650_ ...
- redis cluster 添加/删除节点操作
RedisCluster 添加/删除节点 添加节点新配置两个测试节点8008和9009 [root@--- ~]# /usr/local/redis-/bin/redis-server /u02/re ...
- [Codeforces #608 div2]1272B Blocks
Description There are nnn blocks arranged in a row and numbered from left to right, starting from on ...
- haproxy+keepalive双主高可用实现负载均衡
转载自https://blog.51cto.com/3381847248/1977073 前面我已经介绍了haproxy结合keepalive做简单的双主高可用,如果不清楚的话,可以去我的上一 篇博客 ...
- 用python实现在手机查看小姐姐的电脑在作什么!
看上心意的小姐姐,想看她平时都浏览什么网页,如何才能看她的桌面呢,都说Python很厉害,这次我们做一个利用移动端访问电脑来查看电脑的界面的神器!不知道大家以前有没有做过这方面的东西呢?也许大家听起来 ...