![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Opencv
科学无解
这个作者很懒,什么都没留下…
展开
-
Opencv学习笔记图片的读取,旋转,保存
在opencv中cv::image用于图片的读入,cv::imshow用于图片的展示,cv::imwrite用于图片的保存,cv::flip函数用于图像的旋转和镜像变换。cv::flip(image,result,1); //第一个参数表示输入图片,第二个参数表示处理过的输出图像,第三个参数的正数表示水平,0表示垂直,负数表示水平和垂直;具体代码:#include<opencv2/...原创 2019-05-02 11:43:30 · 626 阅读 · 0 评论 -
1.11opencv学习笔记之自定义线性滤波
一.常见算子二.卷积计算卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point)。把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理。数学表达如下:三.主要函数:filter2D方法filter2D(Mat src, //输入...原创 2019-05-02 11:50:49 · 172 阅读 · 0 评论 -
1.12opencv学习笔记之边缘处理
一.边缘处理在卷积开始之前增加边缘像素,填充的像素值为0或者RGB黑色,比如3x3在四周各填充1个像素的边缘,这样就确保图像的边缘被处理,在卷积处理之后再去掉这些边缘。openCV中默认的处理方法是: BORDER_DEFAULT,此外常用的还有如下几种:BORDER_CONSTANT – 填充边缘用指定像素值BORDER_REPLICATE – 填充边缘像素用已知的边缘像素值。B...原创 2019-05-03 11:42:43 · 216 阅读 · 0 评论 -
1.13opencv学习笔记之sobel和scharr算子
代码实现1sobel算子#include &lt;opencv2/opencv.hpp&gt;#include &lt;iostream&gt;#include &lt;math.h&gt;using namespace cv;int main(int argc, char** argv) { Mat src, dst; src = imread("E:/15.J原创 2019-05-03 11:44:28 · 163 阅读 · 0 评论 -
1.1opencv学习笔记矩阵的掩模操作
矩阵的掩模是根据掩模来重新计算每个像素的像素值,掩模(mask)也被称为kernel,通过掩模操作实现的图像对比度调整。掩模操作的原理: 红色是中心像素,从上到下,从左到右对每个像素做同样的处理操作,得到最终结果就是对比度提高之后的输出图像Mat对象,计算公式:I(i,j)==5*I(i,j)-[I(i-1,j)+(i+1,j)+(i,j-1)+(i,j+1)]掩模的操作还可以调用filte...原创 2019-04-30 10:06:49 · 335 阅读 · 0 评论 -
1.2opencv学习笔记图片转换常用的几个功能
#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(int argc, char** argv) { Mat src; src = imread("E:/9.JPG"); if (src.empty()) { co...原创 2019-04-30 10:09:53 · 121 阅读 · 0 评论 -
opencv学习笔记图像的融合
使用cv::addWeighted函数,将2幅图像进行融合,2幅图像都要有相同的大小和类型,实现原理函数:cv::addWeighted(image1,k,image2,k1,k2,result);#include&amp;amp;lt;opencv2/core.hpp&amp;amp;gt;#include&amp;amp;lt;opencv2/highgui.hpp&amp;amp;gt;//#include&原创 2019-05-01 12:46:59 · 351 阅读 · 0 评论 -
opencv学习笔记图像的重映射
重映射是通过修改像素的位置,生成一个新版本的图像。为了构建新图像,需要知道目标图像中每个像素的原始位置。因此,我们需要的映射函数应该能根据像素的新位置得到像素的原始位置。这个转换过程描述了如何把新图像的像素映射回原始图像,因此称为反向映射。在Opencv中,可以用两个映射参数来说明反向映射:一个针对x坐标,另一个针对y坐标。#include<math.h>#include<o...原创 2019-05-01 12:47:22 · 691 阅读 · 0 评论 -
Opencv学习笔记之减少图像中颜色的数量
减色算法:假设N是减色因子,将图像中每个像素的值除以N(这里使用整数除法,不保留余数)。然后将结果乘以N,得到N的倍数,并且刚好不超过原始像素值。加上N/2,就得到相邻的N倍数之间的中间值。对所有8位通道值重复这个过程,就会得到(256/NX(256/N)X(256/N)种可能的颜色值。#include<opencv2/core.hpp>#include<opencv2/hi...原创 2019-05-01 12:48:38 · 1024 阅读 · 0 评论 -
1.10opencv学习笔记之基本阈值操作
一.图像阈值(threshold)的概念:阈值 是什么?简单点说是把图像分割的标尺,这个标尺是根据什么产生的,阈值产生算法?阈值类型二.类型1.阈值二值化(threshold binary):左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值。2.阈值反二值化(threshold binary Inverted):左下方的图表示图像像素点Src(x,y)值分布情况,蓝色...原创 2019-05-02 11:50:27 · 173 阅读 · 0 评论 -
1.9opencv学习笔记图像金字塔
一.图像金字塔概念 – 高斯金字塔1.高斯金子塔是从底向上,逐层降采样得到。2.降采样之后图像大小是原图像MxN的M/2 x N/2 ,就是对原图像删除偶数行与列,即得到降采样之后上一层的图片。3.高斯金子塔的生成过程分为两步:- 对当前层进行高斯模糊- 删除当前层的偶数行与列即可得到上一层的图像,这样上一层跟下一层相比,都只有它的1/4大小。二.高斯不同定义:就是把同一张图像在...原创 2019-05-02 11:50:02 · 135 阅读 · 0 评论 -
opencv学习笔记扫描图像并访问相邻像素
在图像处理中经常有这样的处理函数,它在计算每个像素的数值时,需要使用周边像素的值。如果相邻像素在上一行或下一行,就需要同时扫描图像的多行。实现方法:sharpened_pixel=5*current-left-right-up-down;这里的left是与当前像素相邻的左侧像素,up是上一行的相邻像素,因此类推。锐化滤波器的核心矩阵:实现函数为cv::filter2D#include...原创 2019-05-02 11:45:25 · 702 阅读 · 0 评论 -
1.3opencv学习笔记图像颜色的反转
#include <opencv2/core/core.hpp> #include <opencv2/imgcodecs.hpp> #include <opencv2/opencv.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>using namesp...原创 2019-05-02 11:47:42 · 1259 阅读 · 1 评论 -
1.4opencv学习笔记调整图像亮度和对比度
一.理论部分:1.图像变换可以看为:a.像素变换——点操作 b.领域操作——区域2.调整图像亮度和对比度属于像素变换-点操作:3.主要函数:(1) Mat new_image = Mat::zeros( image.size(), image.type() ); 创建一张跟原图像大小和类型一致的空白图像、像素值初始化为0(2) saturate_cast(value)确保值大...原创 2019-05-02 11:47:59 · 175 阅读 · 0 评论 -
1.5opencv学习笔记图像模糊1
一.模糊原理:1.均值滤波:主要函数2.高斯滤波:主要函数二:实现代码#include <opencv2/opencv.hpp> #include <iostream> using namespace cv;int main(int argc, char** argv) { Mat src, dst; src = imread("E:/15....原创 2019-05-02 11:48:25 · 131 阅读 · 0 评论 -
1.5opencv学习笔记图像模糊2
一.理论部分:1.中值滤波:(1).统计排序滤波器(2).中值对椒盐噪声有很好的抑制作用(3).(4).中值模糊medianBlur(Mat src, Mat dest, ksize);2.双边滤波:(1).均值模糊无法克服边缘像素信息丢失缺陷。原因是均值滤波是基于平均权重(2).高斯模糊部分克服了该缺陷,但是无法完全避免,因为没有考虑像素值的不同(3).高斯双边模糊 – 是边...原创 2019-05-02 11:48:43 · 117 阅读 · 0 评论 -
1.6opencv学习笔记膨胀与腐蚀
一.理论部分:图像形态学操作 – 基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学形态学有四个基本操作:(1).腐蚀:跟卷积操作类似,假设有图像A和结构元素B,结构元素B在A上面移动,其中B定义其中心为锚点,计算B覆盖下A的最大像素值用来替换锚点的像素,其中B作为结构体可以是任意形状(2)膨胀:腐蚀跟膨胀操作的过程类似,唯一不同的是以最小值替换锚点重叠下图像的像素值...原创 2019-05-02 11:49:06 · 153 阅读 · 0 评论 -
1.7opencv学习笔记形态学操作
一.形态学操作:(1).开操作(open):先腐蚀后膨胀,可以去掉小的对象。(2).闭操作(close):先腐蚀后膨胀,可以填充小的洞(fill hole)(3).形态学梯度(Morphological Gradient):膨胀减去腐蚀,又称为基本梯度(其它还包括-内部梯度、方向梯度)(4).顶帽 (top hat):顶帽 是原图像与开操作之间的差值图像(5).黑帽:黑帽是闭操作图...原创 2019-05-02 11:49:24 · 221 阅读 · 0 评论 -
1.8opencv学习笔记提取水平与垂直
一.实现原理:图像形态学操作时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另外一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出。通过使用两个最基本的形态学操作 – 膨胀与腐蚀,使用不同的结构元素实现对输入图像的操作、得到想要的结果。膨胀,输出的像素值是结构元素覆盖下输入图像的最大像素值腐蚀,输出的像素值是结构元素覆盖下输入图像的最小像素值二.提取...原创 2019-05-02 11:49:41 · 159 阅读 · 0 评论 -
Opencv学习笔记之使用图像掩码
掩码是一个8位图像,如果掩码中某个位置的值不为0,在这个位置上的操作不起作用;如果掩码中某些像素位置为0,那么对图像中相应位置的操作将不会起作用。#include<opencv2/core.hpp>#include<opencv2/highgui.hpp>cv::Mat image1,logo;int main(int argc, char** argv) {im...原创 2019-05-01 12:49:42 · 1519 阅读 · 0 评论