OpenCV是一個跨平臺計算機視覺和機器學習算法庫。它不僅能用來實現各種復雜的算法,還能夠對圖像進行預處理:包括圖像的平移、旋轉、縮放、翻轉、裁剪。希望把這些知識分享給初學者。
圖像平移
我們使用OpenCV提供的仿射變換函數cv.warpAffine()沿x和y軸移動圖像。
Step1. 調用一個函數cv.warpAffine()。
Step2. 創建一個平移矩陣,這一步需要借助NumPy進行。
Step3. 將img(需要變換的圖像)、transMAT(平移矩陣)和Dimensions(維度)代入仿射變換函數cv.warpAffine(),輸入x和y以確定平移多少。
向左、向上移動,則x、y設為負數,反之則為正數。
Step4. 采用cv.imshow()函數顯示圖像。
## Translation
def translation(img,x,y):
tranMAT = np.float32([[1,0,x],[0,1,y]])
dimensions = (img.shape[1],img.shape[0])
return cv.warpAffine(img,transMAT,dimensions)
translated = translation(img,-100,100)
cv.imshow(“Translated”,translated)
cv.waitKey(0)
圖像旋轉
在OpenCV中旋轉圖像,可以將任何點用作旋轉的中心,同樣使用cv.warpAffine()函數以及和上面相同的參數。但是旋轉矩陣與圖像平移是不同的。
Step1. 創建一個旋轉函數,定義圖像img、旋轉角度angle和旋轉點rotPoint。
Step2. 利用cv.getRotationMatrix2D()(矩陣旋轉與縮放)創建一個旋轉矩陣rotMAT,其中包括旋轉點、旋轉角度和比例因子。如果不需要比例因子,則將其設為1.0。
Step3. 輸入旋轉角度、旋轉點對應數值。(如不需要設置旋轉點,則在Step1中設為空值None)
## Rotation
def rotate(img,angle,rotPoint=None):
(height,width) = img,shape[:2]
if rotPoint is None:
rotPoint = (width//2,height//2)
rotMAT = cv.getRotationMatrix2D(rotPoint,angle,1.0)
dimension = (width,height)
return cv.warpAffine(img,rotMat,dimension)
rotated = rotated(img,20)
cv.imshow(“Rotated”,rotated)
cv.waitKey(0)
圖片縮放
在OpenCV中需要用到函數cv.resize(img, (500, 500), interpolation=cv.INTER_LINEAR)。
根據縮小或放大圖像的需要,參數指定插值方法可以選擇cv.INTER_AREA(區域插值)、cv.INTER_CUBIC(三次樣條插值)、cv.INTER_LINEAR(線性插值)。
如需放大圖像,可以采用《》 INTER_LINEAR(效率較高)或INTER_CUBIC(效率較低);
如需縮小圖像,可以采用《》 INTER_AREA。
## Resize
resized = cv.resize(img(500,500),interpolation=cv.INTER_LINEAR)
cv.imshow(“resized”,resized)
cv.waitKey(0)
圖片翻轉
使用OpenCV中的cv.flip()函數,該函數支持圖像的翻轉(垂直翻轉、水平翻轉,以及同時翻轉均可)。
cv.flip(img,flipcode)翻轉模式有三種:0為垂直翻轉,1為水平翻轉,-1 為兩個方向同時翻轉。
## Flipping
flipped = cv.flip(img,0)
cv.imshow(“Flipped”,flipped)
cv.waitKey(0)
圖像裁剪
運用Cropped = image[a1:a2,b1:b2] 裁剪圖像img得到一個矩形,高度從a1到a2,寬度從b1到b2。
## Cropping
cropped = img[100:200,100:200]
cv.imshow(“Cropped”,cropped)
cv.waitKey(0)
除此之外,OpenCV還能用于空間顏色轉換、物體跟蹤、圖像分割、輪廓提取、結構分析、人臉識別等,功能十分強大。
Raoof Naushad不僅發布了這篇教程,還分享了用于基本和高級圖像處理的OpenCV速查表,感興趣的朋友可以通過下方鏈接查看。
編輯:lyn
-
OpenCV
+關注
關注
31文章
635瀏覽量
41562 -
圖像平移
+關注
關注
0文章
2瀏覽量
5403
原文標題:【OpenCV入門】手把手教你圖片預處理
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
使用Python+OpenCV處理圖片
RK3568 + OpenCV 會碰撞出什么火花?案例詳解:2-1 基于OpenCV的畫線實驗
Minitab 數據清理與預處理技巧
三星自主研發知識圖譜技術,強化Galaxy AI用戶體驗與數據安全
opencv-python和opencv一樣嗎
opencv的主要功能有哪些
知識圖譜與大模型之間的關系
機器學習中的數據預處理與特征工程
信號的預處理包括哪些環節
STM32MP135如何使用opencv-python或v4l2-ctl打開攝像頭,并保存為圖片?
常見的醫學圖像讀取方式和預處理方法
![常見的醫學圖像讀取方式和<b class='flag-5'>預處理</b>方法](https://file1.elecfans.com/web2/M00/CF/5F/wKgZomYh6PCASZQyAAAV3ymW-SM749.jpg)
利用知識圖譜與Llama-Index技術構建大模型驅動的RAG系統(下)
![利用<b class='flag-5'>知識圖</b>譜與Llama-Index技術構建大模型驅動的RAG系統(下)](https://file1.elecfans.com/web2/M00/C1/82/wKgaomXW5lKAOabBAABJ6cOiGSI637.png)
OpenCV入門:了解與安裝指南
![<b class='flag-5'>OpenCV</b><b class='flag-5'>入門</b>:了解與安裝指南](https://file1.elecfans.com/web2/M00/C1/5E/wKgaomXVmLCATG4nAAALeiM8WXA196.jpg)
評論