国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

OpenCV(圖像處理)-基于Python-圖像的基本變換-平移-翻轉(zhuǎn)-仿射變換-透視變換

這篇具有很好參考價值的文章主要介紹了OpenCV(圖像處理)-基于Python-圖像的基本變換-平移-翻轉(zhuǎn)-仿射變換-透視變換。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

OpenCV(圖像處理)-基于Python-圖像的基本變換-平移-翻轉(zhuǎn)-仿射變換-透視變換

1. 概述

為了方便開發(fā)人員的操作,OpenCV還提供了一些圖像變換的API,本篇文章講簡單介紹各種API的使用,并附上一些樣例。

2. 接口介紹

resize()

圖像縮放函數(shù),用于把圖像按指定的尺寸放大或縮小。
dst = cv2.resize(src, dsize, fx, fy, interpolation)
dst = 生成的目的圖像
src:需要變換的原圖像
disize:(x, y)需要變換圖像的尺寸,直接填
fx,fy:縮放因子,與disize會沖突,通常只需要二選一即可
interpolation:插值算法,用于縮放的算法。默認為雙線性插值。

縮放算法參數(shù)
OpenCV(圖像處理)-基于Python-圖像的基本變換-平移-翻轉(zhuǎn)-仿射變換-透視變換
效果越好的算法運算越復(fù)雜,效果越好。反之相反。

import cv2
import numpy as np

lina = cv2.imread('./image/lina.jpg')
print(lina.shape)
# 修改圖像大?。篺x,fy可以省略,默認為雙線性插值
lina2 = cv2.resize(lina, (700, 700))
# 使用縮放因子,需要指定參數(shù),并且dsize傳空
lina3 = cv2.resize(lina, None, fx=2, fy=2, interpolation=cv2.INTER_AREA)

cv2.imshow('lina', lina)
cv2.imshow('lina3', lina3)

cv2.waitKey(0)

OpenCV(圖像處理)-基于Python-圖像的基本變換-平移-翻轉(zhuǎn)-仿射變換-透視變換

flip()

圖像翻轉(zhuǎn)函數(shù),講圖像上下翻轉(zhuǎn),左右翻轉(zhuǎn)
img1 = cv2.flip(img,flipCode)
img:需要翻轉(zhuǎn)的圖片
flipCode:值為0,上下翻轉(zhuǎn);值>0,左右翻轉(zhuǎn);值<0,上下左右一起翻轉(zhuǎn)。

import cv2
import numpy as np

lina = cv2.imread('./image/lina.jpg')
print(lina.shape)
# 上下翻轉(zhuǎn)
lina_0 = cv2.flip(lina, 0)
# 左右翻轉(zhuǎn)
lina_1 = cv2.flip(lina, 1)
# 上下左右翻轉(zhuǎn)
lina_01 = cv2.flip(lina, -1)

cv2.imshow('lina', lina)
cv2.imshow('lina_0', lina_0)
cv2.imshow('lina_1', lina_1)
cv2.imshow('lina_01', lina_01)

cv2.waitKey(0)

OpenCV(圖像處理)-基于Python-圖像的基本變換-平移-翻轉(zhuǎn)-仿射變換-透視變換

rotate()

將圖片按順時針逆時針旋轉(zhuǎn)一定角度
img2 = cv2.rotate(img, rotateCode)
img:需要旋轉(zhuǎn)的圖片
rotateCode:含義分別為:順時針轉(zhuǎn)90,180度,逆時針轉(zhuǎn)90度。

rotateCode
OpenCV(圖像處理)-基于Python-圖像的基本變換-平移-翻轉(zhuǎn)-仿射變換-透視變換

import cv2
import numpy as np

lina = cv2.imread('./image/lina.jpg')
print(lina.shape)

# 順時針轉(zhuǎn)90
lina_90 = cv2.rotate(lina, cv2.ROTATE_90_CLOCKWISE)

# 順時針轉(zhuǎn)180
lina_180 = cv2.rotate(lina, cv2.ROTATE_180)

# 順時針轉(zhuǎn)270,逆時針轉(zhuǎn)90
lina_270 = cv2.rotate(lina, cv2.ROTATE_90_COUNTERCLOCKWISE)
cv2.imshow('lina', lina)
cv2.imshow('lina_90', lina_90)
cv2.imshow('lina_180', lina_180)
cv2.imshow('lina_270', lina_270)

cv2.waitKey(0)

OpenCV(圖像處理)-基于Python-圖像的基本變換-平移-翻轉(zhuǎn)-仿射變換-透視變換

仿射變換

仿射變換是圖像旋轉(zhuǎn)、縮放、平移的總成。

warpAffine()

img2 = cv2.warp(src, M, dsize, flags, mode, value)
src:需要變換的圖像
M:進行變換的矩陣,變換成什么樣子由M決定,可以由特定接口來求。
dsize:輸出圖像的尺寸
flags:與resize函數(shù)的縮放算法一致,默認為雙線性插值。
mode:邊界處標(biāo)志
value:填充邊界的值
后三個參數(shù)一般都用默認,主要使用前3個參數(shù)

getRotationMatrix2D()-變換矩陣1

求變換矩陣M的函數(shù),主要用于旋轉(zhuǎn)
M = cv2.getRotationMatrix2D(center, angle, scale)
center:中心點,按住哪個點進行旋轉(zhuǎn)
angle:旋轉(zhuǎn)的角度(逆時針旋轉(zhuǎn))
scale:縮放比例,1.0不縮放

import cv2
import numpy as np

lina = cv2.imread('./image/lina.jpg')
print(lina.shape)

# 變換前要求出變換矩陣

M = cv2.getRotationMatrix2D((200, 200), 30, 1.0)
lina2 = cv2.warpAffine(lina, M, (474, 474))



cv2.imshow('lina', lina)
cv2.imshow('lina2', lina2)


cv2.waitKey(0)

OpenCV(圖像處理)-基于Python-圖像的基本變換-平移-翻轉(zhuǎn)-仿射變換-透視變換

getAffineTransform()-變換矩陣2

求變換矩陣M,主要是用于平移+旋轉(zhuǎn),利用三個坐標(biāo)點前后變化來確定一個平面的變化
M = cv2.getAffineTransform(src[], dst[])
src:源坐標(biāo)點,以列表的形式傳入(數(shù)據(jù)格式一定為float32
dst:變換后圖的坐標(biāo),以列表的形式傳入(數(shù)據(jù)格式一定為float32

import cv2
import numpy as np

lina = cv2.imread('./image/lina.jpg')
print(lina.shape)


# 變換前要求出變換矩陣
# 坐標(biāo)一定要是32位的小數(shù)??!否則會報錯
src = np.float32([[0, 0], [0, 100], [100, 0]])
dst = np.float32([[50, 50], [50, 150], [200,50]])
M = cv2.getAffineTransform(src, dst)
lina2 = cv2.warpAffine(lina, M, (474, 474))


cv2.imshow('lina', lina)
cv2.imshow('lina2', lina2)


cv2.waitKey(0)

透視變換

完全改變物體的位置和形狀,需要四個坐標(biāo)點。一般用來調(diào)整圖片的位置。

warpPerspective()

用于透視變換的主函數(shù)
img2 = cv2.warpPerspective(img, M, dsize, …)
img:需要進行變換的圖像
M:進行透視變換的矩陣
dsize:輸出圖片的大小

getPerspectiveTransform()

用來求透視變換的矩陣,需要四個點
M = cv2.getPerspectiveTransform(src[], dst[])
src:源坐標(biāo)點,以列表的形式傳入(數(shù)據(jù)格式一定為float32
dst:變換后圖的坐標(biāo),以列表的形式傳入(數(shù)據(jù)格式一定為float32

import cv2
import numpy as np

work = cv2.imread('./image/work.jpg')
# 將圖片調(diào)整到適合大小
work = cv2.resize(work, (700, 700), interpolation=cv2.INTER_AREA)
# 設(shè)置適當(dāng)變換坐標(biāo),求出變換矩陣
src = np.float32([[210, 20], [700, 110], [0, 660], [600, 700]])
dst = np.float32([[0, 0], [700, 0], [0, 700], [700, 700]])
M = cv2.getPerspectiveTransform(src, dst)
# 進行透視變換
work2 = cv2.warpPerspective(work, M, (700, 700))
cv2.imshow('work', work)
cv2.imshow('work2', work2)


cv2.waitKey(0)

變換后如圖所示,將主要圖片變正了
OpenCV(圖像處理)-基于Python-圖像的基本變換-平移-翻轉(zhuǎn)-仿射變換-透視變換

以上就是圖像變換的簡單介紹,如果有疑問,歡迎在評論區(qū)討論哦。文章來源地址http://www.zghlxwxcb.cn/news/detail-476056.html

到了這里,關(guān)于OpenCV(圖像處理)-基于Python-圖像的基本變換-平移-翻轉(zhuǎn)-仿射變換-透視變換的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Python-OpenCV中的圖像處理-霍夫變換

    Python-OpenCV中的圖像處理-霍夫變換

    霍夫(Hough)變換在檢測各種形狀的技術(shù)中非常流行,如果要檢測的形狀可以用數(shù)學(xué)表達式描述,就可以是使用霍夫變換檢測它。即使要檢測的形狀存在一點破壞或者扭曲也是可以使用。 Hough直線變換,可以檢測一張圖像中的直線 cv2.HoughLines(image, rho, theta, threshold) return:返回值

    2024年02月13日
    瀏覽(124)
  • OpenCV-Python中的圖像處理-霍夫變換

    OpenCV-Python中的圖像處理-霍夫變換

    霍夫(Hough)變換在檢測各種形狀的技術(shù)中非常流行,如果要檢測的形狀可以用數(shù)學(xué)表達式描述,就可以是使用霍夫變換檢測它。即使要檢測的形狀存在一點破壞或者扭曲也是可以使用。 Hough直線變換,可以檢測一張圖像中的直線 cv2.HoughLines(image, rho, theta, threshold) return:返回值

    2024年02月12日
    瀏覽(30)
  • Python-OpenCV中的圖像處理-幾何變換

    Python-OpenCV中的圖像處理-幾何變換

    對圖像進行各種幾個變換,例如移動,旋轉(zhuǎn),仿射變換等。 cv2.resize() cv2.INTER_AREA v2.INTER_CUBIC v2.INTER_LINEAR res = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC) 或 height, width = img.shape[:2] res = cv2.resize(img, (2 width, 2 height), interpolation=cv2.INTER_CUBIC) OpenCV提供了使用函數(shù)cv2.warpAffine()實

    2024年02月13日
    瀏覽(97)
  • Python-OpenCV中的圖像處理-傅里葉變換

    Python-OpenCV中的圖像處理-傅里葉變換

    傅里葉變換經(jīng)常被用來分析不同濾波器的頻率特性。我們可以使用 2D 離散傅里葉變換 (DFT) 分析圖像的頻域特性。實現(xiàn) DFT 的一個快速算法被稱為快速傅里葉變換( FFT)。 對于一個正弦信號:x (t) = A sin (2πft), 它的頻率為 f,如果把這個信號轉(zhuǎn)到它的頻域表示,我們會在頻率

    2024年02月12日
    瀏覽(22)
  • OpenCV-Python中的圖像處理-傅里葉變換

    OpenCV-Python中的圖像處理-傅里葉變換

    傅里葉變換經(jīng)常被用來分析不同濾波器的頻率特性。我們可以使用 2D 離散傅里葉變換 (DFT) 分析圖像的頻域特性。實現(xiàn) DFT 的一個快速算法被稱為快速傅里葉變換( FFT)。 對于一個正弦信號:x (t) = A sin (2πft), 它的頻率為 f,如果把這個信號轉(zhuǎn)到它的頻域表示,我們會在頻率

    2024年02月12日
    瀏覽(22)
  • Python圖像處理【10】基于離散余弦變換的圖像壓縮

    由于圖像中相鄰像素間的相關(guān)性引起的空間冗余、圖像序列中不同幀之間存在相關(guān)性引起的時間冗余,因此我們需要對圖像數(shù)據(jù)進行壓縮。數(shù)據(jù)壓縮的目的就是通過去除這些數(shù)據(jù)冗余來減少數(shù)據(jù)表示所占用的存儲空間。隨著大數(shù)據(jù)時代的到來,圖像數(shù)據(jù)在質(zhì)量提高的同時,其

    2024年02月04日
    瀏覽(90)
  • Python|OpenCV-基本使用和圖像處理(1)

    前言 本文是該專欄的第1篇,后面將持續(xù)分享OpenCV計算機視覺的干貨知識,記得關(guān)注。 OpenCV是基于開源許可的跨平臺計算機 視覺庫 ,起初OpenCV是由Intel公司開發(fā)的,直到后面由非營利組織進行維護。提到OpenCV,就不得不說它提供了大量的圖像和視頻處理函數(shù),使得計算機視覺

    2024年02月12日
    瀏覽(110)
  • opencv 圖像和視頻處理的基本操作(python)

    opencv 圖像和視頻處理的基本操作(python)

    原圖: ? 1 圖片的獲取 主要通過cv2.imread(src)函數(shù)進行獲取 2 圖片的顯示 3 ROI區(qū)域(圖片截?。?4 圖片的RGB通道劃分 注意cv2.imread()獲取的圖片通過順序為BGR,而非RGB,即B為0,G為1,R為2 ?保留R通道 ?保留G通道 ? 保留B通道 ? 5 RGB通道合成 ? 6 邊界填充 主要是通過cv2.copyMakeBo

    2023年04月21日
    瀏覽(90)
  • 【OpenCV實現(xiàn)圖像:使用OpenCV進行圖像處理之透視變換】

    【OpenCV實現(xiàn)圖像:使用OpenCV進行圖像處理之透視變換】

    透視變換(Perspective Transformation)是一種圖像處理中常用的變換手段,它用于將圖像從一個視角映射到另一個視角,常被稱為投影映射。透視變換可以用于矯正圖像中的透視畸變,使得圖像中的物體在新的視平面上呈現(xiàn)更加規(guī)則的形狀。 透視變換通常涉及到尋找圖像中的特定

    2024年02月03日
    瀏覽(30)
  • OpenCV圖像處理之傅里葉變換

    OpenCV圖像處理之傅里葉變換

    傅里葉變換: 目的就是得到圖像的低頻和高頻,然后針對低頻和高頻進行不同的處理。處理完之后,在通過逆變換恢復(fù)到圖像,這時候?qū)Φ皖l和高頻的處理就會反映到圖像上。 頻率 高頻:變化劇烈的灰度分量,例如邊界。 低頻:變化緩慢的灰度分量,例如一天藍天(相似的

    2024年02月06日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包