Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >OpenCV图像处理03-矩阵的掩膜操作

OpenCV图像处理03-矩阵的掩膜操作

作者头像
yangjiao
发布于 2021-03-04 02:44:54
发布于 2021-03-04 02:44:54
33700
代码可运行
举报
文章被收录于专栏:-csdn迁移-csdn迁移
运行总次数:0
代码可运行

03-矩阵的掩膜操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<opencv2/opencv.hpp>
#include<iostream>
#include<math.h>
using namespace std;
using namespace cv;
int main() {
	Mat src, dst;
	src = imread("D:\\heroRcData\\opencvProject\\arrowImg\\01\\01.jpg");
	if (!src.data) {
		cout << "could not load image..." << endl;
		return -1;
	}
	namedWindow("input image", CV_WINDOW_AUTOSIZE);
	imshow("input image", src);
	//***********************************************************************************

	int cols = src.cols * src.channels();//输入图像总列数 
	int rows = src.rows;//输入图像行数
	int channels = src.channels();//输入图像通道数
	dst = Mat::zeros(src.size(), src.type());//初始化输出矩阵
	for (int i = 1; i < rows - 1; i++) {//边缘的不能进行掩膜操作 故i,j不取边界值
		const uchar* current = src.ptr<uchar>(i);	//当前行的像素指针
		const uchar* previous = src.ptr<uchar>(i - 1);//上一行的像素指针
		const uchar* next = src.ptr<uchar>(i + 1);//下一行的像素指针
		uchar* output = dst.ptr<uchar>(i);	//输出图像当前行的像素指针
		for (int j = 1; j < cols - 1; j++) {
			//使用公式提高图像对比度:输出图像中该像素点的值 = 5*原图像该像素点值 - (原图像上下左右四个像素点值的和)
			//saturate_cast<uchar>的作用是将<0的像素值映射为0 >255的像素值映射为255 0~255之间的像素值不变 从而确保像素值在0~255范围内
			output[j] = saturate_cast<uchar>(5 * current[j] - (previous[j] + next[j] + current[j - channels] + current[j + channels]));
		}
	}
	namedWindow("output image", CV_WINDOW_AUTOSIZE);
	imshow("output image", dst);
	//***********************************************************************************

	double t = getTickCount();//用于后续求得运行时间 【标记1】
	//下面是使用filter2Da函数实现上述效果
	Mat dst1;
	Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0); //定义掩膜
	filter2D(src, dst1, src.depth(), kernel); //src.depth()是图像深度 可以用-1代替
	namedWindow("output1 image", CV_WINDOW_AUTOSIZE);
	imshow("output1 image", dst1);
	
	double timeConsume = (getTickCount() - t) / getTickFrequency();//从【标记1】到现在消耗的时间
	cout << "time consume " << timeConsume << endl;

	waitKey(0);
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
OpenCV图像处理笔记(一):图片基本操作
==如果有报无法找到opencv_world343.dll的Error,请把C:\opencv\build\x64\vc14\bin下的opencv_world343.dll文件复制到C:\Windows 目录下即可==
MiChong
2020/09/24
1.5K0
OpenCV图像处理笔记(一):图片基本操作
OpenCV图像处理05-图像操作
05-图像操作 #include<opencv2/opencv.hpp> #include<iostream> using namespace std; using namespace cv; int main() { Mat src,gray_src; src = imread("D:\\heroRcData\\opencvProject\\arrowImg\\02\\01.jpg"); if (!src.data) { cout << "could not load image..." <<
yangjiao
2021/03/04
3840
OpenCV像素点邻域遍历效率比较,以及访问像素点的几种方法
OpenCV像素点邻域遍历效率比较,以及访问像素点的几种方法 前言: 以前笔者在项目中经常使用到OpenCV的算法,而大部分OpenCV的算法都需要进行遍历操作,而且很多遍历操作都是需要对目标像素点的
剑影啸清寒
2018/01/02
2.7K0
OpenCV像素点邻域遍历效率比较,以及访问像素点的几种方法
基于OpenCV的图像分割处理!
图像阈值化分割是一种传统的最常用的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术。它特别适用于目标和背景占据不同灰度级范围的图像。它不仅可以极大的压缩数据量,而且也大大简化了分析和处理步骤,因此在很多情况下,是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。
Datawhale
2020/07/09
3.6K0
基于OpenCV的图像分割处理!
【OpenCV入门之十六】多种方式模糊图像
其中:f()表示一副图像,i、j表示图像的行和列,h(k,l)表示卷积算子(和)(也可以叫掩膜),k l又可以叫窗口大小(掩膜的大小,比如3*3),g()表示输出的像素值;
小白学视觉
2019/06/02
5940
OpenCV图像处理笔记(三):霍夫变换、直方图、轮廓等综合应用
一、霍夫直线变换 1、霍夫直线变换 Hough Line Transform用来做直线检测 前提条件 – 边缘检测已经完成 平面空间到极坐标空间转换 2、霍夫直线变换介绍 对于任意一条直线上的所有点来说 变换到极坐标中,从[0~360]空间,可以得到r的大小 属于同一条直线上点在极坐标空(r, theta)必然在一个点上有最强的信号出现,根据此反算到平面坐标中就可以得到直线上各点的像素坐标。从而得到直线 3、相关API 标准的霍夫变换 cv::HoughLines从平面坐标转换到霍夫空间,最终输出是
MiChong
2020/09/24
3K0
OpenCV图像处理笔记(三):霍夫变换、直方图、轮廓等综合应用
10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换 OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)数字图像
  图像几何变换又称为图像空间变换,它将一副图像中的坐标位置映射到另一幅图像中的新坐标位置。我们学习几何变换就是确定这种空间映射关系,以及映射过程中的变化参数。图像的几何变换改变了像素的空间位置,建立一种原图像像素与变换后图像像素之间的映射关系,通过这种映射关系能够实现下面两种计算:
vv彭
2020/10/27
3.9K0
10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换
    


OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)数字图像
OpenCV图像处理笔记(二):图片操作进阶
一、图像模糊 1、模糊原理 Smooth/Blur 是图像处理中最简单和常用的操作之一 使用该操作的原因之一就为了给图像预处理时候减低噪声 使用Smooth/Blur操作其背后是数学的卷积计算 通常这
MiChong
2020/09/24
1.2K0
OpenCV图像处理笔记(二):图片操作进阶
OpenCV图像处理09-图像模糊(一)
09-图像模糊(一) 模糊原理 Smooth/Blur是图像处理中最简单和常用的操作之一 使用该操作的目的之一是为了在图像预处理时降低噪声 使用Smooth/Blur操作背后的数学卷积计
yangjiao
2021/03/04
5250
OpenCV图像处理专栏十三 | 利用多尺度融合提升图像细节
今天为大家介绍一个利用多尺度来提升图像细节的算法。这个算法来自于论文《DARK IMAGE ENHANCEMENT BASED ON PAIRWISE TARGET CONTRAST AND MULTI-SCALE DETAIL BOOSTING》,如果你想自己的图片细节看起来更加丰富的话可以尝试一下这个算法。
BBuf
2020/02/21
7650
OpenCV图像处理专栏十三 | 利用多尺度融合提升图像细节
OpenCV 图像处理学习手册:1~5
本章旨在与 OpenCV,其安装和第一个基本程序进行首次接触。 我们将涵盖以下主题:
ApacheCN_飞龙
2023/04/27
2.9K0
OpenCV 图像处理学习手册:1~5
OpenCV实时美颜摄像并生成H264视频流
        为什么美颜摄像这么简单的功能,OpenCV这个开源项目网上很少有代码呢?对于在windows平台下,生成h264视频流也比价麻烦,没有现成的api可以使用,需要借助MinGw编译libx264,或者ffmpeg才能使用。
流川疯
2019/01/18
2.8K0
OpenCV中直方图反向投影算法详解与实现
OpenCV中直方图反向投影算法详解与实现 一:直方图交叉 OpenCV中直方图反向投影算法实现来自一篇论文《Indexing Via Color Histograms》其作者有两位、是Michael
OpenCV学堂
2018/04/04
1.6K0
OpenCV中直方图反向投影算法详解与实现
OpenCV图像处理专栏二 |《Local Color Correction 》论文阅读及C++复现
偶然在IPOL见到了这篇paper,虽然之前复现的一些paper已经可以较好的处理低照度下的色彩恢复,然而在光度强度很大的情况下怎么恢复还不清楚,并且如果出现图片中既有很亮的部分,又有很暗的部分,又不知道怎么处理了。这篇paper,正式为了解决这一问题,他的局部颜色矫正,和He KaiMing的暗通道去雾有相似的想法,值得借鉴。论文地址为:http://www.ipol.im/pub/art/2011/gl_lcc/ 。IPOL是一个非常好的学习数字图像处理的网站,上面的论文都是提供配套源码的,如果平时在数字图像处理方面想找一些Idea,不妨上去看看。
BBuf
2019/12/10
1.2K0
OpenCV图像处理专栏二 |《Local Color Correction 》论文阅读及C++复现
☀️Python+opencv图像处理☀️
如今的修图软件真是厉害,专业级的ps不说,手机上的各种修图软件也是强大无比。尤其是各种厉害又好玩的滤镜真是让人感叹技术可以改变生活,让芒果忍不住好奇了解了解图像处理中的滤镜。
苏州程序大白
2022/04/13
6110
☀️Python+opencv图像处理☀️
OpenCV中积分图介绍与应用
OpenCV中积分图函数与应用 一:图像积分图概念 积分图像是Crow在1984年首次提出,是为了在多尺度透视投影中提高渲染速度。随后这种技术被应用到基于NCC的快速匹配、对象检测和SURF变换中、基于统计学的快速滤波器等方面。积分图像是一种在图像中快速计算矩形区域和的方法,这种算法主要优点是一旦积分图像首先被计算出来我们可以计算图像中任意大小矩形区域的和而且是在常量时间内。这样在图像模糊、边缘提取、对象检测的时候极大降低计算量、提高计算速度。第一个应用积分图像技术的应用是在Viola-Jones的对象检
OpenCV学堂
2018/04/04
2.9K0
OpenCV中积分图介绍与应用
万字长文,值得收藏/参考的OpenCV C++基础代码
一位友好人士做的B站OpenCV4.x C++ 快速入门30讲视频课程的笔记总结!我只能点赞了!
OpenCV学堂
2021/08/06
1.1K0
如何对图像进行卷积操作[通俗易懂]
2、卷积操作:卷积核与原图对应位置相乘再求和;然后将所求和放在被卷积操作的图中心位置。
全栈程序员站长
2022/08/26
3K0
如何对图像进行卷积操作[通俗易懂]
opencv图像角点提取
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/179735.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
5610
图像的卷积操作
使锚点覆盖在待计算像素上面,然后计算像素值与被覆盖的卷积核中的值的乘积和。将这个和赋值给当前像素,这就是卷积的过程。
全栈程序员站长
2022/09/01
3540
推荐阅读
相关推荐
OpenCV图像处理笔记(一):图片基本操作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验