最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenCV圖像處理之七種常用圖像幾何變換

 更新時間:2021年12月13日 16:32:13   作者:JeffchenITM  
這篇文章主要介紹了OpenCV圖像處理中常用的幾個圖像幾何變換:裁剪、放大、縮小、平移、錯切、鏡像、旋轉(zhuǎn)、透視等。文中示例代碼非常詳細(xì),需要的朋友可以參考一下

0 程序環(huán)境與所學(xué)函數(shù)

本章程序運行需要導(dǎo)入下面三個庫,并定義了一個顯示圖像的函數(shù)

所學(xué)函數(shù)

##放大、縮小
cv.resize(img,dsize,[interpolation])
##平移變換
M = np.array([[...]], dtype=np.float32)
cv.warpAffine(img, M, dsize)
##鏡像變換
cv.flip(img, 1) # 垂直鏡像
cv.flip(img, 0) # 水平鏡像
cv.flit(img, -1) # 水平垂直同時進行
##旋轉(zhuǎn)變換
M = cv.getRotationMatrix2D(center, angle, scale)
img_rotate = cv.rotate(img, cv.ROTATE_90_CLOCKWISE)
##透視變換
M = cv.getPerspectiveTransform(src, dst)
img = cv.warpPerspective(img, M, dsize)

1 裁剪、放大、縮小

讀入圖像

img =  cv.imread('pic/rabbit500x333.jpg')
show(img)

顯示

裁剪:數(shù)組選擇方法(冒號)

#裁剪
rabbit = img[150:450:] #限定行數(shù),列數(shù)和三通道
show(rabbit)

顯示

放大和縮?。簉esize()函數(shù)

插值方法

程序?qū)崿F(xiàn)

#放大縮小
#cv.resize(img,dsize,[interpolation])  dsize表示大小,[interpolation]是插值方法,可選,有默認(rèn)值
img2 = cv.resize(img,(500,400))  #放大為寬500高400
#使用定義插值方法
#一般來說放大地話選擇LINEAR方法,縮小選擇AREA方法
img3 = cv.resize(img,(500,400),interpolation=cv.INTER_NEAREST)
show(np.hstack([img2,img3]))

顯示

2 平移變換

原理、平移矩陣推導(dǎo)

讀入圖像

img = cv.imread('pic/rabbit500x333.jpg')
show(img)

顯示

程序?qū)崿F(xiàn)

# M = np.array([[...]],dtype=np.float32) 
# cv.warAffine(img,M,dsize) cv里面圖像仿射變換函數(shù),M是上面矩陣,dsize是輸出圖像大小
M=np.array([
    [1,0,100],
    [0,1,50]
],dtype=np.float32)  #水平向右平移100個像素點,豎直向下平移50個像素點,原理見理論部分
 
img2 = cv.warpAffine(img,M,(333,500))
show(img2)

顯示

3 錯切變換

原理、錯切矩陣推導(dǎo)

讀入圖像

img = cv.imread('pic/rabbit500x333.jpg')
show(img)

顯示

水平錯切

M = np.array([
    [1,0.2,0],
    [0,1,0]
],dtype=np.float32)
 
img3 = cv.warpAffine(img,M,(533,500))
show(img3)

顯示

垂直錯切

M = np.array([
    [1,0,0],
    [0.3,1,0]
],dtype=np.float32)
 
img3 = cv.warpAffine(img,M,(333,700))
show(img3)

顯示

4 鏡像變換

原理、鏡像矩陣推導(dǎo)

讀入圖像

img = cv.imread('pic/rabbit500x333.jpg')
show(img)

顯示

水平鏡像

Mx = np.array([
    [-1,0,333],
    [0,1,0]
],dtype = np.float32)
img2 = cv.warpAffine(img,Mx,(333,500))  #仿射變換函數(shù)
show(img2)

顯示

垂直鏡像

My = np.array([
    [1,0,0],
    [0,-1,500]
],dtype=np.float32)
 
img3 = cv.warpAffine(img,My,(333,500))
show(img3)

顯示

opencv內(nèi)置函數(shù)實現(xiàn)鏡像變換

#垂直鏡像 cv.flip(img,1)

#水平鏡像 cv.flip(img,0)

#水平垂直同時進行 cv.flip(img,-1)

程序?qū)崿F(xiàn)

img4 = cv.flip(img,1)  #垂直鏡像
img5 = cv.flip(img,0)  #水平鏡像
img6 = cv.flip(img,-1) #水平垂直鏡像同時進行
 
show(np.hstack([img4,img5,img6]))

顯示

5 旋轉(zhuǎn)變換

原理、旋轉(zhuǎn)矩陣推導(dǎo)

讀入圖像

img = cv.imread('pic/rabbit500x333.jpg')
show(img)

顯示

圖像旋轉(zhuǎn)

beta = np.pi/4
#旋轉(zhuǎn)矩陣
M  = np.array([
    [np.cos(beta),np.sin(beta),0],
    [-np.sin(beta),np.cos(beta),0]
],dtype=np.float32)
 
img2 = cv.warpAffine(img,M,(633,300))
show(img2)

顯示

opencv內(nèi)置獲取旋轉(zhuǎn)矩陣函數(shù):

M = cv.getRotationMatrix2D(center,angle,scale)??

center是旋轉(zhuǎn)中心,angle是旋轉(zhuǎn)角度,scale表示放大還是縮小

用上面函數(shù)獲取旋轉(zhuǎn)矩陣并實現(xiàn)圖像旋轉(zhuǎn)

h,w,c = img.shape  #獲取圖像的高度和寬度,方便后面設(shè)置旋轉(zhuǎn)中心
 
M2 = cv.getRotationMatrix2D((w//2,h//2),45,1)
img3 = cv.warpAffine(img,M2,(533,500))  #仿射函數(shù)實現(xiàn)
show(img3

顯示

opencv內(nèi)置實現(xiàn)圖像旋轉(zhuǎn)函數(shù)

img_rotate =cv.rotate(img,cv.ROTATE_90_COUNTERCLOCKWISE)

只能進行90度倍數(shù)的旋轉(zhuǎn)

程序?qū)崿F(xiàn)

# 逆時針旋轉(zhuǎn)90度
img_rotate = cv.rotate(img,cv.ROTATE_90_COUNTERCLOCKWISE)
show(img_rotate)
 

顯示

6 透視變換

M = cv.getPerspectiveTransform(str,dst)

str:原始圖像矩陣端點位置,dst:目標(biāo)圖像矩陣位置

img2 = cv.warpPerspective(img,M,(w,h))

讀入圖像

img = cv.imread('pic/parthenon500x750.jpg')
show(img)

顯示

程序?qū)崿F(xiàn)

#在原圖中定位四個點,這里找的是柱子前面四個點的大概位置,眼睛觀察法找的
str = np.array([
    [210,50],
    [610,270],
    [650,470],
    [150,450]
],dtype=np.float32)
 
#目標(biāo)圖像中矩陣
dst = np.array([
    [150,50],
    [650,50],
    [650,470],
    [150,470]
],dtype=np.float32)
 
h,w,c = img.shape
 
#透視變換將一個類似矩形的圖形拉成一個矩形
M = cv.getPerspectiveTransform(str,dst)
img2 = cv.warpPerspective(img,M,(w,h))
show(img2)

顯示

應(yīng)用:車道檢測、圖片矯正

7 最近鄰插值、雙線性插值

原理:

最近鄰插值圖示:

雙線性插值圖示

讀入圖像

img = cv.imread('pic/rabbit50x33.jpg')
show(img)

顯示

程序?qū)崿F(xiàn)

img1 = cv.resize(img,(330,500),interpolation=cv.INTER_NEAREST) #最近鄰插值
img2 = cv.resize(img,(330,500),interpolation=cv.INTER_LINEAR_EXACT) #精確雙線新插值
 
show(np.hstack([img1,img2]))

顯示

可以看出最近鄰插值還是比較模糊的,過渡結(jié)果沒有雙線性插值平滑

以上就是OpenCV圖像處理之七種常用圖像幾何變換的詳細(xì)內(nèi)容,更多關(guān)于OpenCV 圖像幾何變換的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • django 通過URL訪問上傳的文件方法

    django 通過URL訪問上傳的文件方法

    今天小編就為大家分享一篇django 通過URL訪問上傳的文件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 一文帶你了解Python中的枚舉(enum)

    一文帶你了解Python中的枚舉(enum)

    這篇文章一文帶你了解Python中的枚舉(enum),在Python中,枚舉和我們在對象中定義的類變量時一樣的,每一個類變量就是一個枚舉項,需要的朋友可以參考下
    2023-04-04
  • Python中pow()和math.pow()函數(shù)用法示例

    Python中pow()和math.pow()函數(shù)用法示例

    這篇文章主要介紹了Python中pow()和math.pow()函數(shù)用法,結(jié)合具體實例形式分析了Python使用pow()和math.pow()函數(shù)進行冪運算的相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • python使用tensorflow深度學(xué)習(xí)識別驗證碼

    python使用tensorflow深度學(xué)習(xí)識別驗證碼

    這篇文章主要介紹了python使用tensorflow深度學(xué)習(xí)識別驗證碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Python實現(xiàn)字典序列ChainMap

    Python實現(xiàn)字典序列ChainMap

    容器數(shù)據(jù)類型包括數(shù)組list,字典dict以及元組tuple等。本篇主要介紹了ChainMap字典序列的使用,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • Python中plt.scatter()函數(shù)的常見用法小結(jié)

    Python中plt.scatter()函數(shù)的常見用法小結(jié)

    這篇文章主要介紹了Python中plt.scatter()函數(shù)的常見用法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 關(guān)于nn.BatchNorm1d()用法及說明

    關(guān)于nn.BatchNorm1d()用法及說明

    這篇文章主要介紹了關(guān)于nn.BatchNorm1d()用法及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python工具快速為音視頻自動生成字幕(使用說明)

    python工具快速為音視頻自動生成字幕(使用說明)

    這篇文章主要介紹了python工具快速為音視頻自動生成字幕(使用說明),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • python實現(xiàn)感知機模型的示例

    python實現(xiàn)感知機模型的示例

    這篇文章主要介紹了python實現(xiàn)感知機模型的示例,幫助大家更好的理解和學(xué)習(xí)python 機器學(xué)習(xí)的相關(guān)知識,感興趣的朋友可以了解下
    2020-09-09
  • Python圖像處理之膨脹與腐蝕的操作

    Python圖像處理之膨脹與腐蝕的操作

    這篇文章主要介紹了Python圖像處理之膨脹與腐蝕的操作,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02

最新評論

濉溪县| 龙江县| 会同县| 凤山市| 女性| 营山县| 汶川县| 项城市| 金沙县| 依兰县| 甘肃省| 同江市| 郴州市| 墨脱县| 桂东县| 米脂县| 栾城县| 潜山县| 郑州市| 墨脱县| 科尔| 涞水县| 莱阳市| 广州市| 德令哈市| 思茅市| 长武县| 黄大仙区| 南宫市| 宽甸| 裕民县| 双流县| 理塘县| 平昌县| 庆云县| 惠安县| 武强县| 璧山县| 三门县| 玛多县| 南岸区|