opencv算法学习
1.改变图像的亮度和对比度:

算法介绍:对每一点像素值的r,g,b,值进行乘法和加法的运算。
代码使用:
for( int y = ; y < image.rows; y++ )
{
for( int x = ; x < image.cols; x++ )
{
for( int c = ; c < ; c++ )
{
new_image.at<Vec3b>(y,x)[c] = saturate_cast<uchar>( alpha*( image.at<Vec3b>(y,x)[c] ) + beta );
}
}
}
2.opencv中的傅里叶变换:
主要用途:识别图片中物体的方向。
例如:矫正图片的中文字的排列方向。
计算公式:

算法介绍:f为空间值,F为频域值
代码使用:
dft(complexI, complexI);
由于dft变换后是有实数和复数部分,所有要进一步进行处理。
3.图片的平滑处理:即模糊处理
算法介绍:通过滤波器滤掉图像中的噪点,opencv主要提供高斯,中值,双边滤波
代码使用:
/// 使用高斯滤波
if( display_caption( "Gaussian Blur" ) != ) { return ; }
for ( int i = ; i < MAX_KERNEL_LENGTH; i = i + )
{ GaussianBlur( src, dst, Size( i, i ), , );
if( display_dst( DELAY_BLUR ) != ) { return ; }
/// 使用中值滤波
if( display_caption( "Median Blur" ) != ) { return ; }
for ( int i = ; i < MAX_KERNEL_LENGTH; i = i + )
{ medianBlur ( src, dst, i );
if( display_dst( DELAY_BLUR ) != ) { return ; } }
/// 使用双边滤波
if( display_caption( "Bilateral Blur" ) != ) { return ; }
for ( int i = ; i < MAX_KERNEL_LENGTH; i = i + )
{ bilateralFilter ( src, dst, i, i*, i/ );
if( display_dst( DELAY_BLUR ) != ) { return ; } }
4.图像的腐蚀与膨胀
腐蚀:处理部分被消减了。
膨胀:处理部分被扩大了。
算法介绍:与操作的内核或者说矩(图像)进行卷积操作。
核说白了就是一个固定大小的数值数组。该数组带有一个 锚点 ,一般位于数组中央。
卷积高度概括地说,卷积是在每一个图像块与某个算子(核)之间进行的运算。
腐蚀:
erode( src, erosion_dst, element );
element: 腐蚀操作的内核。 如果不指定,默认为一个简单的
矩阵。
膨胀:
dilate( src, dilation_dst, element );
可以使用函数 getStructuringElement();指定内核的形状
5.图像的放大与缩小
算法介绍:对图像与高斯内核卷积。缩小即是对图像的4个点像素,处理为一个点的像素。一个点的像素分解为四个点的像素。
pyrUp( tmp, dst, Size( tmp.cols*, tmp.rows* );//放大
pyrDown( tmp, dst, Size( tmp.cols/, tmp.rows/ );//缩小
但是opencv中最常用的图像缩放函数是relize();
6.图像的阈值操作:
算法介绍:通过对图像进行灰度值变换后,进行的色度分离操作,可应用与颜色识别。
threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );
7.图像的边缘检测:sobel算法
算法介绍:因为在边缘处,像素值明显改变了,我们可以通过求导的办法,将像素值的改变体现为斜率的变化。
/// 求 X方向梯度
//Scharr( src_gray, grad_x, ddepth, 1, 0, scale, delta, BORDER_DEFAULT );
Sobel( src_gray, grad_x, ddepth, , , , scale, delta, BORDER_DEFAULT );
convertScaleAbs( grad_x, abs_grad_x ); /// 求Y方向梯度
//Scharr( src_gray, grad_y, ddepth, 0, 1, scale, delta, BORDER_DEFAULT );
Sobel( src_gray, grad_y, ddepth, , , , scale, delta, BORDER_DEFAULT );
convertScaleAbs( grad_y, abs_grad_y ); /// 合并梯度(近似)
addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, , grad );
8。laplace算法优化了sobel算法,加入了二阶求导
Laplacian( src_gray, dst, ddepth, kernel_size, scale, delta, BORDER_DEFAULT );
9.canny最优的边缘检测算法
Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size );
opencv算法学习的更多相关文章
- Opencv算法学习二
1.直方图:图片中像素值分布情况的坐标图. 直方图均衡化:按一定规律拉伸像素值,提高像素值少的点,增加原图的对比度,使人感觉更清晰的函数. equalizeHist( src, dst ); 2.ha ...
- OpenCV中Camshitf算法学习(补充)
结合OpenCV中Camshitf算法学习,做一些简单的补充,包括: 实现全自动跟随的一种方法 参考opencv中的相关demo,可以截取目标物体的图片,由此预先计算出其色彩投影图,用于实际的目标跟随 ...
- OpenCV中Camshitf算法学习
今天上午,结合OpenCV自带的camshitf例程,简单的对camshitf有了一个大致的认识和理解,现总结如下: 1:关于HSV H指hue(色相).S指saturation(饱和度).V指val ...
- OpenCV计算机视觉学习(13)——图像特征点检测(Harris角点检测,sift算法)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 前言 ...
- 平滑处理Smooth之图像预处理算法-OpenCV应用学习笔记三
大清早的我们就来做一个简单有趣的图像处理算法实现,作为对图像处理算法学习的开端吧.之所以有趣就在于笔者把算法处理的各个方式的处理效果拿出来做了对比,给你看到原图和各种处理后的图像你是否能够知道那幅图对 ...
- OpenCV入门学习笔记
OpenCV入门学习笔记 参照OpenCV中文论坛相关文档(http://www.opencv.org.cn/) 一.简介 OpenCV(Open Source Computer Vision),开源 ...
- PCA算法学习(Matlab实现)
PCA(主成分分析)算法,主要用于数据降维,保留了数据集中对方差贡献最大的若干个特征来达到简化数据集的目的. 实现数据降维的步骤: 1.将原始数据中的每一个样本用向量表示,把所有样本组合起来构成一个矩 ...
- OpenCV图像处理学习笔记-Day1
OpenCV图像处理学习笔记-Day1 目录 OpenCV图像处理学习笔记-Day1 第1课:图像读入.显示和保存 1. 读入图像 2. 显示图像 3. 保存图像 第2课:图像处理入门基础 1. 基本 ...
- OpenCV计算机视觉学习(10)——图像变换(傅里叶变换,高通滤波,低通滤波)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 在数 ...
随机推荐
- linux 下查看cpu位数 内核等参数命令(转)
# uname -a Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux ( ...
- WinForm中重绘TabControl选项卡标题
最近开发WinForm频繁使用了TabControl控件,这个控件的选项卡没有BackgroundImage这个属性,那么如何为其各个选项卡添加背景图片呢?(这里说的是每个TabPage的头部,也就是 ...
- ubuntu selinux
apt install selinux-utils apt install policycoreutils https://zhidao.baidu.com/question/917938889387 ...
- 使用Word 2013发布cnblogs随笔
博客园支持Word或者OneNote一键发布文章. 获取cnblogs的URL地址,类似http://rpc.cnblogs.com/metaweblog/your_name 打开word中的管理账户 ...
- ubuntu_nfs搭建
搭建步骤: 1.sudo apt-get install nfs-kernel-server 2.执行命令:mkdir /home/wmx/Desktop/nfs 搭建一个nfs服务专有的文件夹,这里 ...
- fat32转ntfs
convert c: /fs:ntfs 下了个维基的zim,7G,fat32放不下 :( Microsoft Windows [版本 6.1.7600] 版权所有 (c) 2009 Microsoft ...
- TMS320F28027/26/23/22/21/20芯片解密单片机破解原理!
TMS320F28027/26/23/22/21/20芯片解密单片机破解 TMS320F2802系列芯片解密型号: TMS320F28027F.TMS320F280270.TMS320F28027.T ...
- 《DSP using MATLAB》示例Example5.19
代码: n = 0:9; x = n+1; h = [1,0,-1]; N = 6; y = ovrlpsav(x,h,N); nh = 0:1:length(h)-1; ny = 0:1:lengt ...
- 二分+DP+Trie HDOJ 5715 XOR 游戏
题目链接 XOR 游戏 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- Android Studio Lambda Config
lambda虽然不能让我们应用性能更加优良,但是在代码提高整洁,方便阅读上,还是不错的选择.目前android studio对lambda的原生支持并不是很友好,可以使用第三方配置实现完美支持.配置如 ...