OpenCV
一抹烟霞
这个作者很懒,什么都没留下…
展开
-
OpenCV_Python —— (10)视频读取存储
文章目录一、摄像头读取二、视频文件读取三、获取视频参数四、修改视频参数五、视频写入一、摄像头读取# 从摄像头获取图像数据cap = cv2.VideoCapture(0)while(True): # ret 读取成功True或失败False # frame读取到的图像的内容 # 读取一帧数据 ret,frame = cap.read() # 变为灰度图 gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)原创 2020-06-19 19:09:47 · 1048 阅读 · 0 评论 -
OpenCV_Python —— (9)Canny边缘检测
文章目录Canny边缘检测原理1.噪声去除2.计算图像梯度3.非极大值抑制4.滞后阈值Canny使用Canny边缘检测原理Canny 边缘检测是一种非常流行的边缘检测算法,是 John F.Canny 在1986 年提出的。它是一个有很多步构成的算法,我们接下来会逐步介绍。1.噪声去除由于边缘检测很容易受到噪声影响,所以第一步是使用 5x5 的高斯滤波器去除噪声,这个前面我们已经学过了。2.计算图像梯度对平滑后的图像使用 Sobel 算子计算水平方向和竖直方向的一阶导数(图像梯度)(Gx 和 G原创 2020-06-19 18:49:34 · 309 阅读 · 0 评论 -
OpenCV_Python —— (8)图像梯度
I是图像像素的值(如:RGB值)一阶导数:x的梯度:Gx = I(x+1,y)-I(x,y)y的梯度:Gy = I(x,y+1)-I(x,y)二阶导数:x的梯度:I(x+1,y)+I(x-1,y)-2I(x,y)y的梯度:I(x,y+1)+I(x,y-1)-2I(x,y)OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器: Sobel,Scharr 和 Laplacian。Sobel, Scharr 其实就是求一阶或二阶导数。 Scharr 是对 Sobel的优化。Laplacian原创 2020-06-19 18:29:17 · 409 阅读 · 0 评论 -
OpenCV_Python —— (7)二值化Thresholding
二值化就是把图片传换成只有white和black这两种颜色。通过Thresholding,可以让图片中感兴趣的颜色变成主角–white,其余的颜色全部隐藏–black。另外,二值化后的图片也便于计算机进行分析,因为边缘轮廓十分清晰,所以计算机可以轻松找到边界线。然而,在找边界这方面,Thresholding并不是特别好的算法,有些时候遇到某些特殊图片效果也不好。# 需要转换成灰度图才能二值化gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)5种二值化方式原创 2020-06-19 18:10:38 · 543 阅读 · 0 评论 -
OpenCV_Python —— (6)图像色彩空间
文章目录一、RGB二、HSV色调H:饱和度S:明度V:三、L*a*b四、Grayscale一、RGBRGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。红、绿、蓝三个颜色通道每种色各分为256阶亮度,在0时“灯”最弱——是关掉的,而在255时“灯”最亮。当三色灰度数值相同时,产生不同灰度值的灰色调,即三色灰度都为0时,是最暗的黑色调;三色灰度都为255时,是最亮的白色调。在原创 2020-06-19 17:30:33 · 513 阅读 · 0 评论 -
OpenCV_Python —— (5)图像模糊/平滑/滤波
文章目录一、Averaging平均滤波二、Gaussian高斯模糊三、Median中值模糊四、Bilateral双边滤波一、Averaging平均滤波计算卷积框覆盖区域所有像素的平均值得到卷积的结果# 输入图像# 核的尺寸大小:(3,3) (5,15).....都可以,可以不是正方形blur = cv2.blur(image, (15,15))二、Gaussian高斯模糊现在把卷积核换成高斯核(简单来说,方框不变,将原来每个方框的值是相等的,现在里面的值是符合高斯分布的,方框中心的值最大,其原创 2020-06-19 17:16:20 · 301 阅读 · 0 评论 -
OpenCV_Python —— (4)形态学操作
文章目录一、结构元素二、Erosion腐蚀(白色部分被腐蚀,黑色部分变大)三、Dilation膨胀(白色部分膨胀,黑色部分变小)四、Opening开运算五、Closing闭运算六、先开运算再闭运算七、Gradient形态学梯度八、Top Hat顶帽/White Hat白帽九、Black Hat黑帽 原始图像一、结构元素因为形态学操作其实也是应用卷积来实现的,这个卷积核也叫结构元素。结构元素可以是矩形/椭圆/十字形,可以用cv2.getStructuringElement()来生成原创 2020-06-19 16:59:17 · 1000 阅读 · 0 评论 -
OpenCV_Python —— (3)通道切分合并、图像金字塔
文章目录一、通道切分合并二、图像金字塔图像金字塔高斯金字塔拉普拉斯金字塔一、通道切分合并# 通道切分(R, G, B) = cv2.split(image)# 通道合并merged = cv2.merge([R,G,B])二、图像金字塔图像金字塔一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下,我们需要对同一图像的不同分辨率的子图像进行处理。比如,我们要在一幅图像中查找某个目标,比如脸,我们不知道目标在图像中的尺寸大小。这种情况下,我们需要创建创建一组图像,这些图像是具原创 2020-06-19 16:16:46 · 1061 阅读 · 0 评论 -
OpenCV_Python —— (2)图像翻转、裁剪、图像算术、位计算
文章目录一、图像翻转二、裁剪三、图像算术四、位运算五、掩膜一、图像翻转# 包含所需的库import numpy as npimport cv2import matplotlib.pyplot as plt# 图像显示函数def show(image): plt.imshow(image) plt.axis('off') plt.show()# 显示原图像image = imread("test.jpg")show(image)# 水平翻转,第二个参数是坐标原创 2020-06-19 16:03:49 · 366 阅读 · 1 评论 -
OpenCV_Python —— (1)画基本图形
文章目录准备空白图像画直线画矩形画圆准备空白图像# 包含所需的库import numpy as npimport cv2import matplotlib.pyplot as plt# 图像显示函数def show(image): plt.imshow(image) plt.axis('off') plt.show()image = np.zeros((300,300,3),dtype='uint8')show(image)画直线# 需要画图的图像# 直原创 2020-06-19 15:41:53 · 139 阅读 · 0 评论 -
visual studio编译cmake opencv一直出错
一般是因为电脑上的Python的版本不匹配引起的,如果不使用Python,就把Python相关的模块去掉即可编译成功原创 2019-01-17 17:52:52 · 531 阅读 · 0 评论