
opencv
胖子工作室
这个作者很懒,什么都没留下…
展开
-
理解图像卷积操作的意义
理解图像卷积操作的意义转载 2022-01-02 10:46:53 · 95 阅读 · 0 评论 -
Opencv下载
https://github.com/opencv/opencv/releases?page=4原创 2021-12-16 19:14:50 · 2591 阅读 · 0 评论 -
【OpenCV + Python】时域和频域&傅里叶变换
跟一维信号处理一样,傅里叶变化,把图像从“空域”变为“频率”。对于一幅图像,高频部分代表了图像的细节、纹理信息;低频部分代表了图像的轮廓信息。如果对一幅精细的图像使用低通滤波器,那么滤波后的结果就剩下了轮廓了。这与信号处理的基本思想是相通的。如果图像受到的噪声恰好位于某个特定的“频率”范围内,则可以通过滤波器来恢复原来的图像。时域是指时间域,频域是指频率域。时域和频域是信号的基本性质。频率(单位...转载 2019-06-27 19:19:50 · 4833 阅读 · 0 评论 -
【OpenCV + Python】图像阈值
一、介绍:cv2.threshold()函数的作用是将一幅灰度图二值化,基本用法如下:#ret:暂时就认为是设定的thresh阈值,mask:二值化的图像ret,mask = cv2.threshold(img2gray,100,255,cv2.THRESH_BINARY)plt.imshow(mask,cmap=‘gray’)上面代码是,将灰度图img2gray中灰度值小于100的点置...原创 2019-06-24 20:42:01 · 2328 阅读 · 1 评论 -
【OpenCV + Python】SIFT(Scale-Invariant Feature Transform)介绍
import cv2img = cv2.imread('3.png')gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)sift = cv2.xfeatures2d.SIFT_create()kp = sift.detect(gray,None)img=cv2.drawKeypoints(gray,kp,img)cv2.imshow("img",img...原创 2019-06-27 17:32:52 · 289 阅读 · 0 评论 -
【OpenCV + Python】角点检测& 跟踪的图像特征
OpenCV 提供了函数:cv2.goodFeaturesToTrack()。这个函数可以帮我们使用Shi-Tomasi 方法获取图像中N 个最好的角点(如果你愿意的话,也可以通过改变参数来使用Harris 角点检测算法)。通常情况下,输入的应该是灰度图像。然后确定你想要检测到的角点目。再设置角点的质量水平,0到1 之间。它代表了角点的最低质量,低于这个数的所有角点都会被忽略。最后在设置两个角点之...原创 2019-06-27 16:52:33 · 3386 阅读 · 0 评论 -
【OpenCV + Python】图像特征 & Harris 角点检测
Opencv 中的函数cv2.cornerHarris() 可以用来进行角点检测。参数如下:• img - 数据类型为float32 的输入图像。• blockSize - 角点检测中要考虑的领域大小。• ksize - Sobel 求导中使用的窗口大小• k - Harris 角点检测方程中的自由参数,取值参数为[0,04,0.06]。实例:import cv2import num...原创 2019-06-27 16:31:08 · 2341 阅读 · 1 评论 -
【OpenCV + Python】分水岭算法图像分割
任何一副灰度图像都可以被看成拓扑平面,灰度值高的区域可以被看成是山峰,灰度值低的区域可以被看成是山谷。我们向每一个山谷中灌不同颜色的水。随着水的位的升高,不同山谷的水就会相遇汇合,为了防止不同山谷的水汇合,我们需要在水汇合的地方构建起堤坝。不停的灌水,不停的构建堤坝直到所有的山峰都被水淹没。我们构建好的堤坝就是对图像的分割。这就是分水岭算法的背后哲理。但是这种方法通常都会得到过度分割的结果,这...原创 2019-06-27 00:03:55 · 6453 阅读 · 2 评论 -
【OpenCV + Python】几何变换
图像进行各种几个变换,例如移动,旋转,仿射变换等:OpenCV 提供了两个变换函数, cv2.warpAffine 和 cv2.warpPerspective,使用这两个函数你可以实现所有类型的变换。 cv2.warpAffine 接收的参数是2 × 3 的变换矩阵,而 cv2.warpPerspective 接收的参数是 3 × 3 的变换矩阵。cv2.warpAffine(src, M, ...原创 2019-06-24 09:22:43 · 370 阅读 · 0 评论 -
【OpenCV + Python】Hough 圆环变换
• 学习使用霍夫变换在图像中找圆形(环)。• 学习函数:cv2.HoughCircles()。首先对图像进行canny边缘检测,对边缘中的每一个非0点,通过Sobel算法计算局部梯度。那么计算得到的梯度方向,实际上就是圆切线的法线。三条法线即可确定一个圆心,同理在累加器中对圆心通过的法线进行累加,就得到了圆环的判定。cv2.HoughCircles(image, method, dp, m...转载 2019-06-26 23:40:29 · 1970 阅读 · 0 评论 -
【OpenCV + Python】图像平滑
• 学习使用不同的低通滤波器对图像进行模糊• 使用自定义的滤波器对图像进行卷积(2D 卷积)我们也可以对 2D 图像实施低通滤波(LPF),高通滤波(HPF)等。 LPF 帮助我们去除噪音,模糊图像。 HPF 帮助我们找到图像的边缘OpenCV 提供的函数 cv.filter2D() 可以让我们对一幅图像进行卷积操作。使用低通滤波器可以达到图像模糊的目的。这对与去除噪音很有帮助。其实就是去...原创 2019-06-24 23:34:25 · 328 阅读 · 0 评论 -
【OpenCV + Python】形态学转换
• 我们要学习的函数有:cv2.erode(), cv2.dilate(), cv2.morphologyEx()等。• 学习不同的形态学操作,例如腐蚀,膨胀,开运算,闭运算等。形态学操作是根据图像形状进行的简单操作。一般情况下对二值化图像进行的操作。需要输入两个参数,一个是原始图像,第二个被称为结构化元素或核,它是用来决定操作的性质的。两个基本的形态学操作是腐蚀和膨胀。他们的变体构成了开运...原创 2019-06-30 09:08:05 · 370 阅读 · 0 评论 -
图像中矩的概念
数学中矩的概念:图像中的矩:统计中矩的定义是各点对某一固定点A离差幂的平均值。如果A=0,则是原点矩,A=均值,则是中心距。K是阶数。统计中引入矩是为了描述随机变量分布的形态。数学期望是一阶原点矩(表示分布重心)方差是二阶中心距(表示离散程度)偏态是三阶中心矩(表示分布偏离对称的程度)峰态是四阶中心距(描述分布的尖峰程度,例如正态分布峰态系数=0)图像的矩通常描述了该图像形...转载 2019-07-01 08:52:23 · 2256 阅读 · 1 评论 -
【OpenCV + Python】轮廓特性
函数cv2.drawContours()被用来绘制轮廓。第一个参数是一张图片,可以是原图或者其他。第二个参数是轮廓,也可以说是cv2.findContours()找出来的点集,一个列表。第三个参数是对轮廓(第二个参数)的索引,当需要绘制独立轮廓时很有用,若要全部绘制可设为-1。接下来的参数是轮廓的颜色和厚度。凸形形状的轮廓检测:凸形指图形内两点连线可能会在图形外,OpenCV中应用道格拉斯-普...原创 2019-06-30 21:39:32 · 652 阅读 · 1 评论 -
【OpenCV + Python】OCR识别
import cv2import numpy as npfrom PIL import Imageimport pytesseract as tessdef recognize_text(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.imshow("binimg", gray) ret, binnar...原创 2019-06-30 18:46:50 · 9793 阅读 · 0 评论 -
【OpenCV + Python】人脸识别
HAAR与LBP特征数据下载:实例:import cv2import numpy as npdef face_detecte(img): print(img.shape) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) face_detector = cv2.CascadeClassifier("C:\\Users\\Des...原创 2019-06-30 18:20:03 · 432 阅读 · 0 评论 -
【OpenCV + Python】归一化函数cv2.normalize()的原理讲解
功能:归一化函数函数:cv2.normalize(src[, dst[, alpha[, beta[, norm_type[, dtype[, mask]]]]]]) → dstsrc-输入数组。dst-与SRC大小相同的输出数组。α-范数值在范围归一化的情况下归一化到较低的范围边界。β-上限范围在范围归一化的情况下;它不用于范数归一化。范式-规范化类型(见下面的细节)。dType—...转载 2019-06-30 07:25:56 · 12703 阅读 · 0 评论 -
【OpenCV + Python】图像窗口大小控制
import cv2img=cv2.imread(‘5.jpg’,0)rows,cols=img.shaperet2,mask2 = cv2.threshold(img,23, 255,cv2.THRESH_OTSU | 1)ret2,mask3 = cv2.threshold(img,0,255,1+ cv2.THRESH_OTSU)cv2.namedWindow(“enhanced...原创 2019-06-29 11:07:25 · 5371 阅读 · 0 评论 -
【OpenCV + Python】给指定位置像素赋值
img[i,:] = im[j,:] # 将第 j 行的数值赋值给第 i 行img[:,i] = 100 # 将第 i 列的所有数值设为 100img[:100,:50].sum() # 计算前 100 行、前 50 列所有数值的和img[50:100,50:100] # 50~100 行,50~100 列(不包括第 100 行和第 100 列)img[i].mean() # 第 i 行所...原创 2019-06-28 14:34:52 · 6233 阅读 · 0 评论 -
图像处理中的距离含义
距离变换是二值图像处理与操作中常用手段,在骨架提取,图像窄化中常有应用。距离变换的结果是得到一张与输入图像类似的灰度图像,但是灰度值只出现在前景区域。并且越远离背景边缘的像素灰度值越大。根据度量距离的方法不同,距离变换有几种不同的方法,假设像素点p1(x1, y1),p2(x2, y2)计算距离的方法常见的有:欧几里德距离(常用的距离),是点和点之间坐标的均方根。通常情况下人们所说到...原创 2019-06-28 10:37:13 · 3670 阅读 · 0 评论 -
【OpenCV + Python】Hough 直线变换
• 理解霍夫变换的概念• 学习如何在一张图片中检测直线• 学习函数:cv2.HoughLines(),cv2.HoughLinesP()霍夫变换在检测各种形状的的技术中非常流行,如果你要检测的形状可以用数学表达式写出,你就可以是使用霍夫变换检测它。即使要检测的形状存在一点破坏或者扭曲也可以使用。我们下面就看看如何使用霍夫变换检测直线。一条直线可以用数学表达式y = mx + c 或者 = ...原创 2019-06-26 20:34:31 · 1407 阅读 · 0 评论 -
【OpenCV + Python】颜色空间转换cv2.cvtColor()
颜色空间转换,我们经常用到的也就两种: BGR2Gray 和 BGR2HSV:cv2.cvtColor(image,flag)函数进行转换,flag代表转换方式mask = cv2.inRange(hsv, lower, upper)函数:函数很简单,参数有三个第一个参数:hsv指的是原图第二个参数:lower指的是图像中低于这个lower的值,图像值变为0第三个参数:upper指的...原创 2019-06-23 22:08:36 · 6105 阅读 · 0 评论 -
【OpenCV + Python】模板匹配
模板匹配是用来在一副大图中搜寻查找模版图像位置的方法。OpenCV 为我们提供了函数:cv2.matchTemplate()。和2D 卷积一样,它也是用模板图像在输入图像(大图)上滑动,并在每一个位置对模板图像和与其对应的输入图像的子区域进行比较。OpenCV 提供了几种不同的比较方法。返回的结果是一个灰度图像,每一个像素值表示了此区域与模板的匹配程度。如果输入图像的大小是(WxH),模板的大小...原创 2019-06-26 19:10:16 · 578 阅读 · 0 评论 -
opencv在Python中的使用小技巧
import cv2import numpy as npimg=cv2.imread(’/home/duan/workspace/opencv/images/roi.jpg’)img[100,100]=[255,255,255]print img[100,100]原创 2019-06-20 08:20:58 · 258 阅读 · 0 评论 -
【OpenCV + Python】实现滚动条功能
import cv2import numpy as npdef nothing(x):passimg=np.zeros((300,512,3),np.uint8)cv2.namedWindow(‘image’)cv2.createTrackbar(‘R’,‘image’,0,255,nothing)cv2.createTrackbar(‘G’,‘image’,0,255,nothin...原创 2019-06-19 19:46:49 · 7827 阅读 · 0 评论 -
【OpenCV + Python】绘图函数cv2.line(), cv2.circle(), cv2.rectangle(), cv2.ellipse(), cv2.putText()
import cv2import numpy as np当鼠标按下时变为Truedrawing=False如果mode 为true 绘制矩形。按下’m’ 变成绘制曲线。mode=Trueix,iy=-1,-1创建回调函数def draw_circle(event,x,y,flags,param):global ix,iy,drawing,mode当按下左键是返回起始位置坐标i...原创 2019-06-19 19:09:17 · 2288 阅读 · 0 评论 -
【OpenCV + Python】ret, frame = cap.read()返回值含义&视频读取
ret, frame = cap.read()返回值含义:参数ret 为True 或者False,代表有没有读取到图片第二个参数frame表示截取到一帧的图片原创 2019-06-19 14:01:19 · 58822 阅读 · 4 评论 -
【OpenCV + Python】cv.waitkey()函数
原创 2019-06-19 11:11:50 · 2331 阅读 · 0 评论 -
【OpenCV + Python】OpenCV的图像读取、保存与显示&色彩通道说明
opencv中imread函数第二个参数含义:import cv2 as cvcv.imread(const string& filename, int flag=1)第二个参数含义:实例:src = cv.imread(‘C:/Users/Desktop/1.jpg’,1) # 1cv.imshow(‘src’, src)cv.waitKey(0)cv.destroy...原创 2019-06-19 11:01:21 · 3041 阅读 · 0 评论 -
图像中的高频信号与低频信号
高通算子:Sobel算子、Laplacian算子转载:https://blog.youkuaiyun.com/wangleixian/article/details/78237597转载 2019-06-19 09:26:09 · 2012 阅读 · 0 评论 -
卷积/高通、低通
转载:https://blog.youkuaiyun.com/qq_39521554/article/details/79083864转载 2019-06-19 09:14:46 · 1110 阅读 · 0 评论 -
【OpenCV + Python】之bitwise_and、bitwise_not,bitwise_xor等图像基本运算(opencv位操作)
灰度图由0~255表示,0为黑,255为白,从位操作的角度出发,纯黑色为0,不是纯黑色为1,所以在一些纯白色,或者纯黑色背景里,可以转为灰度图,利用阈值将非背景色的内容抠出来作为模板,再与原图做位操作,进行抠图。(1)Cv2.bitwise_not(图片文件),将图片里像素值按位反向。(2)Cv2.bitwise_and (目标文件,源文件,mask),将图片里的像素值按位与(3)Cv2.a...原创 2019-06-23 08:49:54 · 17054 阅读 · 0 评论 -
opencv图像掩膜
图像掩膜与其类似,用选定的图像、图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程。数字图像处理中,掩模为二维矩阵数组,有时也用多值图像,图像掩模主要用于:①提取感兴趣区,用预先制作的感兴趣区掩模与待处理图像相乘,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0。②屏蔽作用,用掩模对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏...原创 2019-06-21 08:33:42 · 937 阅读 · 0 评论 -
【OpenCV + Python】图像梯度
学习以下内容:• 图像梯度,图像边界等• 使用到的函数有:cv2.Sobel(),cv2.Schar(),cv2.Laplacian() 等OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel,Scharr 和Laplacian。我们会意义介绍他们。Sobel,Scharr 其实就是求一阶或二阶导数。Scharr 是对Sobel(使用小的卷积核求解求解梯度角度时)的优化。L...原创 2019-06-25 09:42:27 · 1065 阅读 · 0 评论 -
【OpenCV + Python】色彩空间&通道分离与合并
HSV色彩空间: 做颜色物体跟踪非常有用。实例:import cv2import numpy as npdef find_obj(img): hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) lower_hsv = np.array([0,43,46]) upper_hsv = np.array([10, 255, 255]) ...原创 2019-07-02 00:04:36 · 565 阅读 · 0 评论 -
【OpenCV + Python】图像像素遍历&初始化图像&初始化结构体&运行时间统计
图像像素遍历&初始化图像&初始化结构体&运行时间统计等基本知识点。import cv2import numpy as npdef access_pixel(img): #像素访问 print(img.shape) height = img.shape[0] width = img.shape[1] channels = img.sh...原创 2019-07-01 23:17:12 · 3998 阅读 · 0 评论 -
【OpenCV + Python】2D直方图
HSV图示:cv2:calcHist(images; channels; mask; histSize; ranges[; hist[; accumulate]])images: 原图像(图像格式为uint8 或float32)。当传入函数时应该用中括号[] 括起来,例如:[img]。channels: 同样需要用中括号括起来,它会告诉函数我们要统计那幅图像的直方图。如果输入图像是灰...原创 2019-06-26 17:31:05 · 1260 阅读 · 1 评论 -
【OpenCV + Python】直方图
• 使用 OpenCV 或 Numpy 函数计算直方图• 使用 Opencv 或者 Matplotlib 函数绘制直方图• 将要学习的函数有: cv2.calcHist(), np.histogram()直方图统计**BINS:原创 2019-06-26 11:38:23 · 397 阅读 · 0 评论 -
【OpenCV + Python】轮廓
• 函数:cv2.findContours(),cv2.drawContours()轮廓查找:• 为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者Canny 边界检测。• 查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图像的话,你应该将原始图像存储到其他变量中。• 在OpenCV 中,查找轮廓就像在黑色背景中找白色物体。你应该记住,要找的物体应该是白色而...原创 2019-06-25 21:03:12 · 4064 阅读 · 0 评论 -
opencv修改和提取像素值
import cv2import numpy as npimg=cv2.imread(’/workspace/opencv/images/1.jpg’)print img.item(10,10,2)img.itemset((10,10,2),100)print img.item(10,10,2)50100原创 2019-06-22 08:41:34 · 1035 阅读 · 0 评论