縮放和裁剪圖像
縮放是一個改變圖像形狀的過程。在 Opencv,我們可以使用 resize 函數來調整圖像的形狀。
語法
cv2.resize(IMG,(WIDTH,HEIGHT))
IMG: image which we want to resize
WIDTH: new width of the resize image
HEIGHT: new height of the resize image
Example
cv2.resize(img,(224,224))
要調整圖像的大小,我們首先需要知道圖像的形狀。我們可以利用 shape 找到圖像的形狀,然后根據當前圖像的形狀,我們可以增大或減小圖像的大小。讓我們舉個例子來看看。
import cv2
img = cv2.imread("images/img0.jpg") ##Choose any image
print(img.shape)
imgResize = cv2.resize(img,(224,224)) ##Decrease size
imgResize2 = cv2.resize(img,(1024,1024)) ##Increase size
cv2.imshow("Image",img)
cv2.imshow("Image Resize",imgResize)
cv2.imshow("Image Increase size",imgResize2)
print(imgResize.shape)
cv2.waitKey(0)
如果您不想把圖像寬度和高度寫死,您也可以根據現有的形狀,然后根據比例改變圖像的寬度和高度。
import cv2
img = cv2.imread("images/img0.jpg") ##Choose any image
print(img.shape)
shape = img.shape
imgResize = cv2.resize(img,(shape[0]//2,shape[1]//2))##Decrease size
imgResize2 = cv2.resize(img,(shape[0]*2,shape[1]*2)) ##Increase size
cv2.imshow("Image",img)
cv2.imshow("Image Resize",imgResize)
cv2.imshow("Image Increase size",imgResize2)
print(imgResize.shape)
cv2.waitKey(0)
裁剪圖像
裁剪是獲取部分圖像的過程。在 OpenCV 中,我們可以通過定義裁剪后的矩形坐標來執行裁剪。
語法
imgCropped = img[y1:y2, x1:x2](x1,y1): top-left vertex
(x2,y2): bottom-right vertex
Example
imgCropped = img[0:100,200:200]
使用裁剪方法,讓我們嘗試從圖像中提取 Monalisa 的臉。
import cv2
img = cv2.imread("images/img0.jpg")
imgCropped = img[50:250,120:330]
cv2.imshow("Image cropped",imgCropped)
cv2.imshow("Image",img)
cv2.waitKey(0)
您還可以使用繪畫模式來查找(x1,y1)、(x2,y2)的正確坐標。
這里有個小任務:
任務 :右鍵單擊圖像并保存它; 嘗試從圖像中獲取國王卡。
提示 :使用繪畫模式找到正確的坐標,最后,使用調整大小,以增加裁剪圖像的大小。
使用函數的基本圖像濾波器
我們可以在圖像上使用許多基本的濾波器,比如將圖片轉換成灰度、模糊等等。
從 Img 到 gray
為了將圖像從彩色圖像轉換為灰度圖像,我們可以使用函數 cv2.cvtColor,在這里我們傳遞 cv2.COLOR_BGR2GRAY 作為參數。
語法
imgGray = cv2.cvtColor(IMG,cv2.CODE)
IMG: Original image
CODE: Conversion code for Gray(COLOR_BGR2GRAY)
Example
imgGray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
從 Img 到 HSV
為了將圖像轉換為 HSV 顏色空間,我們可以使用函數 cv2.cvtColor,這里我們傳遞 cv2.COLOR_BGR2HSV 作為參數。它主要用于目標跟蹤。
語法
imgGray = cv2.cvtColor(IMG,cv2.CODE)
IMG: Original image
CODE: Conversion code for Gray(COLOR_BGR2HSV)
Example
imgHsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
模糊圖像
模糊用于去除圖像中的噪聲,也稱為平滑。它是對圖像應用低通濾波器的過程。在 OpenCV 中對圖像進行模糊,我們常用 GaussianBlur。
語法
imgBlur = cv2.GaussianBlur(img,(sigmaX,sigmaY),kernalSize)
kernalsize ? A Size object representing the size of the kernel.
sigmaX ? A variable representing the Gaussian kernel standard deviation in X direction.
sigmaY - same as sigmaX
Exmaple
imgBlur = cv2.GaussianBlur(img,(3,3),0)
邊緣檢測
在 OpenCV 中,我們使用 Canny算子來檢測圖像中的邊緣。也有不同的邊緣檢測器,但最著名的是 Canny算子。Canny算子邊緣檢測是一種邊緣檢測算子,它使用多級算法來檢測圖像中的大范圍邊緣,是由 John F. Canny 在1986年提出的。
語法
imgCanny = cv2.Canny(img,threshold1,threshold2)
threshold1,threshold2:Different values of threshold different for every images
Example
imgCanny = cv2.Canny(img,100,150)
-
C++
+關注
關注
22文章
2117瀏覽量
74766 -
計算機視覺
+關注
關注
9文章
1706瀏覽量
46559 -
OpenCV
+關注
關注
32文章
642瀏覽量
42413
發布評論請先 登錄
LabVIEW+Python+openCV
遍歷圖像像素的14種方法_OpenCV2版書本配套示例程序24
python圖像處理opencv步驟是怎么樣的
python代碼示例之基于Python的日歷api調用代碼實例

OpenCV中的Python實現
Linux Debian與Python、Flask和OpenCV識別面部

評論