在 Google Colab 中使用 OpenCV 进行图像处理简介

重磅干货,第一时间送达

在这篇文章中,我们将实现如何使用 OpenCV 在 google colaboratory 中进行图像处理。为此,我们应该了解一些 Python 基础知识,下面给出的步骤将帮助我们在 Google Colab 中使用 OpenCV 进行图像处理,这有助于机器学习人工智能。

图像处理的6个步骤:

步骤 1:加载依赖项

我们将加载一些必需的库,例如:Numpy, pandas, cv2, skimage, PIL and Matplotlib。在 Google colab 上加载依赖项:

import numpy as npimport pandas as pdimport cv2 as cvfrom google.colab.patches import cv2_imshow from skimage import iofrom PIL import Imageimport matplotlib.pylab as plt

第 2 步:从 URL 读取图像

在这一步中,我们将从 URL 中读取图像,并在 google colab 中使用 OpenCV 显示它们,我们将使用以下代码来显示图像。

让我们在 Google colab 上尝试一下,这些是图像的 URL。

urls = ["https://iiif.lib.ncsu.edu/iiif/0052574/full/800,/0/default.jpg","https://iiif.lib.ncsu.edu/iiif/0016007/full/800,/0/default.jpg","https://placekitten.com/800/571"]for url in urls:image = io.imread(url)image_2 = cv.cvtColor(image, cv.COLOR_BGR2RGB)final_frame = cv.hconcat((image, image_2))cv2_imshow(final_frame)print('\n')

运行上面给出的代码后,上面显示的图像将作为结果显示。请注意读取 RGB 和 BGR 格式的图像时的区别,OpenCV 的默认输入颜色通道采用 BGR 格式。

第 3 步:图像轮廓和直方图

我们将使用以下代码:

print(image.dtype)print(image.shape[0])print(image.shape[1])print(image.shape[2])

然后检查图像矩阵数据类型,图像的高度,图像的宽度,图像的通道数。现在让我们显示彩色图像中所有像素的直方图。

plt.hist(image.ravel(),bins = 256, range = [0,256])plt.show()

显示R、G、B 通道的直方图。我们可以观察到,绿色通道在 255 中有很多像素,这表示图像中的白色块。

color = ('b','g','r')for i, col in enumerate(color):histr = cv.calcHist([image],[i],None,[256],[0,256])plt.plot(histr,color = col)plt.xlim([0,256])plt.show()

现在让我们尝试制作灰度图像,在这里,我们成功地得到了一只猫的灰色图像,绘制灰度图像的直方图。

gray_image = cv.cvtColor(image, cv.COLOR_BGR2GRAY)cv2_imshow(gray_image)

我们可以观察到图像直方图的频率降低了彩色图像直方图的 1/3。

plt.hist(gray_image.ravel(),bins = 256, range = [0, 256])plt.show()

第 4 步:灰度变换和直方图均衡化

灰度变换提供了一些对灰度图像进行数学变换的示例。

im2 = 255 - gray_imagecv2_imshow(im2)

这是灰度图像的逆运算,我们可以看到明亮的像素变暗,而暗的像素变亮。

im3 = (100.0/255)*gray_image + 100cv2_imshow(im3)

在添加常量后,对图像进行另一个变换。所有的像素都变得更亮,并且产生了图像的模糊效果。在这一步骤之后,灰度图像的亮度级别会降低。

第 5 步:灰度图像的傅立叶变换

傅里叶变换用于找到图像的频域,让我们继续使用一段代码,它通过内核大小为 10 的高斯滤波器对灰度图像进行模糊,并将图像变换到频域。

imBlur = cv.blur(gray_image,(5,5))f = np.fft.fft2(imBlur)fshift = np.fft.fftshift(f)magnitude_spectrum = 30*np.log(np.abs(fshift))plt.subplot(121),plt.imshow(imBlur, cmap = 'gray')plt.title('Input Image'), plt.xticks([]), plt.yticks([])plt.subplot(122),plt.imshow(magnitude_spectrum, cmap = 'gray')plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])plt.show()

步骤 6:通过 FFT 中的高通滤波查找边缘

最后一步演示如何使用高通滤波器去除低频分量,从而生成包含边缘的锐化图像。

rows, cols = imBlur.shapecrow, ccol = round(rows/2) , round(cols/2)fshift[crow-10:crow+10, ccol-10:ccol+10] = 0f_ishift = np.fft.ifftshift(fshift)img_back = np.fft.ifft2(f_ishift)img_back = np.abs(img_back)plt.figure(figsize=([20, 20]))plt.subplot(131),plt.imshow(imBlur, cmap = 'gray')plt.title('Input Image'), plt.xticks([]), plt.yticks([])plt.subplot(132),plt.imshow(img_back, cmap = 'gray')plt.title('Image after HPF'), plt.xticks([]), plt.yticks([])plt.subplot(133),plt.imshow(img_back)plt.title('Result in JET'), plt.xticks([]), plt.yticks([])plt.show()
(0)

相关推荐

  • python数字图像处理(三)边缘检测常用算子

    在该文将介绍基本的几种应用于边缘检测的滤波器,首先我们读入saber用来做为示例的图像 #读入图像代码,在此之前应当引入必要的opencv matplotlib numpysaber = cv2.im ...

  • python进阶—OpenCV之图像处理(一)

    文章目录 颜色空间转换 RGB色彩空间 HSV色彩空间 YUV色彩空间 简单的物体跟踪示例 HSV空间目标阈值选取 图像几何变换 图像的缩放 图像的位移 图像的旋转 图像的仿射 图像的投射 图像阈值( ...

  • python+opencv图像处理(八)

    无所谓,谁会爱上谁... 无所谓,不能天天更... 只要是,不要一直断... -----------------------------------我是可爱的分割线 图像平移的意思就是将图像沿着x轴. ...

  • python+opencv图像处理(六)

    图像相加 两幅图像是可以加在一起的. 图像相加是通过对两幅大小相同的图像对应位置像素的相加运算,以产生一幅新的含有两幅图像信息的图像的方法.有时也称为图像合成. 1.(+)法 数学运算中的+可以用于图 ...

  • 使用 OpenCV 将卷积实现为图像过滤器

    卷积简介 卷积是计算机视觉 (CV) 中的一个流行术语.在讨论如何实现 CV 任务时,经常会提到卷积神经网络.因此,任何 CV 追求者都必须完全理解"卷积"一词. 卷积是几个图像处 ...

  • Python进阶——OpenCV之GUI

    文章目录 图像处理(Getting Started with Images) 读取图像 显示图像 保存图像 使用Matplotlib 视频处理(Getting Started with Videos) ...

  • 边缘和轮廓检测——计算机视觉的应用

    计算机视觉的重点是从计算机中的视频和图像中提取有意义的信息.在本文中,我们将从初学者开始探索一个使用 OpenCV 的出色计算机视觉项目. 其标题是"使用计算机视觉进行边缘和轮廓检测&quo ...

  • python+opencv图像处理(十二)

    图像仿射变换和透视变换 天晴了...... 1.仿射变换 图像的仿射变换就是图像的旋转加上拉升,说直白点,就是把矩形变成平行四边形. 要把矩形变成平行四边行,只需要拉伸其四个角点就行了,事实上,只需要 ...

  • colab中%cd !cd cd之间有什么区别?

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/colab中%cd !cd cd之间有什么区别? 作者:融水公子 rsgz Colab教程 Colab教程 http://www.rsgz.top ...

  • colab中切换路径的两种方式

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/colab中切换路径的两种方式 作者:融水公子 rsgz Colab教程 Colab教程 http://www.rsgz.top/post/410 ...

  • 使用Python中的OpenCV降噪功能增强图像的3个步骤

    重磅干货,第一时间送达 在本文中,我们将展示如何通过三个简单的步骤来实现降噪.我们将使用机器学习训练的降噪模型.这是我们找到的最好的降噪模型之一. 程序可以判断图像是否有噪点吗?这对于另一个项目可能是 ...

  • 如何正确地使用Google Colab

    一.Colab简介https://colab.research.google.com/notebooks/welcome.ipynb偶然间接触到Colab,发现它居然支持GPU,而且是免费使用.202 ...

  • Google Colab免费GPU使用攻略

    穷学生学习神经网络一定体会过"等待"的痛苦... 循环一次epoch急死人,但是有几十个上百个循环等着你! 你盯着屏幕看着进度条像蜗牛一样推进,真是恨铁不成钢,心想等日后发达了一定 ...

  • 完整的动手指南,可在Google Colab GPU上训练你的神经网络模型

    介绍 如果你是神经网络领域的初学者,那么你可能已经使用过CPU训练模型.好吧,即使你的模型有 100000 个参数也没关系,训练模型可能需要几个小时.但是,如果你的模型有 100 亿或 200 亿个参 ...

  • 【工具篇】如何用Google Colab高效的学习Python

    环境配置对于大多数人来说都是拦路虎,我们小白往往不知道: 怎么正确的安装 不知道选择什么 怎么安装常用的第三方库 ... Google推出了一个在线的网站 https://colab.research ...

  • colab中输出文件名和文件尺寸

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/colab中输出文件名和文件尺寸 作者:融水公子 rsgz Colab教程 Colab教程 http://www.rsgz.top/post/41 ...

  • colab中下载文件

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/colab中下载文件 作者:融水公子 rsgz Colab教程 Colab教程 http://www.rsgz.top/post/410.html ...