成人免费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-11-28 06:33:24

Discord消息收發應用 Linux

2021-08-18 11:19:25

FedoraLinuxJava

2018-11-26 16:00:24

FedoraLinuxWindows游戲

2023-12-11 10:25:02

FlatpakLinux

2023-11-21 10:25:28

LinuxFlathubFlatpak

2020-12-28 06:44:45

FedoraLinux RPM文件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久精品网 | 欧美一a一片一级一片 | 涩爱av一区二区三区 | 亚洲男人的天堂网站 | 国产目拍亚洲精品99久久精品 | 人人九九精 | 国产高清一区二区三区 | 99免费视频 | 国产精品一区二区久久久久 | 精品在线| 国产美女特级嫩嫩嫩bbb片 | 国产大毛片 | 国产一区二区在线免费播放 | 欧美一区2区三区4区公司 | 五月槐花香 | www.色五月.com | 亚洲小视频在线播放 | 九九热精品在线视频 | 91福利在线观看 | 久亚州在线播放 | 免费国产网站 | 中文字幕久久精品 | 91精品国产自产精品男人的天堂 | 91精品一区 | 欧美性影院 | 中文字幕国产视频 | 欧美一区二不卡视频 | 超碰精品在线 | 精品99久久 | 亚洲欧洲日韩 | 国产视频久久久 | 一级片成人 | 国产精品波多野结衣 | 黄色av网站免费看 | 精品少妇一区二区三区日产乱码 | 成人av电影在线观看 | 91传媒在线观看 | 久草网站 | 欧美a免费 | 亚洲精品在线看 | 久久久久综合 |