SQL 中 Count(*) 與 Count(1) 有何不同
幾何變換
影象縮放:cv.resize(src,dsize,fx=0,fy=0,interpolation=cv.INTER_LINEAR)
dsize:絕對尺寸,直接指定調整後圖像的大小。
fx,fy:相對尺寸,將dsize設定為None,然後將fx和fy設定為比例因子即可。
interpolation:插值方法。其中INTER_LINEAR:雙線性插值法;INTER_NEAREST:最近鄰插值;INTER_AREA:畫素區域重取樣(預設);INTER_CUBIC:雙三次插值。
影象平移:
將影象按照指定方向和距離,移動到相應的位置。
cv.warpAffine(img,M,dsize)
img:要操作的影象
M:2*3移動舉證,對於(x,y)處的畫素點,要把它移動到(x+tx,y+ty)處時,M矩陣應如下設定:
注意:將M設定為np.float32型別的Numpy陣列。
dsize:輸出影象的大小。
注意:輸出影象的大小,他應該是(寬度,高度)的形式。請記住,width=列數,height=行數。
影象旋轉:
指影象按照某個位置轉動一定角度的過程。旋轉中圖片仍保持原始尺寸。
OpenCV中影象旋轉首先根據旋轉角度和旋轉中心獲取旋轉矩陣,然後根據旋轉矩陣進行變換,即可實現任意角度和任意中心的旋轉效果。
API:cv.getRotationMatrix2D(center,angle,scale)
center:旋轉中心。
angle:旋轉角度。
scale:縮放比例。
返回:
M:旋轉矩陣。
呼叫cv.warpAffine完成影象的旋轉。
仿射變換
影象的仿射變換涉及到影象的形狀位置角度的變化,主要是對影象進行縮放,旋轉,翻轉,平移等操作。
在仿射變換中,原圖中所有的平行線在結果影象中同樣平行。為了建立這個矩陣我們需要從原影象中找到三個點以及他們在輸出影象中的位置。然後使用cv.getAffineTransform會建立一個2×3的矩陣,最後這個矩陣會被傳給函式cv.warpAffine。
投射變換
利用透視中心、像點、目標點三點共線的條件,按透視旋轉定律使承影面(透視面)繞跡線(透視軸)旋轉某一角度,破壞原有的投影光纖束,仍能保持承影面上投影的幾何圖形不變的變換。
在OpenCV中,我們要找到4個點,其中任意三個點不共線,然後獲取變換矩陣T,再進行透射變換,通過函式cv.getPerspectiveTransform找到變換矩陣,將cv。warpPerspective應用於此3×3變換矩陣。
import cv2
import matplotlib.pyplot as plt
import numpy as np
lena1=cv2.imread("1.jpg")
cv2.imshow("image",lena1)
# cv2.waitKey(0)
#matplotlib中展示
plt.imshow(lena1[::-1,::-1,::-1])
plt.show()
px=lena1[100,100]
print(px)
lena2=cv2.imread("2.jpg")
lena2=cv2.resize(lena2,(800,1099))
img=cv2.add(lena1,lena2)
cv2.imshow("img",img)
img2=cv2.addWeighted(lena1,0.3,lena2,0.7,5)
cv2.imshow("img2",img2)
img3=cv2.resize(img2,(400,500),interpolation=cv2.INTER_CUBIC)
cv2.imshow("img3",img3)
rows,cols=img3.shape[:2]
M=np.float32([[1,0,100],[0,1,50]])
img4=cv2.warpAffine(img3,M,(rows,cols))
cv2.imshow("img4",img4)
M=cv2.getRotationMatrix2D((rows/2,cols/2),90,1)
img5=cv2.warpAffine(img3,M,(rows,cols))
cv2.imshow("img5",img5)
a1=np.float32([[50,50],[50,200],[200,50]])
a2=np.float32([[100,50],[50,200],[200,100]])
M1=cv2.getAffineTransform(a1,a2)
img6=cv2.warpAffine(img2,M1,(cols,rows))
cv2.imshow("img6",img6)
#透射變換
b1=np.float32([[32,12],[14,25],[23,32],[14,23]])
b2=np.float32([[44,23],[12,32],[22,32],[43,23]])
M2=cv2.getPerspectiveTransform(b1,b2)
img6=cv2.warpPerspective(img2,M2,(cols,rows))
cv2.imshow("img6",img6)
cv2.waitKey(