From 1fdd01a75d3602a1a7cb502e8b7188048ddc5041 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 19 Aug 2021 11:33:35 +0800 Subject: [PATCH 1/2] PRF @geekpi --- ...802 Use OpenCV on Fedora Linux - part 1.md | 64 +++++++++---------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/translated/tech/20210802 Use OpenCV on Fedora Linux - part 1.md b/translated/tech/20210802 Use OpenCV on Fedora Linux - part 1.md index 8e5c9a5867..c1f00cc484 100644 --- a/translated/tech/20210802 Use OpenCV on Fedora Linux - part 1.md +++ b/translated/tech/20210802 Use OpenCV on Fedora Linux - part 1.md @@ -3,36 +3,40 @@ [#]: author: (Onuralp SEZER https://fedoramagazine.org/author/thunderbirdtr/) [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) -在 Fedora Linux 上使用 OpenCV ‒ 第一部分 +在 Fedora Linux 上使用 OpenCV(一) ====== ![][1] -封面图片选自[文森特-凡高][2]的《星空》,公共领域,通过维基共享资源发布 +*封面图片选自[文森特·梵高][2]的《星空》,公共领域,通过维基共享资源发布* -技术世界每天都在变化,对计算机视觉、人工智能和机器学习的需求也在增加。让计算机和手机能够看到周围环境的技术被称为[计算机视觉][3]。重新创造人眼的工作始于 50 年代。从那时起,计算机视觉技术有了长足的发展。计算机视觉已经通过不同的应用进入了我们的手机。这篇文章将介绍 Fedora Linux 上的[OpenCV][4]。 +技术世界每天都在变化,对计算机视觉、人工智能和机器学习的需求也在增加。让计算机和手机能够看到周围环境的技术被称为 [计算机视觉][3]。这个重新创造人眼的工作始于 50 年代。从那时起,计算机视觉技术有了长足的发展。计算机视觉已经通过不同的应用进入了我们的手机。这篇文章将介绍 Fedora Linux 上的 [OpenCV][4]。 -### **什么是 OpenCV?** +### 什么是 OpenCV? -> OpenCV (开源计算机视觉库)是一个开源的计算机视觉和机器学习软件库。OpenCV 的建立是为了给计算机视觉应用提供一个通用的基础设施,并加速机器感知在商业产品中的应用。它有超过 2500 种优化算法,其中包括一套全面的经典和最先进的计算机视觉和机器学习算法。这些算法可用于检测和识别人脸,识别物体,对视频中的人类行为进行分类,并建立标记,将其与增强现实叠加等等。 +> OpenCV(开源计算机视觉库Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。OpenCV 的建立是为了给计算机视觉应用提供一个通用的基础设施,并加速机器感知在商业产品中的应用。它有超过 2500 种优化后的算法,其中包括一套全面的经典和最先进的计算机视觉和机器学习算法。这些算法可用于检测和识别人脸、识别物体、对视频中的人类行为进行分类,并建立标记,将其与增强现实叠加等等。 > > [opencv.org – about][5] ### 在 Fedora Linux 上安装 OpenCV -要开始使用 OpenCV,请从 Fedora Linux 仓库中安装它。 +要开始使用 OpenCV,请从 Fedora Linux 仓库中安装它: ``` $ sudo dnf install opencv opencv-contrib opencv-doc python3-opencv python3-matplotlib python3-numpy ``` -**注意:**在 Fedora Silverblue 或 CoreOs 上,Python 3.9 是核心提交的一部分。用以下方法安装 OpenCV 和所需工具:_rpm-ostree install opencv opencv-doc python3-opencv python3-matplotlib python3-numpy_。 +**注意:** 在 Fedora Silverblue 或 CoreOS 上,Python 3.9 是核心提交的一部分。用以下方法安装 OpenCV 和所需工具: -接下来,在终端输入以下命令,以验证 OpenCV 是否已经安装(用户输入的内容以粗体显示)。 +``` +rpm-ostree install opencv opencv-doc python3-opencv python3-matplotlib python3-numpy +``` + +接下来,在终端输入以下命令,以验证 OpenCV 是否已经安装: ``` $ python @@ -45,20 +49,20 @@ Type "help", "copyright", "credits" or "license" for more information. >>> exit() ``` -当你输入 _print_ 命令时,应该显示当前的 OpenCV 版本,如上图所示。这表明 OpenCV 和 Python-OpenCV 库已经成功安装。 +当你输入 `print` 命令时,应该显示当前的 OpenCV 版本,如上图所示。这表明 OpenCV 和 Python-OpenCV 库已经成功安装。 -此外,如果你想用 Jupyter Notebook 做笔记和写代码,并了解更多关于数据科学工具的信息,请查看早期的 Fedora Magazine 文章:[_Fedora 中的 Jupyter 和数据科学_][6]。 +此外,如果你想用 Jupyter Notebook 做笔记和写代码,并了解更多关于数据科学工具的信息,请查看早期的 Fedora Magazine 文章:[Fedora 中的 Jupyter 和数据科学][6]。 ### 开始使用 OpenCV -安装完成后,使用 Python 和 OpenCV 库加载一个样本图像(按 **S** 键以 _png_ 格式保存图像的副本并完成程序): +安装完成后,使用 Python 和 OpenCV 库加载一个样本图像(按 `S` 键以 png 格式保存图像的副本并完成程序): ``` $ cp /usr/share/opencv4/samples/data/starry_night.jpg . $ python starry_night.py ``` -_starry_night.py_ 的内容: +`starry_night.py` 的内容: ``` import cv2 as cv @@ -74,7 +78,7 @@ if k == ord("s"): ![][7] -通过在 _cv.imread_ 函数中添加参数 **0**,对图像进行灰度处理,如下所示。 +通过在 `cv.imread` 函数中添加参数 `0`,对图像进行灰度处理,如下所示。 ``` img = cv.imread(cv.samples.findFile("starry_night.jpg"),0) @@ -82,13 +86,11 @@ img = cv.imread(cv.samples.findFile("starry_night.jpg"),0) ![][8] -这些是一些可以用于 _cv.imread_ 函数的第二个参数的替代值。 - - * **cv2.IMREAD_GRAYSCALE** 或 **0:** 以灰度模式加载图像。 - * **cv2.IMREAD_COLOR** 或 **1:** 以彩色模式载入图像。图像中的任何透明度将被移除。这是默认的。 - * **cv2.IMREAD_UNCHANGED** 或 **-1:**载入未经修改的图像。包括 alpha 通道。 - +这些是一些可以用于 `cv.imread` 函数的第二个参数的替代值: + * `cv2.IMREAD_GRAYSCALE` 或 `0`:以灰度模式加载图像。 + * `cv2.IMREAD_COLOR** 或 `1`:以彩色模式载入图像。图像中的任何透明度将被移除。这是默认的。 + * `cv2.IMREAD_UNCHANGED** 或 `-1`:载入未经修改的图像。包括 alpha 通道。 #### 使用 OpenCV 显示图像属性 @@ -121,10 +123,8 @@ Image 2D numpy array ... ``` - * **img.shape:** 返回一个行数、列数和通道数的元组(如果是彩色图像)。 - * **img.dtype:** 返回图像的数据类型。 - - + * `img.shape`:返回一个行数、列数和通道数的元组(如果是彩色图像)。 + * `img.dtype`:返回图像的数据类型。 接下来用 Matplotlib 显示图像: @@ -140,7 +140,7 @@ plt.show() #### 发生了什么? -该图像是作为灰度图像读入的,但是当使用 Matplotlib 的 _imshow_ 函数时,它不一定会以灰度显示。这是因为 _imshow_ 函数默认使用不同的颜色映射。要指定使用灰度颜色映射,请将 _imshow_ 函数的第二个参数设置为 _cmap='gray'_,如下所示。 +该图像是作为灰度图像读入的,但是当使用 Matplotlib 的 `imshow` 函数时,它不一定会以灰度显示。这是因为 `imshow` 函数默认使用不同的颜色映射。要指定使用灰度颜色映射,请将 `imshow` 函数的第二个参数设置为 `cmap='gray'`,如下所示: ``` plt.imshow(img,cmap='gray') @@ -192,16 +192,14 @@ plt.show() ![][12] - * **cv2.split:**将一个多通道数组分割成几个单通道数组。 - * **cv2.merge:** 将几个数组合并成一个多通道数组。所有的输入矩阵必须具有相同的大小。 + * `cv2.split`:将一个多通道数组分割成几个单通道数组。 + * `cv2.merge`:将几个数组合并成一个多通道数组。所有的输入矩阵必须具有相同的大小。 - - -**注意:**白色较多的图像具有较高的颜色密度。相反,黑色较多的图像,其颜色密度较低。在上面的例子中,红色的密度是最低的。 +**注意:** 白色较多的图像具有较高的颜色密度。相反,黑色较多的图像,其颜色密度较低。在上面的例子中,红色的密度是最低的。 #### 转换到不同的色彩空间 -_cv2.cvtColor_ 函数将一个输入图像从一个颜色空间转换到另一个颜色空间。在 RGB 和 BGR 色彩空间之间转换时,应明确指定通道的顺序(_RGB2BGR_ 或 _BGR2RGB_)。**注意,OpenCV 中的默认颜色格式通常被称为 RGB,但它实际上是 BGR(字节是相反的)。**因此,标准(24 位)彩色图像的第一个字节将是一个 8 位蓝色分量,第二个字节是绿色,第三个字节是红色。然后第四、第五和第六个字节将是第二个像素(蓝色,然后是绿色,然后是红色),以此类推。 +`cv2.cvtColor` 函数将一个输入图像从一个颜色空间转换到另一个颜色空间。在 RGB 和 BGR 色彩空间之间转换时,应明确指定通道的顺序(`RGB2BGR` 或 `BGR2RGB`)。**注意,OpenCV 中的默认颜色格式通常被称为 RGB,但它实际上是 BGR(字节是相反的)。** 因此,标准(24 位)彩色图像的第一个字节将是一个 8 位蓝色分量,第二个字节是绿色,第三个字节是红色。然后第四、第五和第六个字节将是第二个像素(蓝色、然后是绿色,然后是红色),以此类推。 ``` import cv2 as cv @@ -218,7 +216,7 @@ plt.show() 关于 OpenCV 的更多细节可以在[在线文档][14]中找到。 -谢谢。 +感谢阅读。 -------------------------------------------------------------------------------- @@ -227,7 +225,7 @@ via: https://fedoramagazine.org/use-opencv-on-fedora-linux-part-1/ 作者:[Onuralp SEZER][a] 选题:[lujun9972][b] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From dfd148ed80b47acf350663b8f5d1b0785f18220e Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 19 Aug 2021 11:34:34 +0800 Subject: [PATCH 2/2] PUB @geekpi https://linux.cn/article-13698-1.html --- .../20210802 Use OpenCV on Fedora Linux - part 1.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20210802 Use OpenCV on Fedora Linux - part 1.md (99%) diff --git a/translated/tech/20210802 Use OpenCV on Fedora Linux - part 1.md b/published/20210802 Use OpenCV on Fedora Linux - part 1.md similarity index 99% rename from translated/tech/20210802 Use OpenCV on Fedora Linux - part 1.md rename to published/20210802 Use OpenCV on Fedora Linux - part 1.md index c1f00cc484..b1bb746623 100644 --- a/translated/tech/20210802 Use OpenCV on Fedora Linux - part 1.md +++ b/published/20210802 Use OpenCV on Fedora Linux - part 1.md @@ -4,8 +4,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-13698-1.html) 在 Fedora Linux 上使用 OpenCV(一) ======