超詳細(xì)注釋之OpenCV操作圖像平移轉(zhuǎn)換
這篇博客將介紹如何使用Python,OpenCV對(duì)圖像進(jìn)行平移轉(zhuǎn)換。平移是圖像沿x軸和y軸的移動(dòng)。使用平移,可以將圖像上下左右移動(dòng),以及上述任意組合。要使用OpenCV平移圖像,只需3步:
- 從磁盤(pán)加載圖像
- 定義仿射變換矩陣
- 應(yīng)用cv2.warpAffine仿射函數(shù)來(lái)執(zhí)行平移
1. 效果圖
用了穎寶明蘭的新娘圖片來(lái)演示效果~,喜歡這張圖的原因,是這里有一首經(jīng)典的催妝詩(shī),
《催妝詩(shī)》
金車欲上怯?xùn)|風(fēng),排云見(jiàn)月醉酒空。
獨(dú)自仙姿羞半吐,冰瓷露白借微紅。
原圖如下:
向右向下平移圖 VS 向上向左平移圖 VS 向下平移效果圖如下:
2. 原理
轉(zhuǎn)化矩陣
M = np.float32([
[1, 0, shiftX],
[0, 1, shiftY]
])
轉(zhuǎn)換矩陣M被定義為浮點(diǎn)數(shù)組。 矩陣的第一行是[1,0,t{x}],其中t{x}是將圖像向左或向右移動(dòng)的像素?cái)?shù)。t{x}的負(fù)值將使圖像向左移動(dòng),正值將使圖像向右移動(dòng)。 矩陣的第二行定義為[0,1,t{y}],其中t{y}是將圖像上下移動(dòng)的像素?cái)?shù)。t{y}的負(fù)值將使圖像上移,正值將使圖像下移。
3. 源碼
# 對(duì)圖像進(jìn)行平移 # USAGE # python opencv_translate.py import argparse import cv2 import imutils # 導(dǎo)入必要的包 import numpy as np # 構(gòu)建命令行參數(shù)及解析 # --image 輸入圖像路徑 ap = argparse.ArgumentParser() ap.add_argument("-i", "--image", type=str, default="ml.jpg", help="path to the input image") args = vars(ap.parse_args()) # 從磁盤(pán)加載圖像并顯示 image = cv2.imread(args["image"]) image = imutils.resize(image, width=300) cv2.imshow("Original", image) # 將圖像向右移動(dòng)25像素,像下移動(dòng)50像素 M = np.float32([[1, 0, 25], [0, 1, 50]]) shifted = cv2.warpAffine(image, M, (image.shape[1], image.shape[0])) cv2.imshow("Shifted Down and Right", shifted) # 修改圖像向左移動(dòng)50像素,向上移動(dòng)90像素 M = np.float32([[1, 0, -50], [0, 1, -90]]) shifted = cv2.warpAffine(image, M, (image.shape[1], image.shape[0])) cv2.imshow("Shifted Up and Left", shifted) # 用一行代碼實(shí)現(xiàn)平移——imutils.translate shifted = imutils.translate(image, 0, 100) cv2.imshow("Shifted Down", shifted) cv2.waitKey(0) cv2.destroyAllWindows()
參考
到此這篇關(guān)于超詳細(xì)注釋之OpenCV操作圖像平移轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)OpenCV圖像平移轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python調(diào)用jar包方法實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Python調(diào)用jar包方法實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08python的構(gòu)建工具setup.py的方法使用示例
本篇文章主要介紹了python的構(gòu)建工具setup.py的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10python中使用PIL制作并驗(yàn)證圖片驗(yàn)證碼
本篇文章給大家分享了python中使用PIL制作并驗(yàn)證圖片驗(yàn)證碼的具體代碼以及說(shuō)明,需要的朋友參考下吧。2018-03-03淺談Python peewee 使用經(jīng)驗(yàn)
這篇文章主要介紹了淺談Python peewee 使用經(jīng)驗(yàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10Python正則表達(dá)式函數(shù)match()和search()使用全面指南
在Python中,正則表達(dá)式是強(qiáng)大的工具,能夠用于文本匹配、搜索和替換,re模塊提供了許多函數(shù)來(lái)處理正則表達(dá)式,其中match()和search()是兩個(gè)常用的函數(shù),本文將深入探討這兩個(gè)函數(shù)的用法、區(qū)別和示例,幫助你更好地理解它們的功能2024-01-01