Python图像处理教程(使用OpenCV)

2023-10-19

在本教程中,您将学习如何使用 OpenCV 库在 Python 中处理图像。

OpenCV 是一个用于实时图像处理的免费开源库。它用于处理图像、视频甚至直播,但在本教程中,我们将仅将处理图像作为第一步。在开始之前,我们先安装 OpenCV。

 

 

安装 OpenCV

要在系统上安装 OpenCV,请运行以下 pip 命令:


pip install opencv-python  

现在OpenCV已经安装成功,我们已经准备好了。让我们来欣赏一些图像吧!

 

旋转图像

首先,导入cv2模块。


import cv2  

现在要读取图像,请使用 cv2 模块的 imread() 方法,在参数中指定图像的路径并将图像存储在变量中,如下所示:


img = cv2.imread("pyimg.jpg")  

该图像现在被视为矩阵,行和列值存储在 img 中。

实际上,如果你检查 img 的类型,它会给出以下结果:


>>>print(type(img))
<class 'numpy.ndarray'>  

It’s a NumPy 数组!这就是为什么使用 OpenCV 进行图像处理如此简单。您一直在使用 NumPy 数组。

要显示图像,可以使用cv2的imshow()方法。


cv2.imshow('Original Image', img) 
cv2.waitKey(0)
  

waitkey 函数将时间作为参数(以毫秒为单位)作为窗口关闭的延迟。这里我们将时间设置为零以永远显示窗口,直到我们手动关闭它。

要旋转此图像,您需要图像的宽度和高度,因为您将在旋转过程中使用它们,稍后您将看到。


height, width = img.shape[0:2]  

shape 属性返回图像矩阵的高度和宽度。如果您打印


img.shape[0:2]  

,您将得到以下输出:

好的,现在我们有了图像矩阵,我们想要得到旋转矩阵。为了获得旋转矩阵,我们使用getRotationMatrix2D()CV2的方法。语法为getRotationMatrix2D() is:


cv2.getRotationMatrix2D(center, angle, scale)  

这里的center是旋转中心点,angle是以度为单位的角度,scale是使图像适合屏幕的缩放属性。

为了获得图像的旋转矩阵,代码如下:


rotationMatrix = cv2.getRotationMatrix2D((width/2, height/2), 90, .5)  

下一步是借助旋转矩阵旋转我们的图像。

为了旋转图像,我们有一个名为的 cv2 方法包裹仿射它以原始图像、图像的旋转矩阵以及图像的宽度和高度作为参数。


rotatedImage = cv2.warpAffine(img, rotationMatrix, (width, height))  

旋转后的图像存储在rotatedImage 矩阵中。要显示图像,请使用 imshow() ,如下所示:


cv2.imshow('Rotated Image', rotatedImage)
cv2.waitKey(0)  

运行以上几行代码后,您将得到以下输出:

 

裁剪图像

首先,我们需要导入cv2模块并读取图像并提取图像的宽度和高度:


import cv2
img = cv2.imread("pyimg.jpg")
height, width = img.shape[0:2]  

现在获取行和列的开始和结束索引。这将定义新创建的图像的大小。例如,从第 10 行开始到第 15 行将给出图像的高度。

同样,从第 10 列开始直到第 15 列将给出图像的宽度。

您可以通过指定总高度和总宽度的百分比值来获取起点。同样,要获取裁剪图像的终点,请指定百分比值,如下所示:


startRow = int(height*.15)
startCol = int(width*.15)
endRow = int(height*.85)
endCol = int(width*.85)  

现在将这些值映射到原始图像。请注意,您必须将起始值和结束值转换为整数,因为映射时索引始终是整数。


croppedImage = img[startRow:endRow, startCol:endCol]  

这里我们指定了行和列从开始到结束的范围。

现在在输出中显示原始图像和裁剪后的图像:


cv2.imshow('Original Image', img)
cv2.imshow('Cropped Image', croppedImage)
cv2.waitKey(0)  

结果如下:

调整图像大小

要调整图像大小,可以使用 openCV 的 resize() 方法。在 resize 方法中,您可以指定 x 轴和 y 轴的值,或者指定图像大小的行数和列数。

导入并读取图像:


import cv2
img = cv2.imread("pyimg.jpg")  

现在使用带有轴值的调整大小方法:


newImg = cv2.resize(img, (0,0), fx=0.75, fy=0.75)
cv2.imshow('Resized Image', newImg)
cv2.waitKey(0)  

结果如下:

现在使用行和列值来调整图像大小:


newImg = cv2.resize(img, (550, 350))
cv2.imshow('Resized Image', newImg)
cv2.waitKey(0)  

我们说我们需要 550 列(宽度)和 350 行(高度)。

结果将是:

 

调整图像对比度

在Python OpenCV模块中,没有专门的函数来调整图像对比度,但是官方文档OpenCV 提出了一个可以同时执行图像亮度和图像对比度的方程。


new_img = a * original_img + b  

这里 a 是 alpha,它定义图像的对比度。如果a大于1,对比度就会更高。

如果a的值在0和1之间(小于1但大于0),则对比度会较低。如果a为1,则图像不会有对比度效果。

b 代表贝塔。 b 的值在 -127 到 +127 之间变化。

要在 Python OpenCV 中实现此方程,您可以使用 addWeighted() 方法。我们使用 addWeighted() 方法,因为它为 24 位彩色图像生成 0 到 255 范围内的输出。

addWeighted()方法的语法如下:


cv2.addWeighted(source_img1, alpha1, source_img2, alpha2, beta)  

此语法将混合两个图像,第一个源图像 (source_img1) 的权重为 alpha1,第二个源图像 (source_img2)。

如果您只想在一张图像中应用对比度,则可以使用 NumPy 添加第二个图像源作为零。

让我们来看一个简单的例子。导入以下模块:


import cv2
import numpy as np  

阅读原图:


img = cv2.imread("pyimg.jpg")  

现在应用对比度。由于没有其他图像,我们将使用 np.zeros 它将创建一个与原始图像具有相同形状和数据类型的数组,但该数组将用零填充。


contrast_img = cv2.addWeighted(img, 2.5, np.zeros(img.shape, img.dtype), 0, 0)
cv2.imshow('Original Image', img)
cv2.imshow('Contrast Image', contrast_img)
cv2.waitKey(0)  

在上面的代码中,亮度设置为 0,因为我们只想应用对比度。

原图与对比图对比如下:

 

使图像模糊

高斯模糊

要使图像模糊,可以使用 OpenCV 的 GaussianBlur() 方法。

GaussianBlur() 使用高斯核。内核的高度和宽度应该是正奇数。

然后你必须分别指定X和Y方向,即sigmaX和sigmaY。如果仅指定其中之一,则两者被视为相同。

考虑以下示例:


import cv2
img = cv2.imread("pyimg.jpg")
blur_image = cv2.GaussianBlur(img, (7,7), 0)
cv2.imshow('Original Image', img)
cv2.imshow('Blur Image', blur_image)
cv2.waitKey(0)  

在上面的代码片段中,实际图像连同内核的高度和宽度以及 X 和 Y 方向一起传递给 GaussianBlur()。

原始图像和模糊图像的对比如下:

 

中值模糊

在中值模糊中,在内核区域内计算图像所有像素的中值。然后将中心值替换为所得中值。当图像中存在椒盐噪声时,使用中值模糊。

要应用中值模糊,可以使用 OpenCV 的中值模糊()方法。

考虑以下示例,图像中存在椒盐噪声:


import cv2
img = cv2.imread("pynoise.png")
blur_image = cv2.medianBlur(img,5)  

这将在图像中应用 50% 的噪声以及中值模糊。现在显示图像:


cv2.imshow('Original Image', img)
cv2.imshow('Blur Image', blur_image)
cv2.waitKey(0)  

结果如下:

原图与模糊处理后的另一张对比图:

 

检测边缘

要检测图像中的边缘,可以使用 cv2 的 Canny() 方法,该方法实现了 Canny 边缘检测器。 Canny 边缘检测器也称为最优检测器.

Canny() 的语法如下:


cv2.Canny(image, minVal, maxVal)  

这里 minVal 和 maxVal 分别是最小和最大强度梯度值。

考虑以下代码:


import cv2
img = cv2.imread("pyimg.jpg")
edge_img = cv2.Canny(img,100,200)
cv2.imshow("Detected Edges", edge_img)
cv2.waitKey(0)  

输出如下:

这是上述代码在另一张图像上的结果:

 

将图像转换为灰度(黑白)

将图像转换为灰度的简单方法是像这样加载它:


img = cv2.imread("pyimg.jpg", 0)  

还有另一种使用 BGR2GRAY 的方法。

要将彩色图像转换为灰度图像,请使用 cv2 模块的 BGR2GRAY 属性。下面的示例对此进行了演示:

导入 cv2 模块:


import cv2  

阅读图像:


img = cv2.imread("pyimg.jpg")  

使用 cv2 模块的 cvtColor() 方法,该方法将原始图像和 COLOR_BGR2GRAY 属性作为参数。将结果图像存储在变量中:


gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  

显示原始图像和灰度图像:


cv2.imshow("Original Image", img)
cv2.imshow("Gray Scale Image", gray_img)
cv2.waitKey(0)  

输出如下:

 

质心(斑点中心)检测

要找到图像的中心,第一步是将原始图像转换为灰度图像。我们可以像之前一样使用 cv2 的 cvtColor() 方法。

下面的代码演示了这一点:


import cv2
img = cv2.imread("py.jpg")
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  

我们读取图像并将其转换为灰度图像。新图像存储在gray_img中。

现在我们必须计算图像的矩。使用cv2的moments()方法。在 moment() 方法中,将传递灰度图像,如下所示:


moment = cv2.moments(gray_img)  

然后我们需要使用上面得到的矩来计算图像中心的 x 和 y 坐标:


X = int(moment ["m10"] / moment["m00"])
Y = int(moment ["m01"] / moment["m00"])  

最后,我们得到了图像的中心。为了突出显示这个中心位置,我们可以使用 Circle 方法,它将在给定半径的给定坐标中创建一个圆。

Circle() 方法采用 img、创建圆的 x 和 y 坐标、大小、我们想要圆的颜色和厚度。


cv2.circle(img, (X, Y), 15, (205, 114, 101), 1)  

在图像上创建圆圈。


cv2.imshow("Center of the Image", img)
cv2.waitKey(0)  

原始图像是:

检测到中心后,我们的图像将如下所示:

 

 

从图像中提取文本 (OCR)

要从图像中提取文本,您可以使用 Google Tesseract-OCR。您可以从这里下载link

然后你应该安装 pytesseract 模块,它是 Tesseract-OCR 的 Python 包装器。


pip install pytesseract  

我们将从中提取文本的图像如下:

现在,让我们将此图像中的文本转换为字符串,并在输出中将文本显示为字符串:

导入 pytesseract 模块:


import pytesseract  

设置Tesseract-OCR可执行文件的路径:


pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract'  

现在使用图像到字符串将图像转换为字符串的方法:


print(pytesseract.image_to_string('pytext.png'))  

输出如下:

效果就像魅力!

 

检测并纠正文本倾斜

在本节中,我们将纠正文本倾斜。

原图如下:

导入模块 cv2、NumPy 并读取图像:


import cv2
import numpy as np
img = cv2.imread("pytext1.png")  

将图像转换为灰度图像:


gray_img=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  

使用反转灰度图像按位非:


gray_img=cv2.bitwise_not(gray_img)  

使用NumPy的column_stack方法选择大于零的像素的x和y坐标:


coordinates = np.column_stack(np.where(gray_img > 0))  

现在我们必须计算倾斜角度。我们将使用最小区域矩形()cv2 的方法返回从 -90 到 0 度的角度范围(其中不包括 0)。


ang=cv2.minAreaRect(coordinates)[-1]  

文本区域的旋转角度将存储在 ang 变量中。现在我们为角度添加一个条件;如果文本区域的角度小于 -45,我们将添加 90 度,否则我们将角度乘以负数以使角度为正。


if ang<-45:
	ang=-(90+ang)
else:
	ang=-ang  

计算文本区域的中心:


height, width = img.shape[:2]
center_img = (width / 2, height / 2)  

现在我们有了文本倾斜的角度,我们将应用 getRotationMatrix2D() 来获取旋转矩阵,然后我们将使用 wrapAffine() 方法来旋转角度(前面已解释)。


rotationMatrix = cv2.getRotationMatrix2D(center, angle, 1.0)

rotated_img = cv2.warpAffine(img, rotationMatrix, (width, height), borderMode = cv2.BORDER_REFLECT)  

显示旋转后的图像:


cv2.imshow("Rotated Image", rotated_img)

cv2.waitKey(0)  

 

颜色检测

让我们检测图像中的绿色:

导入用于图像的模块 cv2 和用于图像数组的 NumPy:


import cv2
import numpy as np  

读取图像并使用 cvtColor() 将其转换为 HSV:


img = cv2.imread("pydetect.png")
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)  

显示图像:


cv2.imshow("HSV Image", hsv_img)  

现在为较低的绿色值和较高的绿色值创建一个 NumPy 数组:


lower_green = np.array([34, 177, 76])
upper_green = np.array([255, 255, 255])  

使用 cv2 的 inRange() 方法检查给定的图像数组元素是否位于上下边界的数组值之间:


masking = cv2.inRange(hsv_img, lower_green, upper_green)  

这将检测绿色。

最后,显示原始图像和结果图像:


cv2.imshow("Original Image", img)  

cv2.imshow("Green Color detection", masking)
cv2.waitKey(0)  

 

减少噪音

为了减少图像中的噪声,OpenCV 提供了以下方法:

  1. fastNlMeansDenoising():从灰度图像中去除噪声
  2. fastNlMeansDenoisingColored():从彩色图像中去除噪声
  3. fastNlMeansDenoisingMulti():去除灰度图像帧(灰度视频)中的噪声
  4. fastNlMeansDenoisingColoredMulti():与 3 相同,但适用于彩色帧

让我们在示例中使用 fastNlMeansDenoisingColored() :

导入cv2模块并读取图像:


import cv2
img = cv2.imread("pyn1.png")  

应用去噪函数,该函数分别采用原始图像 (src)、目的地(在存储结果时没有保留)、滤波器强度、去除有色噪声的图像值(通常等于滤波器强度或 10) ),用于计算权重的模板块大小(以像素为单位)应始终为奇数(建议大小等于 7),以及以像素为单位的窗口大小以计算给定像素的平均值。


result = cv2.fastNlMeansDenoisingColored(img,None,20,10,7,21)  

显示原始图像和去噪图像:


cv2.imshow("Original Image", img)
cv2.imshow("Denoised Image", result)
cv2.waitKey(0)  

输出将是:

 

获取图像轮廓

轮廓是图像中连接在一起的曲线。曲线连接图像中的连续点。轮廓的目的是用来检测物体。

我们获取轮廓的原始图像如下:

考虑以下代码,我们使用 findContours() 方法来查找图像中的轮廓:

导入cv2模块:


import cv2  

读取图像并将其转换为灰度图像:


img = cv2.imread('py1.jpg')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  

求阈值:


retval, thresh = cv2.threshold(gray_img, 127, 255, 0)  

使用 findContours() 获取图像(我们在此处传递了阈值)和一些属性。看findContours() 官方.


img_contours, _ = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)  

使用drawContours()方法在图像上绘制轮廓:


cv2.drawContours(img, img_contours, -1, (0, 255, 0))  

显示图像:


cv2.imshow('Image Contours', img)
cv2.waitKey(0)  

结果将是:

 

从图像中删除背景

要从图像中删除背景,我们将找到轮廓来检测主要对象的边缘,并为背景创建一个带有 np.zeros 的掩模,然后使用按位与操作员。

考虑下面的例子:

导入模块(NumPy 和 cv2):


import cv2
import numpy as np  

读取图像并将图像转换为灰度图像:


img = cv2.imread("py.jpg")

gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  

求阈值:


_, thresh = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)  

在threshold()方法中,最后一个参数定义阈值的样式。请参阅官方文档OpenCV 阈值.

找到图像轮廓:


img_contours = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)[-2]  

对轮廓进行排序:


img_contours = sorted(img_contours, key=cv2.contourArea)
for i in img_contours:
    if cv2.contourArea(i) > 100:
        break  

使用 np.zeros 生成掩码:


mask = np.zeros(img.shape[:2], np.uint8)  

绘制轮廓:


cv2.drawContours(mask, [i],-1, 255, -1)  

应用按位与运算符:


new_img = cv2.bitwise_and(img, img, mask=mask)  

显示原始图像:


cv2.imshow("Original Image", img)  

显示结果图像:


cv2.imshow("Image with background removed", new_img)
cv2.waitKey(0)  

 

如您所见,使用 OpenCV 时图像处理很有趣。我希望您觉得本教程有用。继续回来。

谢谢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python图像处理教程(使用OpenCV) 的相关文章

  • x 或 y:可接受的习语,还是混淆?

    我必须从可能为 None 的变量中提取值 并考虑一些默认值 我首先写了这段代码 if self maxTiles is None maxX maxY 2 2 else maxX maxY self maxTiles 然后我意识到我可以将其缩
  • 我正在用 python 编写一个电报机器人

    我想通过Python编写一个电报机器人 但它不起作用 import telebot bot telebot TeleBot my token bot message handler content types text def sendin
  • AWS Lambda 错误:无法导入模块“function_name”:没有名为“module._module”的模块

    阅读后请特别查看屏幕截图 我正在 AWS Lambda 上部署一个使用该包的 python 脚本impyla它依赖于包bitarray from impala dbapi import connect 我的Python文件名为authori
  • from __future__ importabsolute_import 实际上做了什么?

    I have answered https stackoverflow com a 22679558 2588818一个关于Python中绝对导入的问题 我认为我通过阅读理解了这个问题Python 2 5 变更日志 https docs p
  • Python:我可以修改元组吗?

    我有一个 2 D 元组 实际上我以为 它是一个列表 但错误说它是一个元组 但无论如何 该元组的形式为 浮点数 val prod id 现在我有一个字典 其中包含 key gt prod id 和 value prod name 现在 我想将
  • 将 python scikit learn 模型导出到 pmml

    我想将 python scikit learn 模型导出到 PMML 中 什么 python 包最适合 我读到Augustus https github com opendatagroup augustus 但我找不到任何使用 scikit
  • Python lmfit:拟合 2D 模型

    我正在尝试将二维高斯拟合到一些灰度图像数据 该数据由一个二维数组给出 lmfit 库实现了一个易于使用的模型类 它应该能够做到这一点 不幸的是文档 http lmfit github io lmfit py model html http
  • 将 pandas DataFrame 与 Series 进行比较

    我看过this https stackoverflow com questions 26285661 working with comparing dataframes and series and generating new dataf
  • 如何使用增量值向 Pyspark 中的 DataFrame 添加列?

    我有一个名为 df 的 DataFrame 如下所示 Atr1 Atr2 Atr3 A A A B A A C A A 我想向其中添加一个具有增量值的新列并获取以下更新的 DataFrame Atr1 Atr2 Atr3
  • 在 Django 1.9 中使用信号

    在 Django 1 8 中 我能够使用信号执行以下操作 一切顺利 init py from signals import 信号 py receiver pre save sender Comment def process hashtag
  • 传递宏作为参数 jinja dbt

    Today date milliseconds 是我在项目中的宏 如何将此宏重定向为参数 以便默认情况下我可以在 yml 中编写另一个宏 test valid date model column name exclude condition
  • Kivy:滚动缩放

    有没有办法在桌面 kivy 应用程序上放大图像 例如使用鼠标滚轮缩放 这里似乎讨论过 https github com kivy kivy issues 3563 https github com kivy kivy issues 3563
  • 如何使用Django模板作为组件?

    我有 5 个模板 index html detail html tag html login html register html and a 基本 html 所有 5 个模板都会扩展基本 html 索引 html 详细信息 html 标签
  • 帮助我在 Python 中实现反向传播

    EDIT2 新的训练集 Inputs 0 0 0 0 0 0 1 0 0 0 2 0 0 0 3 0 0 0 4 0 1 0 0 0 1 0 1 0 1 0 2 0 1 0 3 0 1 0 4 0 2 0 0 0 2 0 1 0 2 0 2
  • 如何在Python中检查元组是否包含元素?

    我试图找到可用的方法 但找不到 没有contains 我应该使用index 我只想知道该项目是否存在 不需要它的索引 You use in if element in thetuple whatever you want to do
  • 保存 Jupyter Notebook,并显示 Plotly Express 小部件

    我有一个 Jupyter 笔记本 python 我使用plotlyexpress 在笔记本中绘图以进行分析 我想与非编码人员共享此笔记本 并让交互式视觉效果仍然可用 但它似乎不起作用 我尝试以下此处提出的建议 https community
  • 交响二阶颂歌

    我有一个简单的二阶 ODE 的齐次解 当我尝试使用 Sympy 求解初始值时 它返回相同的解 它应该替代 y 0 和 y 0 并产生一个没有常数的解 但事实并非如此 这是建立方程的代码 它是一个弹簧平衡方程 k 弹簧常数 m 质量 我在其他
  • 安装 confluence-kafka 时“文件名或扩展名太长”?

    我在使用 pip install confluence kafka 安装 confluence kafka 时遇到一些问题 但我收到此错误 文件名或扩展名太长 详细信息如下 Collecting confluent kafka Using
  • Python list.extend() 是保序的吗?

    我想知道扩展函数是否保留两个列表中的顺序 gt gt list 1 2 3 gt gt list extend 4 5 gt gt list 1 2 3 4 5 扩展总是这样工作吗 Yes list extend just extends给
  • 预提交钩子 git 错误

    我正在尝试在 python 中执行预提交 git hook 以检查文件的行长度是否小于 80 个字符 但是我收到没有此类文件 目录的错误 我在 fedora 上并设置了 usr bin python help 将不胜感激 usr bin e

随机推荐

  • 如何在 Ubuntu 18.04 上安装 Yarn

    Yarn 是一个与 npm 兼容的 JavaScript 包管理器 可帮助您自动执行安装 更新 配置和删除 npm 包的过程 它的创建是为了解决 npm 的一系列问题 例如通过并行操作加快软件包安装过程并减少与网络连接相关的错误 在本教程中
  • 如何在 CentOS 7 上安装 Python 3

    本教程将指导您使用 Software Collections SCL 以及发行版默认 Python 版本 2 7 在 CentOS 7 系统上安装 Python 3 我们还将向您展示如何创建 Python 虚拟环境 Python 是世界上最
  • 如何在 Debian 10 Linux 上安装 Vagrant

    Vagrant是一个用于构建和管理虚拟机环境的开源命令行工具 默认情况下 Vagrant 可以在 VirtualBox Hyper V 之上配置计算机 和码头工人 其他提供商如 Libvirt KVM VMware 和 AWS 可以通过 V
  • Linux 中的 Wget 命令及示例

    GNU Wget 是一个用于从网络下载文件的命令行实用程序 使用 Wget 您可以使用 HTTP HTTPS 和 FTP 协议下载文件 Wget 提供了许多选项 允许您下载多个文件 恢复下载 限制带宽 递归下载 后台下载 镜像网站等等 本文
  • 如何在 Ubuntu 20.04 上安装 Odoo 15

    Odoo 是一款流行的开源商业应用程序套件 可帮助公司管理和运营其业务 它包括广泛的应用程序 例如 CRM 电子商务 网站构建器 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo根据使用案例和可用技术 可以以不同的方
  • 如何在 Debian 10 Linux 上安装 Node.js 和 npm

    Node js 是一个基于 Chrome JavaScript 构建的跨平台 JavaScript 运行时环境 旨在在服务器端执行 JavaScript 代码 使用 Node js 您可以构建可扩展的网络应用程序 npm 是 Node js
  • 如何在 Debian 9 上安装 Java

    在本教程中 我们将逐步介绍在 Debian 9 上安装 Java Java 是用于构建不同类型的应用程序和系统的最流行的编程语言之一 用 Java 开发的应用程序具有可扩展性 灵活性和可维护性 有两种不同的 Java 包 Java 运行时环
  • 如何在 Debian 9 上安装和使用 PHP Composer

    Composer是 PHP 的依赖管理器 类似于Node js 的 npm or Python 的点子 Composer 将提取您的项目所依赖的所有必需的 PHP 包并为您管理它们 本教程提供了在 Debian 9 系统上安装 Compos
  • 如何列出 CentOS 上已安装的软件包

    在本教程中 我们将向您展示如何列出和过滤 CentOS 上已安装的软件包 当您需要在另一台计算机上安装相同的软件包或想要重新安装系统时 了解如何列出 CentOS 系统上已安装的软件包会很有帮助 我们还将向您展示如何检查是否安装了特定的软件
  • 如何检查您的 CentOS 版本

    当您第一次登录 CentOS 计算机时 在进行任何工作之前 您可能需要检查系统上运行的 CentOS 版本 在本教程中 我们将展示几个不同的命令 了解如何检查系统上安装的 CentOS 版本 截至撰写本文时 CentOS Linux 拥有三
  • 如何在 CentOS 8 上添加交换空间

    交换空间是磁盘上的空间 当物理 RAM 内存已满时使用 当 Linux 系统耗尽 RAM 时 非活动页面将从 RAM 移至交换空间 交换空间可以采用专用交换分区或交换文件的形式 通常 在虚拟机上运行 CentOS 时 不存在交换分区 因此唯
  • 配置 Magento 2 在 CentOS 7 上使用 Varnish

    页面速度或加载时间对于在线商店的成功至关重要 加载时间是加载特定页面上的内容所需的总时间 加载时间越长 转化率越低 这也是谷歌考虑确定搜索引擎排名的最重要因素之一 在第一篇文章中 我们在 CentOS 7 机器上安装了 Magento 2
  • 自动启动 wampserver 在 Windows 10 上自动启动

    在向您展示如何自动启动 wampserver 之前 我先简单介绍一下 Wampserver 是 Windows 平台上最好的 Web 开发堆栈之一 与 xampp 相比 我更喜欢它 因为它有方便的托盘菜单 可以让我访问任何配置 您可以从此网
  • 使用 Sed 命令删除行:Linux 文本删除教程

    Using sed命令从文件或流中删除行是常见操作 使用删除行的基本语法sed如下 sed pattern to match d filename Here pattern to match是您要在文件的每一行中匹配的模式 如果一行包含指定
  • 使用 to_sql 将 Python Pandas DataFrame 导出到 SQL

    The to sql函数允许您将存储在 DataFrame 中的记录写入 SQL 数据库 通过使用 SQLAlchemy 可以使用该库支持的任何数据库 在接下来的部分中 我们将更深入地研究此功能并探索更多功能 目录 hide 1 基本语法和
  • Python NumPy arange() 教程

    NumPyarange 函数用于生成给定区间内的值序列 您可以将其视为数字范围生成器 它允许您创建一个 NumPy 数组 其值在指定范围内均匀分布 它提供了更多功能 例如使用浮点数的能力以及显式定义数组中包含的值的间隔的灵活性 在本教程中
  • Python 切片初学者指南

    在本教程中 您将了解切片在 Python 中的工作原理以及如何使用它来操作字符串 列表和元组等序列 我们还将演示 Python 切片对象如何创建可用于对序列进行切片的切片 这些知识将为您提供一个强大的工具来访问序列中的多个项目 以删除多个项
  • Python 中非常规颜色指南

    如果您一直在使用 Python 进行编程 那么您很可能至少遇到过一个提供处理颜色表示和自定义功能的库 From 图像处理从数据可视化到Web应用程序开发 你会发现颜色的使用无处不在 事实上 大多数用于最先进计算机视觉任务的现代深度神经网络都
  • 在 Pandas 中使用 loc 和 MultiIndex DataFrame

    在之前的教程中 我们讨论了locproperty 一种基于标签的数据选择方法 但是您是否知道在使用 loc 处理多级索引时可以优化您的选择 本教程将揭示在 Pandas 中使用 loc 和 MultiIndex DataFrame 的强大功
  • Python图像处理教程(使用OpenCV)

    在本教程中 您将学习如何使用 OpenCV 库在 Python 中处理图像 OpenCV 是一个用于实时图像处理的免费开源库 它用于处理图像 视频甚至直播 但在本教程中 我们将仅将处理图像作为第一步 在开始之前 我们先安装 OpenCV 目