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

Python OpenCV 圖像平移的實現(xiàn)示例

 更新時間:2021年06月04日 10:43:33   作者:夢想橡皮擦  
本篇博客學習OpenCV 中關于圖像平移的方法,核心學習到的方法是warpAffine,需要的朋友們下面隨著小編來一起學習學習吧

每次學習新東西的時候,橡皮擦都是去海量檢索,然后找到適合自己理解的部分。

再將其拼湊成一個小的系統(tǒng),爭取對該內容有初步理解。

今天這 1 個小時,核心要學習的是圖像的平移,在電腦上隨便打開一張圖片,實現(xiàn)移動都非常簡單,但是在代碼中,出現(xiàn)了一些新的概念。

檢索 OpenCV 圖像平移相關資料時,碰到的第一個新概念是就是 仿射變換。

每次看到這樣子的數學名字,必然心中一涼,做為一個數學小白,又要瑟瑟發(fā)抖了。

百度一下,看看百科中是如何介紹的。

Python OpenCV 圖像平移,取經之旅第 10 天

看過上圖中的一些相關簡介之后,對于這個概念也并沒有太深刻的理解,本著先用起來,在補充理論的學習觀點,我們先實現(xiàn)圖像平移。

學習過程中,碰到一些概念性的東西,可以先應用起來,然后在后續(xù)的深入學習過程中,逐步去完善它們。

cv2.warpAffine() 仿射變換

基于該方法去尋找相關資料,得到仿射變換的基本概念,從二維坐標到二維坐標之間的線性變換,并且要保持二維圖形的“平直性” 和 “平行性”。

仿射變換中,包含平移,縮放,翻轉,旋轉,剪切。

該方法的語法結構如下:

dst = cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])

參數說明:

  • src:輸入圖像
  • M:2*3 transformation matrix (轉變矩陣)
  • dsize:輸出圖像的大小,格式為(cols,rows),width 對應 cols,height 對應 rows
  • flags: 可選參數,插值方法的組合(int 類型),默認值 INTER_LINEAR
  • borderMode:可選參數,邊界像素模式(int 類型),默認值 BORDER_CONSTANT
  • borderValue:可選參數,邊界填充值; 默認情況下,默認值 Scalar()即 0

官方可查閱的英文資料如下:

Python OpenCV 圖像平移,取經之旅第 10 天

插值方式(flags)有如下類型:

  • INTER_LINEAR 線性插值
  • INTER_NEAREST 最近鄰插值
  • INTER_AREA 區(qū)域插值
  • INTER_CUBIC 三次樣條插值
  • INTER_LANCZOS4 Lanczos 插值

一般情況下,使用 wrapAffine 前三個參數,即 warpAffine(img,M,(rows,cols)) 實現(xiàn)基本的仿射變換效果,但是這種情況會出現(xiàn) 黑邊 現(xiàn)象。

最后一個參數為 borderValue,邊界填充的顏色,默認為黑色,可以自行設置為其它顏色。

具體代碼

圖像平移是圖像位置的移動。在平移前,需要先轉換矩陣 M,,其中 tx,ty 表示在(x,y)方向上的位移,如下所示:

Python OpenCV 圖像平移,取經之旅第 10 天

測試代碼如下,重要部分在注釋中進行說明。

import numpy as np
import cv2 as cv

img = cv.imread('10.jpg', 1)
rows, cols, channels = img.shape
# [1,0,100] 右移 100, [0,1,50] 下移 50
M = np.float32([[1, 0, 100], [0, 1, 50]])
res = cv.warpAffine(img, M, (cols, rows))
cv.imshow("img", res)
cv.waitKey()

特別說明:
cv.warpAffine 方法的第三個參數是輸出圖像的大小,其形式應為(width,height)。記住 width =列數(cols),height =行數(rows)。

以下為代碼運行結果。

Python OpenCV 圖像平移,取經之旅第 10 天

關于 borderMode 參數值的說明:

該部分內容涉及邊緣處理,翻閱手冊過程找到的說明指向 BorderTypes。翻閱了一下,依舊是有些超綱,可以先記錄下相關內容,日后在進行回顧,參考地址

所有值羅列如下:

  • BORDER_CONSTANT = 0
  • BORDER_REPLICATE = 1
  • BORDER_REFLECT = 2
  • BORDER_WRAP = 3
  • BORDER_REFLECT_101 = 4
  • BORDER_TRANSPARENT = 5
  • BORDER_REFLECT101 = BORDER_REFLECT_101
  • BORDER_DEFAULT = BORDER_REFLECT_101
  • BORDER_ISOLATED = 16

Python OpenCV 圖像平移,取經之旅第 10 天

borderValue:當圖像邊界處理方式為 BORDER_CONSTANT 時的填充值。

測試代碼如下:

import numpy as np
import cv2 as cv

img = cv.imread('10.jpg', 1)
rows, cols, channels = img.shape
M = np.float32([[1, 0, 100], [0, 1, 50]])
res = cv.warpAffine(img, M, (cols, rows),
                    borderMode=cv.BORDER_CONSTANT, borderValue=(200, 66, 66))
cv.imshow("img", res)
cv.waitKey()

OpenCV 尾聲

到此這篇關于Python OpenCV 圖像平移的實現(xiàn)示例的文章就介紹到這了,更多相關OpenCV 圖像平移內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • pandas如何篩選某個列值是否位于某個列表內

    pandas如何篩選某個列值是否位于某個列表內

    這篇文章主要介紹了pandas如何篩選某個列值是否位于某個列表內問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Numpy中np.max的用法及np.maximum區(qū)別

    Numpy中np.max的用法及np.maximum區(qū)別

    這篇文章主要介紹了Numpy中np.max的用法及np.maximum區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 我用Python抓取了7000 多本電子書案例詳解

    我用Python抓取了7000 多本電子書案例詳解

    這篇文章主要介紹了我用Python抓取了7000 多本電子書案例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • 利用python Pandas實現(xiàn)批量拆分Excel與合并Excel

    利用python Pandas實現(xiàn)批量拆分Excel與合并Excel

    今天帶大家學習利用python Pandas實現(xiàn)批量拆分Excel與合并Excel,文中有非常詳細的的代碼示例,對正在學習python的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • 詳解tf.device()指定tensorflow運行的GPU或CPU設備實現(xiàn)

    詳解tf.device()指定tensorflow運行的GPU或CPU設備實現(xiàn)

    這篇文章主要介紹了詳解tf.device()指定tensorflow運行的GPU或CPU設備實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python基礎教程之tcp socket編程詳解及簡單實例

    Python基礎教程之tcp socket編程詳解及簡單實例

    這篇文章主要介紹了Python基礎教程之tcp socket編程詳解及簡單實例的相關資料,需要的朋友可以參考下
    2017-02-02
  • 詳解如何使用Python?LXML庫來解析和處理XML文檔

    詳解如何使用Python?LXML庫來解析和處理XML文檔

    在數據處理過程中,XML(可擴展標記語言)常常被用作數據存儲和傳輸,Python的lxml庫是一個強大的庫,用于解析XML和HTML文檔,本文將向您介紹如何使用lxml庫來解析和處理XML文檔,需要的朋友可以參考下
    2023-08-08
  • python利用socketserver實現(xiàn)并發(fā)套接字功能

    python利用socketserver實現(xiàn)并發(fā)套接字功能

    這篇文章主要為大家詳細介紹了python利用socketserver實現(xiàn)并發(fā)套接字功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • django框架用戶權限中的session緩存到redis中的方法

    django框架用戶權限中的session緩存到redis中的方法

    今天小編就為大家分享一篇django框架用戶權限中的session緩存到redis中的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 利用OpenCV實現(xiàn)質心跟蹤算法

    利用OpenCV實現(xiàn)質心跟蹤算法

    質心跟蹤算法不是正統(tǒng)的目標跟蹤,而是在多目標跟蹤中結合目標檢測算法不同幀之間的相同目標做一個link。本文將利用OpenCV實現(xiàn)質心跟蹤算法,感興趣的可以試一試
    2022-01-01

最新評論

大庆市| 土默特左旗| 桃园县| 保山市| 清水河县| 甘孜县| 普格县| 阳朔县| 四子王旗| 门源| 喀喇沁旗| 连云港市| 沂水县| 祁门县| 新乐市| 诏安县| 曲沃县| 富裕县| 金山区| 镇江市| 布尔津县| 山东| 绵竹市| 安新县| 沁源县| 南澳县| 修水县| 麻阳| 岐山县| 九江县| 安宁市| 巴林左旗| 陆河县| 卢湾区| 沙坪坝区| 巴彦县| 新晃| 宁德市| 桦南县| 洛扎县| 沧源|