02-图像的几何变换
一、圖片縮放
imageInfo:圖片寬、高、通道個數等 縮放:
等比例縮放:寬高比不變
任意比例縮放:圖片拉伸、非拉伸 窗體大小
實現步驟:
1,完成圖像的加載,拿到圖像的數據信息
2,圖片的寬度、高度
3,調用resize方法完成圖片的縮放功能
4,檢查最終的效果圖
運行結果如下:
最近領域插值:
例如:原圖像的大小為1020,目標圖像的大小為510
新領域的X = X * (原圖像的X / 目標圖像的X) = X * (10/5)
新領域的Y = Y * (原圖像的Y / 目標圖像的Y) = Y * (20/10)
若X或Y為小數,則保留整數部分即可
雙線性插值:
A1 = 20% 上+80%下 A2
B1 = 30% 左+70%右 B2
方法一: 最終點 = A1 30% + A2 70%
方法二: 最終點 = B1 20% + B2 80%
步驟:
1,獲取圖片info信息,包含寬度、高度等信息
2,創建一個和縮放之后大小一樣的空白模板
3,計算每個縮放過后的X和Y值
二、圖片剪切
其實就算通過切片對圖片截取而已
#剪切圖片X坐標的100-200;Y坐標的200-300這部分的圖片 import cv2 img = cv2.imread('E:\Jupyter_workspace\study\data/zyl.png',1) imgInfo = img.shape dst = img[100:200,200:300] cv2.imshow('dst',dst) cv2.waitKey(0)三、圖片位移
放射方法:
cv2.warpAffine(img,matShift,(height,width))
參數一:圖片信息
參數二:當前的旋轉矩陣
參數三:展示最終圖片的寬高信息
API形式warpAffine仿射變換方法—左移100,右移200
import cv2 import numpy as np img = cv2.imread('E:\Jupyter_workspace\study\data/cat.png',1) imgInfo = img.shape height = imgInfo[0] width = imgInfo[1]matShift = np.float32([[1,0,100],[0,1,200]]) dst = cv2.warpAffine(img,matShift,(height,width))cv2.imshow('dst',dst) cv2.waitKey(0)源碼形式—右移100
import cv2 import numpy as np img = cv2.imread('E:\Jupyter_workspace\study\data/cat.png',1) cv2.imshow('src',img) imgInfo = img.shape dst = np.zeros(img.shape,np.uint8) height = imgInfo[0] width = imgInfo[1]for i in range(0,height):for j in range(0,width-100):dst[i,j+100] = img[i,j] cv2.imshow('img',dst) cv2.waitKey(0)[1,0,100],[0,1,200]分為22和21兩個矩陣對待
[[1,0],[0,1]] 2 * 2 A
[[100],[200]] 2 * 1 B
[x,y] C
A * C + B = [[1 * x + 0 * y],[0 * x + 1 * y]]+[[100],[200]]= [[x+100],[y+200]]
(10,20)->(110,220)
四、圖片鏡像
實現步驟:
1,創建一個足夠大的“畫板”
2,將一幅圖像分別從前向后、從后向前繪制
3,繪制中心分割線
效果如圖下:
五、圖片縮放
import cv2 import numpy as np img = cv2.imread('E:\Jupyter_workspace\study\data/cat.png',1) cv2.imshow('src',img) imgInfo = img.shape height = imgInfo[0] width = imgInfo[1] matScale = np.float32([[0.5,0,0],[0,0.5,0]]) dst = cv2.warpAffine(img,matScale,(int(width/2),int(height/2))) cv2.imshow('dst',dst) cv2.waitKey(0)效果圖如下:
六、仿射變換
位移、旋轉、縮放
矩陣仿射變換基本算法原理:給三個點,確定整個圖片的位置
七、圖片旋轉
旋轉矩陣方法:
cv2.getRotationMatrix2D((height*0.5,width*0.5),45,1)
參數一:旋轉的中心點
參數二:旋轉角度
參數三:縮放系數[0,1],1表示不縮放,容易出格,一般設置為0.5
效果圖如下:
總結
以上是生活随笔為你收集整理的02-图像的几何变换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 烤肠机多少钱一台啊?
- 下一篇: 电线一米多少钱啊?