OpenCV系列笔记
OpenCV系列笔记
业余狙击手19
图像算法菜鸟,点滴积累成就硕果累累。
展开
-
OpenCV-图像特征提取算法5_SIFT
SIFT算法简介 尺度不变特征转换即SIFT (Scale-invariant feature transform)是一种计算机视觉的算法。它用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由 David Lowe在1999年所发表,2004年完善总结。 其应用范围包含物体辨识、机器人地图感知与导航、影像缝合、3D...原创 2018-12-06 07:24:37 · 3069 阅读 · 0 评论 -
OpenCV-图像特征提取算法4_Haar
一、Haar-like特征 Haar-like特征最早是由Papageorgiou等应用于人脸表示,Viola和Jones在此基础上,使用3种类型4种形式的特征。Haar特征分为四类:边缘特征、线性特征、中心特征和对角线特征【也可以分成三类:边缘特征、线性特征(包含对角线特征)、点特征(中心特征)】,组合成特征模板。特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素...原创 2018-12-04 20:10:23 · 6079 阅读 · 1 评论 -
OpenCV-图像特征提取算法3_LBP
一,简介LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子;它具有旋转不变性和灰度不变性等显著的优点。它是首先由T. Ojala, M.Pietikäinen, 和 D. Harwood 在1994年提出,用于纹理特征提取。二、原始LBP特征描述及计算方法2.1,算法描述 1)对图像中的所有点,以该点为中心,取3x3...原创 2018-12-01 09:13:27 · 3164 阅读 · 0 评论 -
OpenCV-图像特征提取算法2_HOG
一,算法概述1、主要思想:方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述算法,通过计算和统计图像局部区域的梯度方向直方图来构成特征。在一幅图像中,局部目标的表象和形状能够被梯度或边缘的方向密度分布很好地描述。其本质为:梯度的统计信息,而梯度主要存在于边缘的地方。Hog特征结合SVM分类器已...原创 2018-11-28 22:26:44 · 2166 阅读 · 0 评论 -
OpenCV-图像特征提取算法1_Gabor
首先说一下环境,windows 10 64位系统,OpenCV版本为3.4.7, python 版本为3.6,IDE为 pycharm 目的是实现图像的Gabor特征提取,分三个小程序完成 包含头文件import cv2import numpy as npimport pylab as pl程序一,gaborl滤波器的构建,使用6个尺度分四个方向**### 构建...原创 2018-10-19 18:01:00 · 5987 阅读 · 4 评论 -
Python OpenCV _6直方图均衡化(查找表,OpenCV,Numpy等方法)
此系列源码在我的GitHub里:https://github.com/yeyujujishou19/Python-OpenCV处理原图一,使用查找表来拉伸直方图# coding=utf-8import cv2import numpy as npimage = cv2.imread("D:/test/2.jpg", 0)lut = np.zeros(256, dtype=...原创 2018-11-21 21:09:37 · 1347 阅读 · 0 评论 -
Python OpenCV _5边缘检测(Sobel算子,Laplacian算子,Canny算子)
此系列源码在我的GitHub里:https://github.com/yeyujujishou19/Python-OpenCV一,Sobel算子Sobel算子依然是一种过滤器,只是其是带有方向的。在Python-OpenCV中,使用Sobel的算子的函数原型如下:dst = cv2.Sobel(src, ddepth, dx, dy[, dst[, ksize[, scale[, d...原创 2018-11-21 21:09:55 · 4816 阅读 · 0 评论 -
Python OpenCV _4初级滤波(均值滤波,高斯滤波,中值滤波)
此系列源码在我的GitHub里:https://github.com/yeyujujishou19/Python-OpenCV理论就不说了,直接上代码和效果图原图一,均值滤波代码:# coding=utf-8import cv2img = cv2.imread("D:/lena.jpg", 0)result = cv2.blur(img, (5, 5))cv2...原创 2018-11-21 21:10:04 · 2771 阅读 · 0 评论 -
Python OpenCV _3形态学处理(腐蚀膨胀,开闭运算,以及利用形态学进行边缘角点检测)
此系列源码在我的GitHub里:https://github.com/yeyujujishou19/Python-OpenCV一,原图二,腐蚀和膨胀# coding=utf-8import cv2import numpy as np# opencv里所说的腐蚀,膨胀是针对白色区域,腐蚀是缩小白色区域,膨胀是扩大白色区域img = cv2.imread('D:/2.jp...原创 2018-11-21 21:10:12 · 2048 阅读 · 0 评论 -
Python OpenCV _2直方图计算与显示的四种方式
此系列源码在我的GitHub里:https://github.com/yeyujujishou19/Python-OpenCV原图一,CV2分通道描绘直方图:import cv2import numpy as np#计算并绘制直方图def calcAndDrawHist(image, color): hist = cv2.calcHist([image], ...原创 2018-11-19 22:08:16 · 2204 阅读 · 0 评论 -
Python OpenCV _1基本操作(画图,循环播放图像,鼠标事件,读取中文路径中的图片)
此系列源码在我的GitHub里:https://github.com/yeyujujishou19/Python-OpenCV一,OpenCV的结构A)根据功能和需求的不同,OpenCV中的函数接口大体可以分为如下部分:core 核心模块,主要包含了OpenCV中最基本的结构(矩阵,点线和形状等),以及相关的基础运算/操作。 imgproc 图像处理模块,包含和图像相关...原创 2018-11-15 21:41:07 · 5100 阅读 · 1 评论 -
OpenCV_20图像融合
一,函数:实现两幅图像线性(不同系数下)的融合涉及到Opencv中两个关键的方法:addWeighted()和createTrackbar()addWeighted方法:void addWeighted(InputArray src1, double alpha, InputArray src2,double beta, double gamma, OutputArray dst, ...转载 2019-01-16 21:03:37 · 1316 阅读 · 0 评论 -
OpenCV-19拼图板小游戏
80后可能还对儿时玩过的一种经典木质的拼图板游戏记忆犹新,一般是一种4*4或5*5规格的手持活动板,通过挪动每个小板子的位置,拼出来板子上完整的图像,那时候还没有网吧,手机也还是大哥大的天下,所以这也可以算得上是最早的“手游”了吧…… 今天我们用OpenCV来复现一下儿时的经典!代码:#include "core/core.hpp"#include "h...转载 2019-01-16 21:03:29 · 1183 阅读 · 0 评论 -
OpenCV-18图像白平衡算法
彩色相机内部有三个CCD电子耦合元件,分别用来感受红绿蓝三中颜色的光线,默认情况下,三个颜色的感光电路信号的放大比例是1:1:1的。在理想的拍摄环境下,纯白色的RGB分量按照1:1:1的比例放大之后,得到的是没有偏色的白色,当在非理想的环境光条件下,白色成像出来的效果会偏向环境光的颜色,而不是纯白色。 相机的自动白平衡就是要通过改变RGB感光电路信号的放大比例,让受环...转载 2019-01-16 21:03:20 · 2126 阅读 · 0 评论 -
OpenCV_17马赛克和毛玻璃滤镜效果
一、马赛克效果 马赛克的实现原理是把图像上某个像素点一定范围邻域内的所有点用邻域内随机选取的一个像素点的颜色代替,这样可以模糊细节,但是可以保留大体的轮廓。 以下OpenCV程序实现马赛克效果,通过鼠标左键在图像上划定马赛克的矩形框。代码:#include <opencv2\core\core.hpp>#include <opencv2...转载 2019-01-16 21:03:12 · 1245 阅读 · 0 评论 -
OpenCV-16图像修复
在OpenCV的“photo.hpp”中定义了一个inpaint函数,可以用来实现图像的修复和复原功能,inpaint函数的原型如下:void inpaint( InputArray src, InputArray inpaintMask, OutputArray dst, double inpaintRadius, int flags );第一个参数src,输入的单通道...转载 2019-01-16 21:03:02 · 1107 阅读 · 0 评论 -
OpenCV_15绘制朱利亚(Julia)集合图形
朱利亚集合是一个在复平面上形成分形的点的集合。以法国数学家加斯顿·朱利亚(Gaston Julia)的名字命名。朱利亚集合可以由下式进行反复迭代得到:对于固定的复数c,取某一z值(如z = z0),可以得到序列 这一序列可能反散于无穷大或始终处于某一范围之内并收敛于某一值。我们将使其不扩散的z值的集合称为朱利亚集合。以下使用OpenCV编码绘制Julia集图形:代码:...转载 2019-01-16 21:02:54 · 1138 阅读 · 0 评论 -
OpenCV_14HDR
目前的工作内容没有涉及HDR,但是看到HDR处理完的图像那么的绚丽多彩,光彩照人,五彩斑斓,五光十色,五颜六色,五彩缤纷,五花八门,五体投地....好吧,语文没学好,编不下去了.....就是想自己动手把opencv那个HDR的例子给跑一遍(使用OpenCV版本:3.4.1)! 纸上得来终觉浅,绝知此事要躬行!不得不说看别人的和自己动手做的是不一样的,此篇为了能亲眼看一...原创 2018-12-30 07:55:50 · 1367 阅读 · 0 评论 -
OpenCV_13羽化
一,原图:二,代码://13羽化float mSize = 0.5;void Feathering(){ Mat src = imread("D:\\test\\lena.jpg"); imshow("src", src); int width = src.cols; int heigh = src.rows; int centerX = width >>...转载 2018-12-07 07:25:50 · 1566 阅读 · 0 评论 -
OpenCV_12计算模式(强光)
一,原图:二,代码://12计算模式(强光)void CalculationMode(){ Mat src = imread("D:\\test\\12.jpg"); imshow("src", src); int width = src.cols; int heigh = src.rows; Mat img; src.copyTo(img); Mat dst(i...转载 2018-12-07 07:25:43 · 1450 阅读 · 0 评论 -
OpenCV_11高反差保留
一,原图:二,代码://11高反差保留int R = 5;void HighContrastRetention(){ Mat src = imread("D:\\test\\26.png"); int width = src.cols; int heigh = src.rows; Mat img; src.copyTo(img); Mat avg; //Gauss...转载 2018-12-07 07:25:34 · 1491 阅读 · 0 评论 -
OpenCV_10怀旧色 & 连环画 & 熔铸 & 冰冻
1,原图:2.1,怀旧代码://10怀旧色 & 连环画 & 熔铸 & 冰冻void Nostalgic(){ Mat src = imread("D:\\test\\66.jpg"); int width = src.cols; int heigh = src.rows; RNG rng; Mat img(src.size(), CV_8UC3)...转载 2018-12-06 20:27:05 · 1117 阅读 · 0 评论 -
OpenCV_9扩散(毛玻璃)
一,原图:二,代码://9扩散(毛玻璃)void DiffusionGroundGlass(){ Mat src = imread("D:\\test\\26.png"); int width = src.cols; int heigh = src.rows; RNG rng; Mat img(src.size(), CV_8UC3); for (int y = 1;...转载 2018-12-06 20:26:54 · 1078 阅读 · 0 评论 -
OpenCV_8素描
一,原图:二,代码://8素描void Sketch(){ Mat src = imread("D:\\test\\26.png", 1); int width = src.cols; int heigh = src.rows; Mat gray0, gray1; //去色 cvtColor(src, gray0, CV_BGR2GRAY); //反色 addWe...转载 2018-12-06 20:26:38 · 1092 阅读 · 0 评论 -
OpenCV_7漩涡
一,原图:二,代码://7漩涡template<typename T> T sqr(T x) { return x*x; }double Pi = 3.14;double Para = 8;void Swirl(){ Mat src = imread("D:\\test\\26.png"); int heigh = src.rows; int width...转载 2018-12-06 20:26:31 · 1184 阅读 · 0 评论 -
OpenCV_6风
一,原图:二,代码://6,风int num0 = 10;// num:风线密度int num1 = 20;// num1:风线长度void Wind(){ Mat src = imread("D:\\test\\26.png"); Mat src1u[3]; split(src, src1u); int width = src.cols; int heigh ...转载 2018-12-06 20:26:23 · 923 阅读 · 0 评论 -
OpenCV_5径向模糊:缩放&旋转
一,原图:二,缩放代码&结果://5,径向模糊:缩放&旋转int num = 10;//num:均值力度;//缩放void RadialBlurZoom(){ Mat src = imread("D:\\test\\26.png"); Mat src1u[3]; split(src, src1u); int width = src.cols; i...转载 2018-12-06 20:26:12 · 1061 阅读 · 0 评论 -
OpenCV_4波浪正弦效果
一,原图:二,代码://4,波浪:正弦double angle;int deltaI = 10; //波浪周期;int A = 10; //波浪振幅;Mat src, img;static void onTrackbar(int, void*){ int width = src.cols; int heigh = src.rows; angle = 0.0; ...转载 2018-12-06 20:26:03 · 1469 阅读 · 0 评论 -
OpenCV_3颜色变幻效果
一,原图:二,代码://3,颜色变换void ColorTransformation(){ Mat src = imread("D:\\test\\26.png"); int width = src.cols; int heigh = src.rows; Mat gray; Mat imgColor[12]; Mat display(heigh * 3, width ...转载 2018-12-06 20:25:55 · 1028 阅读 · 0 评论 -
OpenCV_2扩张和挤压效果
一,原图:二,代码://扩张挤压void ExpansionExtrusion(){ Mat src = imread("D:\\test\\26.png"); int width = src.cols; int heigh = src.rows; Point center(width / 2, heigh / 2); Mat img1(src.size(), CV_8...转载 2018-12-06 20:25:45 · 1228 阅读 · 0 评论 -
OpenCV_1浮雕和雕刻效果
一,原图:二,代码://雕刻&浮雕void Emboss(){ Mat src = imread("D:\\test\\26.png"); Mat img0(src.size(), CV_8UC3); Mat img1(src.size(), CV_8UC3); for (int y = 1; y<src.rows - 1; y++) { uchar ...转载 2018-12-06 20:25:36 · 1336 阅读 · 0 评论