首頁 > 後端開發 > Python教學 > CV什麼是影像?

CV什麼是影像?

Linda Hamilton
發布: 2024-12-03 11:21:14
原創
935 人瀏覽過

在 Python 中的 CV2 上下文中,當您讀取映像時,它會儲存為 Y 和 X 座標的 2D 或 3D 數組,其中 uint8 值指示影像的顏色和亮度。術語 uint8 是指範圍從 0 到 255 的 8 位元無符號整數資料型別。它與紅、綠和藍 (RG​​B) 的 3 個通道結合,形成彩色影像。

為什麼這種結構很重要

如果您開始像普通數組一樣更改圖像的某些部分(例如,將其除以 3),您可能會丟失這種格式。例如,像素值可能超出 0 到 255 的範圍,導致影像無法使用。理解這種結構對於正確操作影像至關重要。

查看 CV2 中的影像

在 CV2 Python 庫中,您可以使用以下程式碼片段輕鬆查看圖像:

#pip install opencv-python # if not already installed 
import cv2

# Load an image
image = cv2.imread('./test.png')

# Display the image in a window
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
登入後複製
登入後複製

CVWhat is an Image?, Lets adjust the Brightness and Contrast of an image

上面的程式碼將打開一個彈出窗口,在您的電腦上顯示圖像。請隨意添加一個 url 到您自己的圖像中進行測試。 然後,您可以放大以觀察影像的像素級 RGB 值。這個基本功能是探索影像處理的一個很好的起點。

CVWhat is an Image?, Lets adjust the Brightness and Contrast of an image

亮度和對比度

什麼是亮度和對比度?

  • 亮度是指影像的整體亮度或暗度,由像素強度決定。
  • 對比度是指像素之間的強度與參考值(例如平均像素強度)的差異。它本質上是衡量影像中變化的“銳利”或“獨特”程度。

從數學上講,可以使用以下公式調整亮度和對比度:

new_image=對比×影像亮度

在 CV2 中應用亮度和對比度

OpenCV 中的 cv2.convertScaleAbs() 函數會自動執行此程序。它應用上面的公式,同時確保像素值保持在 0 到 255 的範圍內。

工作原理如下:

  • alpha(對比):縮放因子,通常在 0.0 到 3.0 之間。
  • beta(亮度):偏移值,通常在 -100 到 100 之間

用法範例:
new_image = cv2.convertScaleAbs(圖片, alpha=對比度, beta=亮度)

這使我們能夠輕鬆修改亮度和對比度,而無需手動剪切像素值。

image = cv2.imread('./test.png')
cv2.namedWindow('Adjustments')
contrast=0.8
brightness=89
image=cv2.convertScaleAbs(image, alpha=contrast, beta=brightness)
cv2.imshow('Adjustments', image) 
cv2.waitKey(0)
cv2.destroyAllWindows()

登入後複製

CVWhat is an Image?, Lets adjust the Brightness and Contrast of an image

使用回調創建互動式調整

雖然一次性調整很有用,但大多數時候,我們希望互動式地調整亮度和對比度。 OpenCV 允許我們使用軌跡欄來實現這一點。

Trackbars 可以使用 cv2.createTrackbar() 來創建,這讓我們可以動態調整值。一般語法是:
cv2.createTrackbar(trackbarname, winname, value, count, onChange_function)

  • trackbarname:軌跡列的名稱。
  • winname:將顯示軌跡列的 OpenCV 視窗的名稱。
  • value:軌跡欄的初始位置。
  • count:軌跡欄的最大值。
  • onChange_function:每當軌跡欄值改變時呼叫的回呼函數。

然後可以在 onChange_function 中呼叫這些軌跡欄;
cv2.getTrackbarPos(trackbarname, winname)
・trackbarname:軌跡欄的名稱
・ winname:將顯示軌跡列的 OpenCV 視窗的名稱。

要調整亮度和對比度,我們需要兩個軌跡欄。

#pip install opencv-python # if not already installed 
import cv2

# Load an image
image = cv2.imread('./test.png')

# Display the image in a window
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
登入後複製
登入後複製

CVWhat is an Image?, Lets adjust the Brightness and Contrast of an image

調整對比度和亮度滑桿會觸發 on_change 函數,該函數使用 cv2.getTrackbarPos() 從軌跡列讀取值。然後使用 cv2.convertScaleAbs 函數將這些值套用至影像,並即時顯示更新的影像。

為了使應用程式更加用戶友好,我在末尾添加了一個簡單的程式碼片段,以允許用戶透過按 x 鍵退出。這解決了 OpenCV 的一個常見問題,即關閉視窗並不總是會阻止程式碼運行。透過實現這一點,應用程式可確保乾淨退出,而不會出現延遲進程。

以上是CV什麼是影像?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板