在 Python 中的 CV2 上下文中,當您讀取映像時,它會儲存為 Y 和 X 座標的 2D 或 3D 數組,其中 uint8 值指示影像的顏色和亮度。術語 uint8 是指範圍從 0 到 255 的 8 位元無符號整數資料型別。它與紅、綠和藍 (RGB) 的 3 個通道結合,形成彩色影像。
如果您開始像普通數組一樣更改圖像的某些部分(例如,將其除以 3),您可能會丟失這種格式。例如,像素值可能超出 0 到 255 的範圍,導致影像無法使用。理解這種結構對於正確操作影像至關重要。
在 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()
上面的程式碼將打開一個彈出窗口,在您的電腦上顯示圖像。請隨意添加一個 url 到您自己的圖像中進行測試。 然後,您可以放大以觀察影像的像素級 RGB 值。這個基本功能是探索影像處理的一個很好的起點。
從數學上講,可以使用以下公式調整亮度和對比度:
new_image=對比×影像亮度
OpenCV 中的 cv2.convertScaleAbs() 函數會自動執行此程序。它應用上面的公式,同時確保像素值保持在 0 到 255 的範圍內。
工作原理如下:
用法範例:
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()
雖然一次性調整很有用,但大多數時候,我們希望互動式地調整亮度和對比度。 OpenCV 允許我們使用軌跡欄來實現這一點。
Trackbars 可以使用 cv2.createTrackbar() 來創建,這讓我們可以動態調整值。一般語法是:
cv2.createTrackbar(trackbarname, winname, 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()
調整對比度和亮度滑桿會觸發 on_change 函數,該函數使用 cv2.getTrackbarPos() 從軌跡列讀取值。然後使用 cv2.convertScaleAbs 函數將這些值套用至影像,並即時顯示更新的影像。
為了使應用程式更加用戶友好,我在末尾添加了一個簡單的程式碼片段,以允許用戶透過按 x 鍵退出。這解決了 OpenCV 的一個常見問題,即關閉視窗並不總是會阻止程式碼運行。透過實現這一點,應用程式可確保乾淨退出,而不會出現延遲進程。
以上是CV什麼是影像?的詳細內容。更多資訊請關注PHP中文網其他相關文章!