OpenCV
文章平均质量分 91
海底捞淡水鱼
这个作者很懒,什么都没留下…
展开
-
OpenCV-Python 笔记(八)理解特征、哈里斯角检测,Shi-tomas拐角检测,SIFT尺度不换特征变换
理解特征图片的特征,包括但不限于直线边缘,拐角,曲线,色块等等,它们一同组成了图片。通过对特征下分析,我们可以在图片中对特定特征进行查找,匹配等。如上图,方框1特征上下移动不会产生变化,这意味着它不唯一;方框2是形状的边缘,左右移动不会有变化;方框3是形状的边缘,它不能移动,具有唯一性,所以我们认为它是一个良好的特征,方便查找和匹配,对齐。哈里斯角检测原理哈里斯角点检测,如上图所示,当方框在画面中上下左右移动(过滤器),如果方框内没变化,则表示该区域既不是角也不是边缘。如果方框在一个方向上移动原创 2020-08-18 00:07:28 · 847 阅读 · 0 评论 -
OpenCV-Python 笔记(七)霍夫变换,图像分割,GrabCut算法
霍夫线变换理论霍夫变换应用于检测任何形状,即使有稍微破损或者变形,都可以检测出来。这里我们将它作用在直线上。根据直线方程:y=ax+b。从原点做直线的垂线,和x正方向形成θ夹角,原点到直线的距离为ρ。当θ小于180°时,认为它是正的,大于180°时,θ是负的。这样就可以把原点到直线的距离用参数的形式表示出来:ρ=xcosθ+ysinθ。所以任意一条直线,都可以用ρ和θ表示。当直线平行于x轴,θ值为0°,垂直于x轴,θ为90°。我们可以创建一个二维数组,它的列数表示θ的值,比如180列,每列表示1原创 2020-08-11 15:36:59 · 1294 阅读 · 0 评论 -
OpenCV-Python 笔记(六)傅里叶变换、模板匹配
傅里叶变换理论分析傅里叶变换广泛运用于信号分析领域,它分析滤波器的频率。在图像分析中国,也可以使用2D傅里叶变换DFT和快速傅里叶变换FFT,它们已经在信号分析方面展现出了非常优秀的特性。对于信号来说,频率高的地方我们叫做高频信号,也就是变化快,频率低的地方叫做低频信号,也就是变化不大的地方。所以在图片中,边缘和噪点变化快,属于高频。根据这个特性,可以获得图像的边缘。Numpy中的傅里叶变换img=cv.imread("text.jpg",0)f=np.fft.fft2(img)fshift=n原创 2020-08-08 21:49:28 · 1141 阅读 · 0 评论 -
OpenCV-Python 笔记(五)直方图
一、直方图:查找、绘制和分析直方图可以反映一张图片中,每个范围内像素值的多少。比如上图中中间调的像素比较集中,也就是说,(我们不看图片都知道)这张图片的像素,多数集中在这个值左右。在PS,LR等等修图软件里面,提供直方图,可以让创作者清楚地知道过曝面积和死黑面积大概有多少。同样在相机里,也有直方图,优秀的摄影师,可以根据直方图来调节相机参数,使得照片曝光处于最佳状态哈哈哈。(广告位留给自己:有兴趣的朋友,欢迎到我的pott:Mr_Zhou,ID:2100190切磋交流,嘻嘻)寻找直方图OpenCV:原创 2020-08-07 14:32:04 · 2389 阅读 · 0 评论 -
OpenCV-Python 笔记(四)Canny边缘检测、图像金字塔
Canny边缘检测因为边缘检测,容易受到噪声的干扰,所以第一步就是降噪。使用 5 X 5 的高斯滤波器进行过滤。非极大值抑制:使用Sobel滤波器,只有在检测到边缘的时候,才会保留边缘像素,否则,就全部置零。(深度学习CNN基础部分有关内容)磁滞阈值:该阶段确定哪些边缘全部是真正的边缘,哪些不是。为此,我们需要两个阈值minVal 和maxVal。强度梯度大于maxVal 的任何边缘必定是边缘,而小于minVal 的那些边缘必定是非边缘,因此将其丢弃。介于这两个阈值之间的对象根据其连通性被分类为边缘或原创 2020-08-06 00:03:24 · 277 阅读 · 0 评论 -
Python Kivy(App开发)调用摄像头的样例
样例思路简单来说,kivy只是提供了可以让用户和手机进行交互的框架和接口,我们只要把框架搭好,内部算法的参数传递到框架相应的接口,就能实现交互。所以实际上,底层算法并不会改变,改变的是输入输出方式。这里,我用一个小样例调用OpenCV来说明这个问题,本质上的东西不会变,只是给它穿了件外衣。编译器:PycharmOpenCV版本:4.3Kivy版本:1.11效果展示代码解释、Kivy-Python相互访问OpenCV调用摄像头函数def video(): cap=cv2.Vide原创 2020-08-05 23:02:01 · 5963 阅读 · 5 评论 -
OpenCV-Python Canny边缘检测直观感受窗口界面实现
一、理论支持因为边缘检测,容易受到噪声的干扰,所以第一步就是降噪。一般使用 5 X 5 的高斯滤波器进行过滤。非极大值抑制:使用Sobel滤波器,只有在检测到边缘的时候,才会保留边缘像素,否则,就全部置零。(深度学习CNN基础深度学习边缘检测篇部分有关内容)磁滞阈值:该阶段确定哪些边缘全部是真正的边缘,哪些不是。为此,我们需要两个阈值minVal 和maxVal。强度梯度大于maxVal 的任何边缘必定是边缘,而小于minVal 的那些边缘必定是非边缘,因此将其丢弃。介于这两个阈值之间的对象根据其连原创 2020-08-03 22:05:36 · 311 阅读 · 0 评论 -
OpenCV-Python 笔记(三)形态学转换,图像梯度
形态学转换侵蚀侵蚀的原理是,一个卷积核,当它在图片上滑动的时候,只有在卷积核内所有像素都是1时,才被认为是1,如果有一个是0,则全部像素被替换成0。直观感受就是,黑色会向外扩散,从而导致黑色区域的边缘向外扩展。img=cv.imread("text.jpg")#创建一个卷积核kernel=np.ones((5,5),np.uint8)#侵蚀erosion=cv.erode(img,kernel,iterations=1)plt.subplot(121),plt.imshow(img),p原创 2020-08-02 13:14:00 · 410 阅读 · 0 评论 -
OpenCV-Python 笔记(二)颜色空间,对象跟踪,几何变换,阈值,平滑,模糊
改变颜色空间对于颜色转换,我们使用cv函数。cvtColor(input_image, flag),其中flag决定转换的类型。在HSV中比在BGR颜色空间中更容易表示颜色。#打印所有cvtColor的flagflags=[i for i in dir(cv) if i.startswith("COLOR_")]print(flags)注意:HSV中,色相取值范围0-179,饱和度和明度的值都是0-255对象跟踪cap=cv.VideoCapture(0)while(1): #获取帧原创 2020-08-01 23:32:19 · 366 阅读 · 0 评论 -
OpenCV-Python 笔记(一)GUI及核心操作
plt.imshow(img,cmap="gray",interpolation="bicubic")matplotlab 读取图片颜色空间为 **BGR**img=cv.imread("gh.jpg",1)cv.imshow("gh.jpg",img)openCV读取图片颜色空间为**RGB**matplotlabopenCV使用openCV语句转换img=cv.cvtColor(img,cv.COLOR_BGR2RGB)...原创 2020-08-01 17:30:44 · 391 阅读 · 0 评论 -
OpenCV基础语句实践 画板制作
OpenCV提供了很多简单的语句,实现复杂的功能,根据颜色和鼠标交互的基础语句,我们可以建立一个简单的画板。尽管它简单,但是制作的框架步骤不能少哈哈哈。如果您感兴趣,可以按照我的步骤写一下,或者直接复制总程序中的代码运行。一、功能明确画板功能,便于后续编写程序。目标功能:可调节颜色,有画图区域,可以进行鼠标输入。二、框架搭建主要有两步:第一步:建立颜色选区,可以用OpenCV的滑动条语句cv.createTrackbar设置。cv.createTrackbar一共拥有五个参数设置,它们是(Tr原创 2020-08-01 14:25:59 · 346 阅读 · 0 评论