openCV
niucaiqing
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(openCV 一)形态学操作
1、腐蚀数学符号(-),将边缘削减,整体变细import cv2import numpy as npimport matplotlib.pyplot as pltimg = cv2.imread(‘img\3.jpg’,0) #直接读为灰度图像kernel = np.ones((5,5),np.uint8)erosion = cv2.erode(img,kernel,1)plt.s...原创 2019-04-02 22:30:18 · 399 阅读 · 0 评论 -
特征匹配
1、暴力匹配器# coding=utf-8import cv2import numpy as npimg1 = cv2.imread('img/test1.png')img2 = cv2.imread('img/test12.png')#最大特征点数,可以根据需要设置,如5000或100。orb = cv2.ORB_create(100)kp1, des1 = orb.d...原创 2019-04-18 21:42:03 · 622 阅读 · 0 评论 -
背景减除
1、BackgroundSubtractorMOGimport numpy as npimport cv2cap = cv2.VideoCapture(0)fgbg = cv2.createBackgroundSubtractorMOG()while(1):ret, frame = cap.read()fgmask = fgbg.apply(frame)cv2.imshow('f...原创 2019-04-19 10:34:17 · 469 阅读 · 0 评论 -
(openCV 二十)ML_Kmeans
cv2.kmeans()输入参数1. samples: 应该是np.float32 类型的数据,每个特征应该放在一列。2. nclusters(K): 聚类的最终数目。3. criteria: 终止迭代的条件。当条件满足时,算法的迭代终止。它应该是一个含有3 个成员的元组,它们是(typw,max_iter,epsilon):• type 终止的类型:有如下三种选择:– cv2....原创 2019-04-19 13:57:28 · 211 阅读 · 0 评论 -
BoW(词袋)算法
BoWBoW模型最初是为解决文档建模问题而提出的,因为文本本身就是由单词组成的。它忽略文本的词序,语法,句法,仅仅将文本当作一个个词的集合,并且假设每个词彼此都是独立的。这样就可以使用文本中词出现的频率来对文档进行描述,将一个文档表示成一个一维的向量。将BoW引入到计算机视觉中,就是将一幅图像看着文本对象,图像中的不同特征可以看着构成图像的不同词汇。和文本的BoW类似,这样就可以使用图像特...转载 2019-04-24 19:55:31 · 6917 阅读 · 0 评论 -
(OpenCV 十五)绘图
cv2.line(),cv2.circle(),cv2.rectangle(), cv2.ellipse(),cv2.putText()均需要设置的参数• img:你想要绘制图形的那幅图像。• color:形状的颜色。以RGB 为例,需要传入一个元组,例如:(255,0,0)代表蓝色。对于灰度图只需要传入灰度值。• thickness:线条的粗细。如果给一个闭合图形设置为-1,那么这个图形...原创 2019-04-20 15:10:29 · 186 阅读 · 0 评论 -
(openCV 十六)图像算术运算(加、减、乘、除、位运算)
cv2.add(),cv2.addWeighted()import cv2import numpy as npimg1=cv2.imread(‘ml.png’)img2=cv2.imread(‘opencv_logo.jpg’)dst=cv2.addWeighted(img1,0.7,img2,0.3,0)cv2.imshow(‘dst’,dst)cv2.waitKey(0)cv2...原创 2019-06-26 10:05:49 · 1902 阅读 · 0 评论 -
(openCV 十七)图像阈值、二值化
1、简单阈值与名字一样,这种方法非常简单。但像素值高于阈值时,我们给这个像素赋予一个新值(可能是白色),否则我们给它赋予另外一种颜色(也许是黑色)。这个函数就是 cv2.threshhold()。这个函数的第一个参数就是原图像,原图像应该是灰度图。第二个参数:就是用来对像素值进行分类的阈值。第三个参数:就是当像素值高于(有时是小于)阈值时应该被赋予的新的像素值。第四个参数:OpenC...原创 2019-06-26 14:02:15 · 1605 阅读 · 0 评论 -
(openCV 十八)图像平滑
2D 卷积与以为信号一样,我们也可以对 2D 图像实施低通滤波(LPF),高通滤波(HPF)等。LPF 帮助我们去除噪音,模糊图像。HPF 帮助我们找到图像的边缘OpenCV 提供的函数 cv.filter2D() 可以让我们对一幅图像进行卷积操作。下面我们将对一幅图像使用平均滤波器。下面是一个 5x5 的平均滤波器核:import cv2import numpy as npfr...原创 2019-06-26 15:18:00 · 180 阅读 · 0 评论 -
(openCV 二十)边缘检测
Sobel 算子和Scharr 算子cv2.Sobel(),cv2.Schar(),cv2.Laplacian() 等Sobel 算子是高斯平滑与微分操作的结合体,所以它的抗噪声能力很好。你可以设定求导的方向(xorder 或 yorder)。还可以设定使用的卷积核的大小(ksize)。如果ksize=-1,会使用 3x3 的 Scharr 滤波器,它的的效果要比 3x3 的 Sobel 滤波...原创 2019-07-03 12:49:37 · 522 阅读 · 0 评论 -
(openCV十九)直方图
原理什么是直方图呢?通过直方图你可以对整幅图像的灰度分布有一个整体的了解。直方图的 x 轴是灰度值(0 到 255),y 轴是图片中具有同一个灰度值的点的数目。统计直方图BINS:上面的直方图显示了每个灰度值对应的像素数。如果像素值为 0 到 255,你就需要 256 个数来显示上面的直方图。但是,如果你不需要知道每一个像素值的像素点数目的,而只希望知道两个像素值之间的像素点数目怎么...原创 2019-06-29 14:44:18 · 274 阅读 · 0 评论 -
(openCV二十一) ML_KNN
import cv2import numpy as npimport matplotlib.pyplot as plt训练的点数train_pts = 30创建测试的数据点,2类以(-1.5, -1.5)为中心rand1 = np.ones((train_pts,2)) * (-2) + np.random.rand(train_pts, 2)print(‘rand1:’)pri...原创 2019-07-04 20:01:05 · 210 阅读 · 0 评论 -
(openCV 二十)颜色空间转换
一、颜色空间转换在 OpenCV 中有超过 150 中进行颜色空间转换的方法。但是你以后就会发现我们经常用到的也就两种:BGR↔Gray 和 BGR↔HSV。我们要用到的函数是:cv2.cvtColor(input_image,flag),其中 flag就是转换类型。对于 BGR↔Gray 的转换,我们要使用的 flag 就是 cv2.COLOR_BGR2GRAY。同样对于 BGR↔HSV ...原创 2019-06-30 18:29:46 · 311 阅读 · 0 评论 -
(openCV 十九)轮廓Contours形状拟合
什么是轮廓?轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同 的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 • 为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理 或者 Canny 边界检测。 • 查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图 像的话,你应该将原始图像存储到其他变量中。 • 在 OpenCV 中,查找轮...转载 2019-04-23 09:33:47 · 9729 阅读 · 0 评论 -
图像分割(Graphcut算法)
https://www.jianshu.com/p/117f66320589转载 2019-04-17 17:39:31 · 2133 阅读 · 0 评论 -
(openCV 十四)运动对象跟踪
import cv2import numpy as npcamera = cv2.VideoCapture(0)es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (10, 10))kernel = np.ones((5, 5), np.uint8)background = Nonewhile (True): ret, f...原创 2019-04-17 16:26:50 · 399 阅读 · 0 评论 -
(openCV 三)特征检测(SIFT/SURF/HARRIS/ORB/FAST/BRIEF)
1、SIFTimport cv2import sysimport numpy as npfilename = 'img/chessboard2.jpg'img = cv2.imread(filename)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)sift = cv2.xfeatures2d.SIFT_create()keypo...原创 2019-04-16 15:13:50 · 692 阅读 · 0 评论 -
(openCV 四)图像增强
#数字图像归一化操作cv2.normalize(src, dst, alpha, beta, norm_type, dtype, mask) → dst参数解释:src: 原图像对象dst: 经过转化后的图像对象alpha: 归一化后灰度像素最小值,一般为0beta: 归一化后灰度像素最大值,一般为255norm_type: 归一化的类型,可以取以下值(1) ...转载 2019-04-16 21:11:04 · 564 阅读 · 0 评论 -
(openCV 五)图片中的人脸检测
# coding:utf-8import cv2# 待检测的图片路径imagepath = r'./heat.jpg'# 获取训练好的人脸的参数数据,这里直接从GitHub上使用默认值face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_default.xml')# 读取图片imag...原创 2019-04-16 21:15:07 · 317 阅读 · 0 评论 -
(openCV 六)视频中的人脸检测
import cv2detector = cv2.CascadeClassifier('C:\myprogram\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml')cap = cv2.VideoCapture(0)while True: ret, img = cap.read() g...原创 2019-04-16 21:17:09 · 622 阅读 · 0 评论 -
(openCV 七)汽车检测
汽车图片下载地址,下载后解压,解压后的包名为CarDatahttps://l2r.cs.uiuc.edu/~cogcomp/Data/Car/CarData.tar.gzimport cv2import numpy as npfrom os.path import join#此数据集为UIUC Car Detection 可网上下载datapath = "CarData/Train...原创 2019-04-16 21:21:00 · 1705 阅读 · 1 评论 -
(openCV 二)几何变换(缩放/平移/旋转/仿射变换/透视变换)
缩放(resize) 扩展缩放知识改变图像的尺寸大小。opencv提供的函数cv2.resize()可以实现这个功能。图像的尺寸可以自己手动设置,也可以指定缩放因子。插值方法也有多种选择,缩放时推荐使用cv2.INTER_AREA,扩展时推荐使用cv2.INTER_CUBIC(慢)和cv2.INTER_LINEAR。默认情况下所有改变图像尺寸大小的操作使用的都是cv2.INTER_LINEA...原创 2019-04-03 09:30:41 · 687 阅读 · 0 评论 -
(openCV 九)ML_ANN
import cv2import numpy as npfrom random import randint# 通过调用OpenCV函数创建ANNanimals_net = cv2.ml.ANN_MLP_create()# ANN_MLP_RPROP和ANN_MLP_BACKPROP都是反向传播算法,此处设置相应的拓扑结构animals_net.setLayerSizes(np....原创 2019-04-16 21:34:40 · 636 阅读 · 0 评论 -
(openCV 十)ML_SVM
import cv2import numpy as npimport matplotlib.pyplot as plt# 训练的点数train_pts = 30# 创建测试的数据点,2类# 以(-1.5, -1.5)为中心rand1 = np.ones((train_pts,2)) * (-2) + np.random.rand(train_pts, 2)print('ran...原创 2019-04-16 21:36:00 · 2210 阅读 · 0 评论 -
(openCV 十一)ML_Bayes
import cv2import matplotlib.pyplot as pltimport numpy as np# 训练的点数train_pts = 30# 创建测试的数据点,2类# 以(-1.5, -1.5)为中心rand1 = np.ones((train_pts,2)) * (-2) + np.random.rand(train_pts, 2)print('ran...原创 2019-04-16 21:38:31 · 177 阅读 · 0 评论 -
(openCV 十二)图像增强(对数变换/伽马变换/分段线性变换)
空间域处理是直接对像素进行操作的方法,这是相对于频率域处理而言的。空间域处理主要分为两大类:灰度变换和空间滤波。灰度变换在图像单个像素上操作,主要以对比度和阈值处理为目的。空间滤波涉及改善性能的操作,通过像元领域来处理。空间域处理均可由下式表达:常用的基本函数有三类:线性函数,对数函数(对数和反对数)和幂律函数(n次幂和n次根)1、对数变换对数变换将图像的低灰度值部分扩展,...原创 2019-04-16 22:47:29 · 8989 阅读 · 0 评论 -
(openCV 十三)图像基本操作
1、图像基本属性,拆分通道/合并通道# -*- coding:utf-8 -*-import cv2import numpy#读取图片img = cv2.imread("img/test.jpg", cv2.IMREAD_UNCHANGED)#获取图像形状,shape表示为[行数,列数,通道数]print(img.shape)#获取像素数目,像素 = 行数*列数*通道数p...原创 2019-04-17 12:20:11 · 205 阅读 · 0 评论 -
opencv版本与SIFT
比如,SIFT就需要用到opencv-contrib-python包中的cv2.xfeatures2d。解决方案安装方式可见网址:https://pypi.org/project/opencv-contrib-python/卸载opencv-pythonpip uninstall opencv-python安装opencv-contrib-pythonpip install ope...转载 2019-09-07 13:40:25 · 2456 阅读 · 0 评论
分享