国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - 在 Fedora Linux 上使用 OpenCV(一)

在 Fedora Linux 上使用 OpenCV(一)

2021-08-19 23:34Linux中國Onuralp Sezer Linux

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

在 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)

 

在 Fedora Linux 上使用 OpenCV(一)

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

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

 

在 Fedora Linux 上使用 OpenCV(一)

這些是一些可以用于 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 {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()

 

在 Fedora Linux 上使用 OpenCV(一)

發生了什么?

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

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

 

在 Fedora Linux 上使用 OpenCV(一)

這個問題在以彩色模式打開圖片時也會發生,因為 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()

 

在 Fedora Linux 上使用 OpenCV(一)

分割和合并顏色通道

  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()

 

在 Fedora Linux 上使用 OpenCV(一)

  • 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()

 

在 Fedora Linux 上使用 OpenCV(一)

更多信息

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

感謝閱讀。

原文鏈接:https://linux.cn/article-13698-1.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 97在线观看 | 国产精品自拍视频 | 九九九九国产 | 久久久久国产精品免费免费搜索 | 成人免费毛片高清视频 | 日韩综合一区二区 | 精品第一页 | 欧美香蕉 | 天天干一干 | 国产97色在线 | 亚洲 | 国产欧美日韩综合精品一区二区 | 成人午夜影院 | 麻豆91视频| 中文字幕在线观看视频地址二 | 日韩欧美一区二区三区免费观看 | 欧美一区二区三区在线视频 | 日本黄色免费大片 | 亚州国产 | 欧美天天| 一区二区三区在线 | 色综合久| 日韩精品 | 国产午夜小视频 | 老司机av导航 | 久久精品国产免费 | 婷婷综合网 | www.天天草 | 久久久久国产一级毛片高清片 | 国产精品久久久久久久久久妞妞 | 成人精品视频 | 中文在线一区二区三区 | av一区二区在线观看 | 91视频精品 | 极品国产在线 | 国产欧美精品区一区二区三区 | 免费精品视频一区二区三区 | 久久尤物免费一区二区三区 | 玖玖精品 | 天天看夜夜 | 久久久久黄 | 色综合av |