opencv
Eragonl
努力要花力气,丧却很容易,但没有一只羱羊最后会被渴死。
展开
-
依靠视觉来计算距离?有点意思
震惊!依靠单目来进行简单的距离测量,原理竟然是...原创 2020-04-23 17:54:54 · 4493 阅读 · 0 评论 -
啥?文字识别那么简单就能实现?
5行代码,轻松解决。原创 2020-03-19 18:35:38 · 3533 阅读 · 3 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---运用五:物体运动跟踪
教程:博主之前写了25节关于使用OpenCV的教程,欢迎大家阅读:(Python)从零开始,简单快速学机器仿人视觉Opencv—第一节:OpenCV的图像读取显示及保存(Python)从零开始,简单快速学机器仿人视觉Opencv—第二节:OpenCV的视频操作 (Python)从零开始,简单快速学机器仿人视觉Opencv—第三节:OpenCV中的绘图函数(Python)从零开始,简单快速...原创 2020-03-10 15:37:52 · 4555 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---运用四:图像损痕修复
教程:博主之前写了24节关于使用OpenCV的教程,欢迎大家阅读:(Python)从零开始,简单快速学机器仿人视觉Opencv—第一节:OpenCV的图像读取显示及保存(Python)从零开始,简单快速学机器仿人视觉Opencv—第二节:OpenCV的视频操作 (Python)从零开始,简单快速学机器仿人视觉Opencv—第三节:OpenCV中的绘图函数(Python)从零开始,简单快速...原创 2020-02-09 15:16:09 · 6347 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---运用三:物体运动跟踪
教程:博主之前写了22节关于使用OpenCV的教程,欢迎大家阅读:(Python)从零开始,简单快速学机器仿人视觉Opencv—第一节:OpenCV的图像读取显示及保存(Python)从零开始,简单快速学机器仿人视觉Opencv—第二节:OpenCV的视频操作 (Python)从零开始,简单快速学机器仿人视觉Opencv—第三节:OpenCV中的绘图函数(Python)从零开始,简单快速...原创 2020-02-04 09:59:43 · 9418 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---运用二:物体检测
import cv2import numpy as np#生成sift检测和提取器detect=cv2.xfeatures2d.SIFT_create()extract=cv2.xfeatures2d.SIFT_create()#生成flann匹配器flann_params=dict(algorithm=1,trees=5)flann=cv2.FlannBasedMatcher(...原创 2020-01-30 15:36:06 · 8901 阅读 · 2 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---运用一:快速截取图像中指定单个物体
教程:博主之前写了21节关于使用Opencv的教程,欢迎大家阅读:(Python)从零开始,简单快速学机器仿人视觉Opencv—第一节:OpenCV的图像读取显示及保存(Python)从零开始,简单快速学机器仿人视觉Opencv—第二节:OpenCV的视频操作 (Python)从零开始,简单快速学机器仿人视觉Opencv—第三节:OpenCV中的绘图函数(Python)从零开始,简单快速...原创 2019-11-25 18:50:49 · 5973 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第二十节:轮廓的层次结构
一般情况下我们称外部的形状为父,内部的形状为子。按照这种方式分类,一幅图像中的所有轮廓之间就建立父子关系。这样我们就可以确定一个轮廓与其他轮廓是怎样连接的,它是不是某个轮廓的子轮廓,或者是父轮廓。这种关系就成为组织结构。 在这幅图像中,我给这几个形状编号为0-5。2和2a分别代表最外边矩形 的外轮廓内状语从句:轮廓。 在这里边轮廓0,1,2在外部或最外边。我们可以称他们为(组织结...原创 2019-11-18 16:42:30 · 5117 阅读 · 2 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第十九节:关于轮廓的函数
1 凸缺陷 找到凸缺陷hull=cv2.convexHull(cnt,returnPoints=False)defects=cv2.convexityDefects(cnt,hull) 它会返回一个数组,其中每一行包含的值是【起点,终点,最远的点,到最远点的近似距离】import cv2import numpy as npimg=cv2.imread('0023.jpg')i...原创 2019-11-12 11:17:00 · 5131 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第十八节:轮廓的性质
1.1长宽比边界矩形的宽高比x,y,w,h=cv2.boundingRect(cnt)aspect_ratio = float(w)/h2.Extent轮廓面积与边界矩形面积的比area=cv2.contourArea(cnt)x,y,w,h=cv2.boundingRect(cnt)rect_area=w*hextent=float(area)/rect_area3.So...原创 2019-11-10 08:53:53 · 5112 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第十七节:轮廓详解与运用
什么是轮廓 轮廓可以简单认为成连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 ·为了准确,要使用二值化图像。需要进行阀值化处理或者Canny边界检测。 ·查找轮廓的函数会修改原始图像。如果之后想继续使用原始图像,应该将原始图像储存到其他变量中。 ·在OpenCV中,查找轮廓就像在黑色背景中超白色物体。你应该记住,要找的物体应该...原创 2019-11-09 09:15:51 · 5319 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第十六节:图像金字塔
1.原理 一般情况下,我们要处理是一副具有固定分辨率的图像。但是特别情况下我们需要对同一个图像的不同分辨率的子图像进行处理,如查找图像中的某个目标,如人脸,我们不知道目标在图像中的尺寸大小。这种情况下,我们需要创建一组图像,这些图像是具有不同分辨率的原始图像。我们把这组图像叫做图像金字塔。就是同一图像的不同分辨率的子图集合。我们把最大的图像放在底部,最小的放在顶部,看起来就像一座金字塔。 ...原创 2019-11-02 14:53:26 · 4759 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第十五节:Canny边缘检测
首先:Canny边缘检测:cv2.Canny()任务1:原理步骤1.1 噪音去除由于边缘检测很容易受到噪音影响,所以第一步是使用5x5的高斯滤波器去除噪音。步骤1.2 计算图像梯度对平滑后的图像使用Sobel算子计算水平方向和竖直方向的一阶导数(图像梯度)(Gx和Gy)。根据得到的这两幅梯度图找到边界的梯度和方向。公式如下:梯度的方向一般总是与边界垂直。梯度方向被归为四类:垂直,水...原创 2019-10-24 09:18:37 · 4585 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第十四节:图像梯度
事先说明图像梯度原理:简单来说就是求导OpenCV提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel,Scharr和Laplacian。Sobel和Scharr是求一阶或二阶导数。Scharr是对Sobel(使用小的卷积核求解梯度角度时)的优化,Laplacian是求二阶导数。任务1:Sobel算子和Scharr算子 Sobel算子是高斯平滑与微分操作的结合体,它的抗噪音能力很好。...原创 2019-10-23 17:34:16 · 4522 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第十三节:形态学转换
涉及函数cv2.erode(),cv2.dilate(),cv2.morphotogyEx()首先 首先我们看下原始图像:形态学转换原理: 一般情况下对二值化图像进行操作。需要两个参数,一个是原始图像,第二个被称为结构化元素或者核(kernel),它是用来决定操作的性质的。基本操作为腐蚀和膨胀,他们的变体构成了开运算,闭运算以及梯度等。任务1:腐蚀 把前景物体的边界腐蚀掉,但...原创 2019-10-16 16:00:44 · 4542 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第二节:OpenCV的视频操作
准备工作使用库: numpy opencv任务1 用摄像头捕获视频cv2.VideoCapture() :0为默认计算机默认摄像头,1可以更换来源;import numpy as npimport cv2cap = cv2.VideoCapture(0)while(True): #capture frame-by-frame ret , frame = cap.r...原创 2019-09-21 20:34:57 · 3292 阅读 · 2 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第三节:OpenCV中的绘图函数
准备使用工具:Python3.5,使用库: numpy opencv涉及函数 涉及的函数:cv2.line() , cv2.cicle() , cv2.rectangle() , cv2.ellipse() , cv2.putText()等参数说明需要设置的参数: img 你想要绘制的图形的那副图像 color 形状的颜色,以RGB为例,需要传入的元组,例(255,0...原创 2019-09-22 09:31:49 · 2349 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第四节:OpenCV处理鼠标事件
准备工作使用工具:Python3.5涉及包:cv2 numpy涉及函数函数:cv2.setMouseCallback()任务开始简单的程序,在图片上双击过的位置绘制一个圆圈 任务1.创建鼠标事件回调函数,当鼠标事件发生时就会被执行。 比如左键按下,松开,左键双击等。可以通过鼠标事件获得相对应的图片上的坐标,根据这些信息可以做想做的事。所有鼠标事件回调函数都有一个统一的...原创 2019-09-22 14:05:17 · 2268 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第五节:OpenCV用滑动条做调色板
注释 本节对仿人视觉没什么作用,只是想把opencv里面的这个函数给讲一下,以后就算不用opencv去做仿人视觉,也可以派的上用场。事先准备使用库numpy;cv2使用函数cv2.getTrackbarPos();cv2.creatTrackbar() cv2.creatTrackbar():可在显示图像的窗口中快速创建一个滑动控件,用于手动调节阈值(阀值可以理解为上限的意思) ...原创 2019-09-23 09:50:02 · 2503 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第六节:OpenCV图像的一些基本操作
提前准备使用工具Python3.5使用包cv2,numpy任务1 获取并修改像素值 读取一副图像,根据像素的行和列的坐标获取它的像素值,对于RGB图像而言,返回RGB的值,对于灰度图则返回灰度值import cv2import numpyimg = cv2.imread('45.jpg')px=img[100,100]print(px)blue = img[100,100,0...原创 2019-09-25 19:02:11 · 2228 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第七节:图像上的算术运算
准备工作使用工具Python3.5使用包cv2,numpy涉及函数cv2.add() ,cv2.addWeighted()任务1 图像加法 使用cv2.add()将两幅图像进行加法运算,也可以直接使用numpy,res=img1+img2.两幅图像的大小,类型必须一致,或者第二个图像可以是一个简单的标量值。 openCV的加法是一种饱和操作(大于255就按255算),而numpy的...原创 2019-09-25 19:54:01 · 2181 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---函数讲解1:cv2.flip()函数
语法cv2.flip(src, flipCode[, dst]) #src为要操作的图像flipCode的使用flipCode=-1 #水平垂直翻转flipCode= 0 #垂直翻转flipCode= 1 #水平翻转我们随便导入一张图片,他的原始图像是这样的:import cv2import numpy as npimg=cv2.im...原创 2019-09-26 20:50:12 · 3818 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第八节:程序性能检测及优化
事前准备:使用工具Python3.5使用包cv2,numpy,time,profile涉及函数:cv2.getTickCount,cv2.getTickFrequency任务1 使用OpenCV检测程序效率 cv2.getTickCount函数返回从参考点到这个函数被执行的时钟数。在一个函数执行前后都调用它,可以得到这个函数的执行时间。 cv2.getTickFrequency返...原创 2019-10-06 15:29:36 · 4392 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第九节:颜色空间转换
事先准备使用工具Python3.5使用包cv2,numpy涉及函数cv2.cvtColor()cv2.inRange()任务1:转换颜色空间 在 OpenCV 中有 超过150 种进行颜色空间转换的方法。但是你以后就会发现我们经常用到的也就两种:BGR↔Gray 和 BGR↔HSV。我们用到的函数是:cv2.cvtColor(input_image,flag),其中flag就是转换...原创 2019-10-07 18:23:41 · 4748 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第十节:五种常见的几何变换
涉及函数:cv2.getPerspectiveTransform()cv2.warpAffine()cv2.warpPersperctive()名称讲解: 通道数:指的是一个像素点由几个元素产生,有几个元素就有几条通道。如:一张RGB的图片,他上面的一个像素点就有三个元素组成(三通道),分别是B(Blue),G(Green),R(Red),所以这张图片就是三通道的;而一张灰度图,上面的...原创 2019-10-08 09:20:28 · 4653 阅读 · 2 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第十一节:图像阈值
事前准备使用工具:Python3.5使用库:cv2,numpy原始图像任务1:简单阀值涉及函数:cv2.threshold() 当像素值高于阀值时,我们给这个像素赋予一个新值(可能是白色),否则我们给它赋予另外一种颜色(也许是黑色)。这个函数就是cv2.threshold()。这个函数的第一个参数就是原图像,原图像应该是灰度图。第二个参数就是用来对像素值进行分类的阀值,第三个参...原创 2019-10-09 16:13:06 · 4532 阅读 · 0 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第十二节:几种常见的图像滤波、平滑
事先准备使用工具:Python3.5使用库:cv2,numpy任务1:2D卷积 同一维信号一样,可以对2D图像实施低通滤波(LPF)和高通滤波(HPF)。LPF用于去除噪音,模糊图像,HPF用于找到图像的边缘。OpenCV提供的函数cv.filter2D()可以对一幅图像进行卷积操作。练习一幅图像使用平均滤波器。举例下面是一个5X5的平均滤波器核: 操作如下,将核放在图像的一个像...原创 2019-10-11 19:40:16 · 4537 阅读 · 1 评论 -
(Python)从零开始,简单快速学机器仿人视觉Opencv---第一节:OpenCV的图像读取显示及保存
事前准备使用库: opencv,可以用pip install opencv-python来安装(注意!不是pip install opencv!!!) numpy(这个本节不用,但是以后经常要用到)从零开始我们先来讲从图片的导入和将灰度图另存到另一个地方概念 彩色图:图片每个像素都由Blue,Green,Red三种通过颜色的搭配获得,每个颜色的取值都在[0-255]内,如(0,...原创 2019-09-21 11:21:30 · 3662 阅读 · 0 评论