OpenCV影像辨識函式庫安裝及使用

cat, face, eye-7709087.jpg

OpenCV 是一個開源的計算機視覺庫,全稱Open Source Computer Vision,提供了許多用於圖像處理、計算機視覺和機器學習的函數和工具。由Intel發起並開發,所以如果你是用MAC,那可以準備放棄了,很多東西都不相容。

OpenCV 的功能範圍包括圖像處理、特徵檢測和描述、物體識別、人臉識別、視頻分析等。它被廣泛應用於各種領域,如機器人技術、自動駕駛、監控系統、醫學影像等等等。

安裝OpenCV

首先,使用cmd,按下windows圖示,搜尋cmd

點開按enter會出現一個小黑框,在框框中輸入下面的程式

pip install opencv-python
pip install opencv_contrib_python

如果像我一樣,遇到building wheel…的錯誤,請在先前輸入

pip install --upgrade pip setuptools wheel

或是換個版本看看,通常這種奇怪的方法都會湊效

進行測試

import cv2

# 加載圖片
img = cv2.imread('example.jpg')

# 顯示圖片
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

將你同檔案夾下的圖片名稱換入example.jpg 就可以看到圖片彈出視窗了

總之,你已經成功下載opencv了,以後如果要下載類似的包,不一定要翻遍網路上所有教學,以OpenCV為例:

  1. 安裝 OpenCV:使用包管理器或下載源代碼安裝 OpenCV。(pip install)
  2. 建立測試程式:使用熟悉的語言(如 Python)建立簡單的程式來確保 OpenCV 正確安裝。
  3. 測試基本功能:確保你的測試程式可以加載和顯示圖像。
  4. 擴展測試:嘗試其他 OpenCV 功能,如圖像處理和特徵檢測。
  5. 解決問題:遇到問題時,參考官方文檔或在線社區尋求幫助。

OpenCV使用

OpenCV 提供了許多常用的功能和函式,以下是其中一些常見的:

  1. imread():用於讀取圖像文件的函式。它接受文件路徑作為輸入,並返回一個代表圖像的數組。
  2. imshow():用於顯示圖像的函式。它接受一個窗口名稱和一個圖像數組作為輸入,並在一個窗口中顯示該圖像。
  3. imwrite():用於將圖像寫入文件的函式。它接受文件路徑和圖像數組作為輸入,並將該圖像保存到指定的文件中。
  4. cvtColor():用於在不同的色彩空間之間進行轉換的函式。例如,將 RGB 圖像轉換為灰度圖像。
  5. resize():用於調整圖像大小的函式。它接受一個圖像數組和目標大小作為輸入,並返回一個調整大小後的圖像。
  6. flip():用於翻轉圖像的函式。它接受一個圖像數組和翻轉方式作為輸入,並返回一個翻轉後的圖像。

這些是 OpenCV 中一些常用的函式和功能,但還有很多其他功能可用於圖像處理、計算機視覺和機器學習任務。

下面我們會用程式碼實做並一一介紹它們的功能

imread()imshow()

import cv2

# 加載圖像,使用imread()函式,指定圖像文件的路徑作為參數
img = cv2.imread('example.jpg')

# 確保成功加載圖像,如果圖像為None,則輸出錯誤消息
if img is None:
    print('無法讀取圖像')
else:
    # 顯示圖像,使用imshow()函式,指定窗口名稱和圖像數組作為參數
    cv2.imshow('Image', img)
    
    # 等待用戶按下任意鍵,使用waitKey()函式,指定等待時間(毫秒),0表示無限等待
    cv2.waitKey(0)
    
    # 關閉所有窗口,使用destroyAllWindows()函式
    cv2.destroyAllWindows()

cvtColor()imwrite()

import cv2

# 加載圖像,使用imread()函式,指定圖像文件的路徑作為參數
img = cv2.imread('example.jpg')

# 確保成功加載圖像,如果圖像為None,則輸出錯誤消息
if img is None:
    print('無法讀取圖像')
else:
    # 將彩色圖像轉換為灰度圖像,使用cvtColor()函式,指定轉換方式
    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # 顯示灰度圖像,使用imshow()函式,指定窗口名稱和圖像數組作為參數
    cv2.imshow('Gray Image', gray_img)
    
    # 將灰度圖像保存為新的文件,使用imwrite()函式,指定文件路徑和圖像數組作為參數
    cv2.imwrite('gray_example.jpg', gray_img)
    
    # 等待用戶按下任意鍵,使用waitKey()函式,指定等待時間(毫秒),0表示無限等待
    cv2.waitKey(0)
    
    # 關閉所有窗口,使用destroyAllWindows()函式
    cv2.destroyAllWindows()

resize()、flip()

import cv2

# 加載圖像,使用imread()函式,指定圖像文件的路徑作為參數
img = cv2.imread('example.jpg')

# 確保成功加載圖像,如果圖像為None,則輸出錯誤消息
if img is None:
    print('無法讀取圖像')
else:
    # 調整圖像大小,使用resize()函式,指定目標大小
    resized_img = cv2.resize(img, (img.shape[1]//2, img.shape[0]//2))
    
    # 翻轉圖像,使用flip()函式,指定翻轉方式
    flipped_img = cv2.flip(resized_img, 1)
    
    # 顯示縮小和翻轉後的圖像,使用imshow()函式,指定窗口名稱和圖像數組作為參數
    cv2.imshow('Resized and Flipped Image', flipped_img)
    
    # 等待用戶按下任意鍵,使用waitKey()函式,指定等待時間(毫秒),0表示無限等待
    cv2.waitKey(0)
    
    # 關閉所有窗口,使用destroyAllWindows()函式
    cv2.destroyAllWindows()

實時影片

如果你想像我的一個專案一樣隨時偵測鏡頭畫面 專案: [模型分享] AI自學 4-Object_and_Pose_detection
那麼可以對下面的程式進行修改,它可以將你的鏡頭打開並實時每禎偵測

import cv2

# 打開相機,使用VideoCapture函式,指定相機索引號(通常是0)作為參數
cap = cv2.VideoCapture(0)

# 確保成功打開相機,如果失敗,則輸出錯誤消息
if not cap.isOpened():
    print('無法打開相機')
else:
    while True:
        # 從相機中讀取一幀影像,使用read()函式
        ret, frame = cap.read()
        
        # 確保成功讀取影像,如果失敗,則退出迴圈
        if not ret:
            break
        
        # 顯示影像,使用imshow()函式,指定窗口名稱和影像數組作為參數
        cv2.imshow('Camera', frame)
        
        # 等待10毫秒,使用waitKey()函式,指定等待時間(毫秒),如果按下 'q' 鍵則退出迴圈
        if cv2.waitKey(10) & 0xFF == ord('q'):
            break
    
    # 釋放相機,使用release()函式
    cap.release()
    # 關閉所有窗口,使用destroyAllWindows()函式
    cv2.destroyAllWindows()

Back to Blog

返回頂端