成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在 Fedora Linux 上使用 OpenCV(一)

系統 Linux
讓計算機和手機能夠看到周圍環境的技術被稱為 計算機視覺。這個重新創造人眼的工作始于 50 年代。從那時起,計算機視覺技術有了長足的發展。計算機視覺已經通過不同的應用進入了我們的手機。這篇文章將介紹 Fedora Linux 上的 OpenCV。

封面圖片選自文森特·梵高的《星空》,公共領域,通過維基共享資源發布

技術世界每天都在變化,對計算機視覺、人工智能和機器學習的需求也在增加。讓計算機和手機能夠看到周圍環境的技術被稱為 計算機視覺。這個重新創造人眼的工作始于 50 年代。從那時起,計算機視覺技術有了長足的發展。計算機視覺已經通過不同的應用進入了我們的手機。這篇文章將介紹 Fedora Linux 上的 OpenCV。

什么是 OpenCV?

OpenCV(開源計算機視覺庫Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫。OpenCV 的建立是為了給計算機視覺應用提供一個通用的基礎設施,并加速機器感知在商業產品中的應用。它有超過 2500 種優化后的算法,其中包括一套全面的經典和最先進的計算機視覺和機器學習算法。這些算法可用于檢測和識別人臉、識別物體、對視頻中的人類行為進行分類,并建立標記,將其與增強現實疊加等等。

opencv.org – about

在 Fedora Linux 上安裝 OpenCV

要開始使用 OpenCV,請從 Fedora Linux 倉庫中安裝它:

  1. $ sudo dnf install opencv opencv-contrib opencv-doc python3-opencv python3-matplotlib python3-numpy

注意: 在 Fedora Silverblue 或 CoreOS 上,Python 3.9 是核心提交的一部分。用以下方法安裝 OpenCV 和所需工具:

  1. rpm-ostree install opencv opencv-doc python3-opencv python3-matplotlib python3-numpy

接下來,在終端輸入以下命令,以驗證 OpenCV 是否已經安裝:

  1. $ python
  2. Python 3.9.6 (default, Jul 16 2021, 00:00:00)
  3. [GCC 11.1.1 20210531 (Red Hat 11.1.1-3)] on linux
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> import cv2 as cv
  6. >>> print( cv.__version__ )
  7. 4.5.2
  8. >>> exit()

當你輸入 print 命令時,應該顯示當前的 OpenCV 版本,如上圖所示。這表明 OpenCV 和 Python-OpenCV 庫已經成功安裝。

此外,如果你想用 Jupyter Notebook 做筆記和寫代碼,并了解更多關于數據科學工具的信息,請查看早期的 Fedora Magazine 文章:Fedora 中的 Jupyter 和數據科學。

開始使用 OpenCV

安裝完成后,使用 Python 和 OpenCV 庫加載一個樣本圖像(按 S 鍵以 png 格式保存圖像的副本并完成程序):

  1. $ cp /usr/share/opencv4/samples/data/starry_night.jpg .
  2. $ python starry_night.py

starry_night.py 的內容:

  1. import cv2 as cv
  2. import sys
  3. img = cv.imread(cv.samples.findFile("starry_night.jpg"))
  4. if img is None:
  5. sys.exit("Could not read the image.")
  6. cv.imshow("Display window", img)
  7. k = cv.waitKey(0)
  8. if k == ord("s"):
  9. cv.imwrite("starry_night.png", img)

 

通過在 cv.imread 函數中添加參數 0,對圖像進行灰度處理,如下所示。

  1. img = cv.imread(cv.samples.findFile("starry_night.jpg"),0)

 

這些是一些可以用于 cv.imread 函數的第二個參數的替代值:

  • cv2.IMREAD_GRAYSCALE 或 0:以灰度模式加載圖像。
  • cv2.IMREAD_COLOR** 或1`:以彩色模式載入圖像。圖像中的任何透明度將被移除。這是默認的。
  • cv2.IMREAD_UNCHANGED** 或-1`:載入未經修改的圖像。包括 alpha 通道。

使用 OpenCV 顯示圖像屬性

圖像屬性包括行、列和通道的數量、圖像數據的類型、像素的數量等等。假設你想訪問圖像的形狀和它的數據類型。你可以這樣做:

  1. import cv2 as cv
  2.  
  3. img = cv.imread(cv.samples.findFile("starry_night.jpg"))
  4. print("Image size is", img.shape)
  5. print("Data type of image is", img.dtype)
  6.  
  7. Image size is (600, 752, 3)
  8. Data type of image is uint8
  9.  
  10. print(f"Image 2D numpy array \n {img}")
  11.  
  12. Image 2D numpy array
  13. [[[0 0 0]
  14. [0 0 0]
  15. [0 0 0]
  16. ...
  17. [0 0 0]
  18. [0 0 0]
  19. [0 0 0]]
  20.  
  21. [[0 0 0]
  22. [0 0 0]
  23. [0 0 0]
  24. ...
  • img.shape:返回一個行數、列數和通道數的元組(如果是彩色圖像)。
  • img.dtype:返回圖像的數據類型。

接下來用 Matplotlib 顯示圖像:

  1. import cv2 as cv
  2. import matplotlib.pyplot as plt
  3. img = cv.imread(cv.samples.findFile("starry_night.jpg"),0)
  4. plt.imshow(img)
  5. plt.show()

 

發生了什么?

該圖像是作為灰度圖像讀入的,但是當使用 Matplotlib 的 imshow 函數時,它不一定會以灰度顯示。這是因為 imshow 函數默認使用不同的顏色映射。要指定使用灰度顏色映射,請將 imshow 函數的第二個參數設置為 cmap='gray',如下所示:

  1. plt.imshow(img,cmap='gray')

 

這個問題在以彩色模式打開圖片時也會發生,因為 Matplotlib 期望圖片為 RGB(紅、綠、藍)格式,而 OpenCV 則以 BGR(藍、綠、紅)格式存儲圖片。為了正確顯示,你需要將 BGR 圖像的通道反轉。

  1. import cv2 as cv
  2. import matplotlib.pyplot as plt
  3. img = cv.imread(cv.samples.findFile("starry_night.jpg"),cv.IMREAD_COLOR)
  4. fig, (ax1, ax2) = plt.subplots(1,2)
  5. ax1.imshow(img)
  6. ax1.set_title('BGR Colormap')
  7. ax2.imshow(img[:,:,::-1])
  8. ax2.set_title('Reversed BGR Colormap(RGB)')
  9. plt.show()

 

分割和合并顏色通道

  1. import cv2 as cv
  2. import matplotlib.pyplot as plt
  3.  
  4. img = cv.imread(cv.samples.findFile("starry_night.jpg"),cv.IMREAD_COLOR)
  5. b,g,r = cv.split(img)
  6.  
  7. fig,ax = plt.subplots(2,2)
  8.  
  9. ax[0,0].imshow(r,cmap='gray')
  10. ax[0,0].set_title("Red Channel");
  11. ax[0,1].imshow(g,cmap='gray')
  12. ax[0,1].set_title("Green Channel");
  13. ax[1,0].imshow(b,cmap='gray')
  14. ax[1,0].set_title("Blue Channel");
  15.  
  16. # Merge the individual channels into a BGR image
  17. imgMerged = cv.merge((b,g,r))
  18. # Show the merged output
  19. ax[1,1].imshow(imgMerged[:,:,::-1])
  20. ax[1,1].set_title("Merged Output");
  21. plt.show()

 

  • cv2.split:將一個多通道數組分割成幾個單通道數組。
  • cv2.merge:將幾個數組合并成一個多通道數組。所有的輸入矩陣必須具有相同的大小。

注意: 白色較多的圖像具有較高的顏色密度。相反,黑色較多的圖像,其顏色密度較低。在上面的例子中,紅色的密度是最低的。

轉換到不同的色彩空間

cv2.cvtColor 函數將一個輸入圖像從一個顏色空間轉換到另一個顏色空間。在 RGB 和 BGR 色彩空間之間轉換時,應明確指定通道的順序(RGB2BGR 或 BGR2RGB)。注意,OpenCV 中的默認顏色格式通常被稱為 RGB,但它實際上是 BGR(字節是相反的)。 因此,標準(24 位)彩色圖像的第一個字節將是一個 8 位藍色分量,第二個字節是綠色,第三個字節是紅色。然后第四、第五和第六個字節將是第二個像素(藍色、然后是綠色,然后是紅色),以此類推。

  1. import cv2 as cv
  2. import matplotlib.pyplot as plt
  3. img = cv.imread(cv.samples.findFile("starry_night.jpg"),cv.IMREAD_COLOR)
  4. img_rgb = cv.cvtColor(img, cv.COLOR_BGR2RGB)
  5. plt.imshow(img_rgb)
  6. plt.show()

 

更多信息

關于 OpenCV 的更多細節可以在在線文檔中找到。

感謝閱讀。 

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2022-09-22 16:21:43

開源GUI 應用

2022-03-21 21:28:00

Homebrew包管理器Linux

2022-12-03 16:02:51

2019-10-29 16:30:10

FedoraSSH端口Linux

2011-07-07 16:00:15

iPhone OpenCV

2019-12-02 15:23:34

FedoraLinuxGIMP

2023-08-14 09:43:36

2020-07-20 18:30:44

Fedora 32DockerLinux

2019-12-05 10:30:17

LinuxMultitail

2011-03-22 10:06:27

LinuxZFS

2021-07-25 10:34:17

FedoraPodmanLinux

2020-08-16 09:00:15

樹莓派FedoraLinux

2019-11-11 15:10:37

FedoraLinuxbash

2021-10-03 14:47:26

Fedora CoreGitHub Acti運行器

2021-08-18 11:19:25

FedoraLinuxJava

2021-11-28 06:33:24

Discord消息收發應用 Linux

2018-11-26 16:00:24

FedoraLinuxWindows游戲

2023-11-21 10:25:28

LinuxFlathubFlatpak

2023-12-11 10:25:02

FlatpakLinux

2020-12-28 06:44:45

FedoraLinux RPM文件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色婷婷综合久久久中文字幕 | 日本高清视频在线播放 | 一级毛片免费看 | 国产精品三级久久久久久电影 | 色婷婷久久久亚洲一区二区三区 | 国产一区二区在线播放 | 高清亚洲 | 日韩成人在线播放 | av中文字幕网站 | 中文字幕亚洲欧美 | a成人| av在线播放不卡 | 365夜爽爽欧美性午夜免费视频 | 婷婷久久综合 | 精品免费视频 | 欧美日本在线观看 | 欧美日韩一区二区电影 | 中文在线视频观看 | 亚洲日本中文 | 99精品观看| 精品国产99 | 日韩免费一二三区 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 久久久久国产精品午夜一区 | 欧美激情a∨在线视频播放 成人免费共享视频 | 亚洲精选久久 | 国产在线播 | 国产在线一级片 | 成人深夜福利 | 在线亚洲人成电影网站色www | 成人动漫一区二区 | 精品久久国产 | 九九热精品在线 | 成人性视频免费网站 | 免费一级黄色电影 | 日韩伦理电影免费在线观看 | 亚洲精品在线免费观看视频 | www.久久艹| 亚洲精品一区在线观看 | 免费一级黄色 | 男女羞羞视频在线 |