自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

云中寻雾的博客

Keep reading, keep writing, keep coding,keep thinking,keep trying

  • 博客(39)
  • 资源 (6)
  • 收藏
  • 关注

原创 python+opencv实现基于傅里叶变换的旋转文本校正

在学习傅里叶变换的过程中,我发现了JohnHany大神的这篇博客:opencv实现基于傅里叶变换的旋转文本校正,所以在学习完傅里叶变换以后,我迫不及待的想要去尝试一下,在此记录一下。在搜索的过程中,我发现网上并没有用python实现的,希望看了这篇文章,能对学习python的小伙伴有帮助。转载请注明出处,原创不易 ---zyh 2018-5-31傅里叶变换的原理,可以看下我的上一篇博客:傅里叶变换...

2018-05-31 22:35:21 6941 2

原创 OpenCV学习笔记-傅里叶变换

速度话不多说,先推荐一下大佬的文章:傅里叶变换详解一、傅里叶变换傅里叶变换可以将一副图片分解为正弦和余弦两个分量,换言之,它可以将一幅图像从空间域(spatial domain)转换为频域(frequency domain)。这种变换的思想是任何函数可以很精确的接近无穷个sin()函数和cos()函数的和。我们来梳理一下概念:空间域一般情况下,空间域的图像是f(x, y) = 灰度级(0-255)...

2018-05-31 16:16:41 8649 1

原创 python+OpenCV+TensorFlow实现人脸识别

一个简单的小demo,不太会用GitHub,所以代码直接贴上来。第一步,获取数据训练集,可以在网上找图集,或者自己生成一些,下面是生成图片的代码,

2018-05-30 16:47:21 16775 29

原创 OpenCV学习笔记-图像分割之GrabCut

一、原理GrabCut是graph cut的改进版,是迭代的graph cut。该算法利用了图像中的纹理(颜色)信息和边界(反差)信息,只要小量的用户交互操作即可得到比较好的分割效果。计算原理参考:点击打开链接,点击打开链接在整个过程发什么了什么呢?1、用户输入一个矩形。矩形外的所有区域肯定是背景。矩形框内的东西是未知的。同样用户确定前景和背景的任何操作都不会被程序改变。2、计算机会对我们的输入图...

2018-05-30 15:32:33 6287 1

原创 OpenCV学习笔记-人脸检测

一、人脸检测方法在OpenCV中主要使用了两种特征(即两种方法)进行人脸检测,Harr特征和LBP特征。具体的介绍参考:图像特征提取三大法宝:HOG特征,LBP特征,Haar特征在OpenCV中,使用已经训练好的XML格式的分类器进行人脸检测。在OpenCV-master的data文件夹下。OpenCV-master的下载资源在连接:OpenCV-master上图中文件夹的名字‘harrcasca...

2018-05-30 13:00:35 598

原创 OpenCV学习笔记-分水岭算法

分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓,封闭性是分水岭算法的一个重要特征。其他图像分割方法,如阈值,边缘检测等都不会考虑像素在空间关系上的相似性和封闭性这一概念,彼此像素间互相独立,没有统一性。分水岭算法较其他分割方法更具有思想性,更符合人眼对图像的印象。任意的灰度图像...

2018-05-29 19:53:29 3706 2

原创 OpenCV学习笔记-顶帽、黑帽、形态学梯度

一、顶帽又称礼帽,是原始图像与进行开运算之后得到的图像的差。因为开运算到来的结果是放大了裂痕或者局部低亮度的区域,因此,从原图中减去运算后的图,得到的效果图突出了比原图轮廓周围的区域更明亮的区域,且这一操作和选择的核的大小相关。顶帽运算往往用来分离比邻近点亮一些的斑块。当一幅图像具有大幅的背景的时候,而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取。二、黑帽是原始图像与进行闭运算以后得到...

2018-05-29 15:40:37 13690

原创 OpenCV学习笔记-开闭操作

开操作和闭操作都是基于膨胀和腐蚀操作组合形成的。先腐蚀再膨胀就是开操作,先膨胀再腐蚀就是闭操作了。用开操作可以去除噪声,也可以提取水平或者垂直的直线。这里我们提一个函数getStructuringElement(),它用来返回指定形状和尺寸的结构元素。getStructuringElement(shape, ksize, anchor...

2018-05-28 21:37:46 7321

原创 lintcode练习-14.二分查找

class Solution:    """    @param nums: The integer array.    @param target: Target to find.    @return: The first position of target. Position starts from 0.    """    def binarySearch(self, nums, tar...

2018-05-28 17:50:49 233

原创 OpenCV学习笔记-腐蚀和膨胀

形态学操作是根据图像形状进行的简单操作。一般情况下对二值化图像进行的操作。一、腐蚀这个操作会把前景物体的边界腐蚀掉(但是前景仍然是白色)。卷积核沿着图像滑动,如果与卷积核对应的原图像的所有像素值都是1,那么中心元素就保持原来的像素值,否则就变为0。作用:1、前景物体会变小,整幅图像的白色区域会减少,这对于去除白噪声很有用。2、平滑对象边缘3、弱化或分割图像之间的半岛型连接代码:def erode_...

2018-05-28 12:13:27 7646

原创 OpenCV学习笔记-轮廓的层次结构

一、什么是层次结构通常我们使用函数cv.findContours()在图片中查找一个对象。有时对象可能位于不同的位置。还有一些情况,一个形状在另外一个形状的内部。这种情况下我们称外部的形状为父,内部的形状为子。按照这种方式分类,一副图像中的所有轮廓之间就建立父子关系。让我们来看一个简单的例子:在这个图中,我给这几个形状编号为0-5,2和2a分别代表最外边矩形...

2018-05-27 20:57:07 3108 1

原创 OpenCV学习笔记-形状匹配

函数cv.matchShape()可以帮我们比较两个形状或轮廓的相似度。如果返回值越小,匹配越好。它是根据Hu矩来计算的。Hu矩是归一化中心矩的线性组合,之所以这样做是为了能够获取代表图像的某个特征的矩函数。这些矩函数对某些变化如缩放,旋转,镜像映射(除了h1)具有不变形。具体代码:def matchshape_demo(): #性状匹配 img1 = cv.imread('img...

2018-05-27 18:38:41 9712

原创 OpenCV学习笔记-凸包和凸缺陷

一、凸包凸包和轮廓近似相似,但不同,虽然有些情况下它们给出的结果是一样的。函数cv.convexHull()可以用来检测一个曲线是否具有凸性缺陷,并能纠正缺陷。一般来说,凸性曲线总是凸出来的,至少是平的。如果有地方凹进去了就被叫做凸性缺陷。convexHull(points, hull=None, clockwise=None, returnPoints=None)...

2018-05-27 18:29:04 8479

原创 OpenCV学习笔记-轮廓性质

这篇文章我们学习提取一些经常使用的对象特征,不过我并不知道有什么用,如果哪位在生产中用到这些特征,请在评论里说下用处,谢谢大家,一起进步。涉及的特征有:1、边界矩形的宽高比2、轮廓面积与边界矩形面积的比3、轮廓面积与凸包面积的比4、与轮廓面积相等的圆形的直径5、方向6、掩模和像素点7、最大值和最小值以及它们的位置8、平均颜色和平均灰度9、极点...

2018-05-27 17:05:00 460

原创 OpenCV学习笔记-直线拟合

Hough 变换可以提取图像中的直线。但是提取的直线的精度不高。而很多场合下,我们需要精确的估计直线的参数,这时就需要进行直线拟合。直线拟合的方法很多,比如一元线性回归就是一种最简单的直线拟合方法。但是这种方法不适合用于提取图像中的直线。因为这种算法假设每个数据点的X 坐标是准确的,Y 坐标是带有高斯噪声的。可实际上,图像中的每个数据点的XY 坐标都是带有噪声的。下面就来讲讲适...

2018-05-27 16:05:03 3372

原创 sklearn-数据集划分

一般我们划分数据集都是用sklearn.model_selection里的函数,当然也可以人工划分一、train_test_split最常用的是train_test_split()函数,用来随机划分样本数据为训练集和测试集。优点:随机客观的划分数据,减少人为因素使用:x_train, x_test,  y_train, y_test = train_test_split(data, label, ...

2018-05-27 12:17:21 8560

原创 OpenCV学习笔记-轮廓特征

查找轮廓的不同特征,例如面积,周长,重心,边界框等矩:cv.moments()轮廓面积:cv.contourArea()轮廓周长:cv.arcLength()轮廓近似:cv.approxPolyDp()边界矩形:cv.boundingRect()最小外接矩形: cv.minAreaRect() cv.boxPoints()最小外接圆:cv.minEnclosingCircle()椭圆拟合:cv.e...

2018-05-26 17:57:34 1044

原创 OpenCV学习笔记-边界矩形

有两类边界矩形,直边界矩形和旋转的边界矩形。直边界矩形:一个直矩形(就是没有旋转的矩形)。它不会考虑对象是否旋转。所以边界矩形的面积不是最小的。使用函数cv.boundingRect()查找得到。(x, y)为矩形左上角的坐标,(w, h)是矩形的宽和高。x, y, w, h = cv.boundingRect(contour)img = cv.rectangle...

2018-05-26 11:04:55 2741

原创 OpenCV学习笔记-初识轮廓

一、什么是轮廓轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 1、为了更加准确,要使用二值化图像。在寻找轮廓之前,在进行阈值化处理或者canny边界检测。 2、查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图像的话,你应该将原始图像存储到其他变量中。 3、在OpenC...

2018-05-25 21:12:54 548

原创 模型评估小结

1、通常k-折交叉验证是评估机器学习模型的黄金准则(K= 3 5 10)2、当类别数目较多,或者每类样本数目不均衡时,采用stratified交叉验证3、当训练数据集很大,train/test split带来的模型性能评估偏差很小,或者模型训练很慢时,采用train/test split4、对回归问题,采用 10-fold cross -validation ;对分类,采用stratified 1...

2018-05-25 11:21:56 264

原创 XGBoost学习笔记-基本概念

Gradient Boosting Machines1、Machines:机器学习模型 - 对数据的产生规律建模2、Boosting Machines - 弱学习器组合成强学习器/模型3、Gradient Boosting Machines - 根据梯度下降方式组合弱学习器Machines:1、Machines:机器学习模型,建模数据产生规律 - 最小化目标函数-2、目标函数通常包含两个部分a、损...

2018-05-25 11:17:06 411

原创 OpenCV学习笔记-霍夫变换圆检测

霍夫圆变换的基本原理和霍夫线变换类似,只是点对应的二维极径极角空间被三维的圆心点x, y还有半径r空间取代。对直线来说,一条直线能由参数极径极角(r, θ)表示。而对圆来说,我们需要三个参数来表示一个圆,由于比直线检测多出一个维度,使得标准的霍夫圆检测需要大量的内存且速度比较慢。出于对运算效率的考虑,OpenCV实现的霍夫圆检测是一个比标准霍夫圆检测更为灵活的检测方法:...

2018-05-24 21:11:03 3880

原创 OpenCV学习笔记-霍夫变换直线检测

霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。霍夫变换于1962年由Paul Hough 首次提出[53],后于1972年由Richard Duda和Peter Hart推广使用[54],经典霍夫变换用来检测图像中的直线,后来霍...

2018-05-24 18:01:05 3512

原创 OpenCV学习笔记-canny边缘检测

一、原理Canny边缘检测算法是 John F.Canny 与1986年开发出来的一个多级边缘检测算法,也被很多人认为是边缘检测的最优算法,最优边缘检测的三个主要评价标准是:低错误率: 标识出尽可能多的实际边缘,同时尽可能的减少噪声产生的误报。高定位性: 标识出的边缘要与图像中的实际边缘尽可能接近。最小响应: 图像中的边缘只能标识一次,同时图像噪声不应...

2018-05-17 21:32:45 468

原创 OpenCV学习笔记-图像梯度

梯度简单来说就是求导,在图像上表现出来的就是提取图像的边缘(无论是横向的、纵向的、斜方向的等等),所需要的无非就是一个核模板。模板的不同结果也不同,所以能够看到,全部的这些个算子函数,归根结底都能够用cv.filter2D()来表示,不同的方法给予不同的核模板,然后演化为不同的算子而已。一、sobel算子和scharr算子sobel算子是高斯平滑与微分操作的结合体,所以其...

2018-05-17 17:40:27 5495

原创 lintcode练习-145.大小写转换

描述将一个字符由小写字母转换为大写字母样例a -> Ab -> Bclass Solution:    """    @param character: a character    @return: a character    """    def lowercaseToUppercase(self, character):        # write your code her...

2018-05-17 15:15:15 1032

原创 lintcode练习-37.反转一个3位整数

描述:反转一个只有3位数的整数。你可以假设输入一定是一个只有三位数的整数,这个整数大于等于100,小于1000。样例123 反转之后是 321。900 反转之后是 9。注意这个题需要考虑到负数的出现,所以要特别处理一下。第一种方法:class Solution: """ @param number: A 3-digit number. @return: Reversed n...

2018-05-17 14:57:02 387

原创 OpenCV学习笔记-图像金字塔

一、关于图像金字塔以多个分辨率来表示图像的一种有效且概念简单的结构是图像金字塔,一个图像金字塔是一系列以金子塔形状排列的、分辨率逐渐降低的图像集合。——《数字图像处理》。图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列以金字塔性质排列的分辨率逐步降低,且来源同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。金...

2018-05-17 11:43:49 641

原创 OpenCV学习笔记-超大图像二值化

在处理的时候,我们可能会碰到一些超大图像,如果直接处理会因为图像的问题造成一些细节被忽略,我们对图像进行切分,分块处理。同上一篇文章一样,图像二值化有全局和区域的分别,先讨论全局处理的方式:def big_image_binary(img):cw = 256 # 分块的步长 ch = 256 h, w = img.sha...

2018-05-16 21:14:03 898

原创 OpenCV学习笔记-图像二值化

图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。图像二值化的类型有以下几种:0: THRESH_BINARY 当前点值大于阈值时,取Maxval,也就是第四个参数,下面再不说明,否则设置为01: THRESH_BINAR...

2018-05-15 21:17:09 3374

原创 OpenCV学习笔记-模板匹配

模板匹配模板匹配就是在整个 图像区域发现与给定子图像匹配的小块区域所以模板匹配首先需要一个模板图像T(给定的子图像)另外需要一个待检测的图像S(源图像)工作方法:在待检测图像上,从左到右,从上到下,计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大匹配算法:TM_SQDIFF: 使用平方差进行匹配,因此最...

2018-05-15 20:05:01 823

原创 OpenCV学习笔记-直方图反向投影

直方图反向投影:反向投影可以用来做图像分割,寻找感兴趣区间。它会输出与输入图像大小相同的图像,每一个像素值代表了输入图像上对应点属于目标对象的概率,简言之,输出图像中像素值越高的点越可能代表想要查找的目标。直方图投影经常与camshift(追踪算法)一起使用。算法实现的方法:首先要为包含我们感兴趣区域的图像建立直方图(一个硬币)。被查找的对象最好是占据整个图像(一堆硬币)...

2018-05-15 11:17:34 422

原创 OpenCV学习笔记-直方图应用

直方图均衡化 就是调整图像的对比度,让图像显示更清晰,一般有两种方法:全局调整和局部自适应,局部自适应的数值一般是2**n直方图均衡化都是基于灰度图#全局调整def equalizeHist_demo(img): gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY) dst = cv.equalizeHist(gray) cv.imshow(...

2018-05-14 20:07:45 708 3

原创 OpenCV学习笔记-图像直方图

import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltdef plot_dome(img): plt.hist(img.ravel(),256,[0,256]) # ravel() 统计所有数据出现的频次 plt.title('histogram') plt.show()def...

2018-05-14 17:13:42 224

原创 OpenCV学习笔记-边缘保留滤波EPF

进行边缘保留滤波通常用到两个方法:1、高斯双边滤波具体代码:#高斯双边滤波def bilateral_demo(img): dst = cv.bilateralFilter(src=img,d=0,sigmaColor=100,sigmaSpace=15) ''' 高斯双边模糊,相当于磨皮操作 src:原图像 d: 像素的领域直径,可有sigmaColor...

2018-05-13 19:28:07 2072

原创 OpenCV学习笔记 -模糊操作

模糊操作的作用是在图片时减低噪声。模糊操作有均值模糊,中值模糊,高斯模糊和自定义模糊模糊操作的基本原理:1、基于离散卷积2、定义好每一个卷积核3、不同的卷积核得到不同的卷积效果4、模糊是卷积的一种表象均值滤波:用卷积核中的全体像素的平均值来代替原来像素值中值滤波:将卷积核中的全体像素从小到大排序,保留中值高斯滤波:高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他...

2018-05-13 15:57:45 739

原创 OpenCV学习笔记-ROI和泛洪填充

ROI:ROI区域即一张图上你感兴趣的区域,可以用数组切片的方式选出图像的特定区域,对ROI区域的操作,也会反应在原图上。具体代码:face = img[200:400,200:400] #利用numpy数组访问特定区域gray = cv.cvtColor(face,cv.COLOR_BGR2GRAY) #转化为单通道灰度图backface = cv.cvtColor(gray,cv.COLO...

2018-05-13 10:06:50 1409

原创 OpenCV学习笔记-像素运算

对两个大小相等的图像,可以进行像素的运算,可以得到意想不到的结果原始的图片:原始图像2:我们先读取图像,然后依次进行加减乘除,就可以得到不同的效果,比如进行加操作:def add_demo(img1,img2): add = cv.add(img1,img2) cv.imshow('add_dome',add)得到图像为:最好看的是减操作:其他的可以试验一下,我感觉用这个来设计Lo...

2018-05-12 17:36:08 556

原创 OpenCV学习笔记-物体追踪

读取图像,获得BGR格式的像素值,然后转换成HSV格式,再利用inRange函数进行颜色分离,标记出来HSV的色彩取值范围:H: Hue通道,色调,颜色种类S: Saturation ,饱和度,颜色浓淡V:Value ,明度, 颜色明亮度inRange函数:inRange(src, lowerb, upperb, dst=None)...

2018-05-12 16:09:48 1189

Thunderfighter.exe

雷霆战机小游戏,可直接运行。下载的是一个压缩包,打开后会自动解压,并在桌面创建一个快捷方式,点击快捷方式就可以打开了。支持一个初始版的小游戏,有点简陋,以后会慢慢改进的>_<

2020-06-07

fashion-mnist数据集和论文

fashion-mnist数据集和论文

2018-06-07

MeanShift实现代码和视频

MeanShift算法实现代码,可以运行,里面还有测试的汽车视频

2018-06-06

python+opencv实现全景拼接

python+opencv实现图像的全景拼接,里面有中文注释,和附带的图像

2018-06-06

python+OpenCV+TensorFlow人脸识别

python+OpenCV+TensorFlow实现人脸识别,包含人脸检测和图像处理,

2018-05-30

OpenCV-master

OpenCV-master,在GitHub上有,不过下载速度非常慢,所以我把它上传到CSDN OpenCV-master,在GitHub上有,不过下载速度非常慢,所以我把它上传到CSDN OpenCV-master,在GitHub上有,不过下载速度非常慢,所以我把它上传到CSDN

2018-05-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除