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

OpenCV-Python學(xué)習(xí)(21)—— OpenCV 圖像幾何變換之圖像翻轉(zhuǎn)(cv.flip、np.flip)

這篇具有很好參考價(jià)值的文章主要介紹了OpenCV-Python學(xué)習(xí)(21)—— OpenCV 圖像幾何變換之圖像翻轉(zhuǎn)(cv.flip、np.flip)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 學(xué)習(xí)目標(biāo)

  1. 學(xué)習(xí) OpenCV 圖像的翻轉(zhuǎn)函數(shù) cv.flip;
  2. 學(xué)習(xí) NumPy 矩陣的反轉(zhuǎn)函數(shù) np.flip;
  3. 自己實(shí)現(xiàn)矩陣反轉(zhuǎn)的函數(shù)。

2. OpenCV 翻轉(zhuǎn)

翻轉(zhuǎn)也稱鏡像,是指將圖像沿軸線進(jìn)行軸對稱變換。水平鏡像是將圖像沿垂直中軸線進(jìn)行左右翻轉(zhuǎn),垂直鏡像是將圖像沿水平中軸線進(jìn)行上下翻轉(zhuǎn),水平垂直鏡像是水平鏡像和垂直鏡像的疊加。

2.1 cv.flip() 函數(shù)說明
cv.flip(src, flipCode[, dst]) -> dst
2.2 參數(shù)說明
參數(shù) 說明
src 表示輸入圖像。
flipCode 表示翻轉(zhuǎn)軸線的控制參數(shù),整型(int)。
dst 表示變換操作的輸出圖像,可選項(xiàng)。
2.3 flipCode 值說明
說明
0 表示水平翻轉(zhuǎn)。
1 表示垂直翻轉(zhuǎn)。
-1 表示對角線翻轉(zhuǎn)。

3. 翻轉(zhuǎn)實(shí)例

3.1 實(shí)例代碼
import cv2 as cv
import numpy as np

# 圖像翻轉(zhuǎn)
def image_flip():
  img = cv.imread("./images/lena.jpg")
  cv.imshow("original", img)
  # 水平翻轉(zhuǎn)
  horizontally_img = cv.flip(img,0)
  cv.imshow("horizontally_img", horizontally_img)
  # 垂直翻轉(zhuǎn)
  vertically_img = cv.flip(img,1)
  cv.imshow("vertically_img", vertically_img)
  # 對角線翻轉(zhuǎn)
  horizontally_vertically_img = cv.flip(img,-1)
  cv.imshow("horizontally_vertically_img", horizontally_vertically_img)
  cv.waitKey(0)
  cv.destroyAllWindows()
if __name__ == "__main__":
  image_flip()
3.2 翻轉(zhuǎn)效果

OpenCV-Python學(xué)習(xí)(21)—— OpenCV 圖像幾何變換之圖像翻轉(zhuǎn)(cv.flip、np.flip)

4. 矩陣反轉(zhuǎn)

4.1 np.flip() 函數(shù)說明
numpy.flip(array, axis) → dst_array
4.2 參數(shù)說明
參數(shù) 說明
array 表示輸入的數(shù)組。
axis 表示[integer]軸,陣列沿此軸反轉(zhuǎn)。
4.3 axis 值說明
說明
0 表示上下反轉(zhuǎn)。
1 表示左右反轉(zhuǎn)。

5. 反轉(zhuǎn)實(shí)例

5.1 實(shí)例代碼
import cv2 as cv
import numpy as np

# 陣列反轉(zhuǎn)
def image_np_flip():
  img = cv.imread("./images/lena_small.jpg")
  cv.imshow("original", img)
  # 水平翻轉(zhuǎn)
  horizontally_img = np.flip(img,0)
  cv.imshow("horizontally_img", horizontally_img)
  # 垂直翻轉(zhuǎn)
  vertically_img = np.flip(img,1)
  cv.imshow("vertically_img", vertically_img)
  # 對角線翻轉(zhuǎn)
  horizontally_vertically_img0 = np.flip(img,0)
  horizontally_vertically_img = np.flip(horizontally_vertically_img0,1)
  cv.imshow("horizontally_vertically_img", horizontally_vertically_img)
  cv.waitKey(0)
  cv.destroyAllWindows()
if __name__ == "__main__":
  image_np_flip()
5.2 反轉(zhuǎn)效果

OpenCV-Python學(xué)習(xí)(21)—— OpenCV 圖像幾何變換之圖像翻轉(zhuǎn)(cv.flip、np.flip)

6. 實(shí)現(xiàn)陣列反轉(zhuǎn)

6.1 實(shí)現(xiàn)陣列上下反轉(zhuǎn)
  1. 獲取陣列的寬高值;
  2. 復(fù)制一份改陣列,防止反轉(zhuǎn)的時(shí)候影響了原陣列;
  3. 上下翻轉(zhuǎn)只需要循環(huán)陣列的行,將第一行和最后一行互換,將第二行和倒數(shù)第二行互換?。?!
  4. 注意:由于 range 是從 0 開始,所以最后一行需要先減 1?。?!
  5. 注意:解構(gòu)賦值直接將兩個(gè)值進(jìn)行互換,但是換的第一個(gè)值需要復(fù)制一份互換np.copy(src[i])?。?!
# 上下翻轉(zhuǎn)
def flip_ud(src):
  h,w,c = src.shape
  src = np.copy(src)
  for i in range(h//2):
    # cur = np.copy(src[i])
    # src[i] = src[h-i-1]
    # src[h-i-1] = cur
    src[i],src[h-i-1] = src[h-i-1],np.copy(src[i])
  return src
6.2 實(shí)現(xiàn)陣列左右反轉(zhuǎn)
  1. 對比上下反轉(zhuǎn),左右反轉(zhuǎn)需要循環(huán)列一層的互換!??!
# 左右翻轉(zhuǎn)
def flip_lr(src):
  h,w,c = src.shape
  src = np.copy(src)
  for i in range(h):
    for j in range(w//2):
      src[i][j],src[i][w-j-1] = src[i][w-j-1],np.copy(src[i][j])
  return src
6.3 實(shí)現(xiàn)陣列左上角和右下角反轉(zhuǎn)
# 圖像左上角和右下角翻轉(zhuǎn)
def flip_lu_rd(src):
  h,w,c = src.shape
  src = np.copy(src)
  # 左上角和右下角翻轉(zhuǎn)
  for i in range(h//2):
    for j in range(w//2):
      src[i][j],src[h-i-1][w-j-1] = src[h-i-1][w-j-1],np.copy(src[i][j])
  return src
6.4 使用 6.3 的方法實(shí)現(xiàn)對角線反轉(zhuǎn)
  1. 圖像左上角和右下角翻轉(zhuǎn);
  2. 右上角和左下角翻轉(zhuǎn);
    2.1 左右翻轉(zhuǎn);
    2.2 圖像左上角和右下角翻轉(zhuǎn);
    2.3 左右翻轉(zhuǎn)圖像還原。
def flip_ud_lr(src):
  # 圖像左上角和右下角翻轉(zhuǎn)
  src = flip_lu_rd(src)
  # 右上角和左下角翻轉(zhuǎn)
  # 1. 左右翻轉(zhuǎn)
  src = flip_lr(src)
  # 2. 圖像左上角和右下角翻轉(zhuǎn)
  src = flip_lu_rd(src)
  # 3. 左右翻轉(zhuǎn)圖像還原
  src = flip_lr(src)
  return src
6.5 直接使用 6.1 和 6.2 實(shí)現(xiàn)對角線反轉(zhuǎn)
def flip_ud_lr(src):
  # 上下翻轉(zhuǎn)
  src = flip_ud(src)
  # 左右翻轉(zhuǎn)
  src = flip_lr(src)
  return src

7. 實(shí)現(xiàn)圖像翻轉(zhuǎn)實(shí)例

7.1 翻轉(zhuǎn)實(shí)例代碼
# 上下翻轉(zhuǎn)
def flip_ud(src):
  h,w,c = src.shape
  src = np.copy(src)
  for i in range(h//2):
    # cur = np.copy(src[i])
    # src[i] = src[h-i-1]
    # src[h-i-1] = cur
    src[i],src[h-i-1] = src[h-i-1],np.copy(src[i])
  return src

# 左右翻轉(zhuǎn)
def flip_lr(src):
  h,w,c = src.shape
  src = np.copy(src)
  for i in range(h):
    for j in range(w//2):
      src[i][j],src[i][w-j-1] = src[i][w-j-1],np.copy(src[i][j])
  return src

# 圖像左上角和右下角翻轉(zhuǎn)
def flip_lu_rd(src):
  h,w,c = src.shape
  src = np.copy(src)
  # 左上角和右下角翻轉(zhuǎn)
  for i in range(h//2):
    for j in range(w//2):
      src[i][j],src[h-i-1][w-j-1] = src[h-i-1][w-j-1],np.copy(src[i][j])
  return src

def flip_ud_lr(src):
  # 圖像左上角和右下角翻轉(zhuǎn)
  src = flip_lu_rd(src)
  # 右上角和左下角翻轉(zhuǎn)
  # 1. 左右翻轉(zhuǎn)
  src = flip_lr(src)
  # 2. 圖像左上角和右下角翻轉(zhuǎn)
  src = flip_lu_rd(src)
  # 3. 左右翻轉(zhuǎn)圖像還原
  src = flip_lr(src)
  return src

def image_self_flip():
  img = cv.imread("./images/lena_small.jpg")
  # cv.imshow("original", img)
  # 水平翻轉(zhuǎn)
  horizontally_img = flip_ud(img)
  cv.imshow("horizontally_img", horizontally_img)
  # 垂直翻轉(zhuǎn)
  vertically_img = flip_lr(img)
  cv.imshow("vertically_img", vertically_img)
  # 對角線翻轉(zhuǎn)
  horizontally_vertically_img = flip_ud_lr(img)
  cv.imshow("horizontally_vertically_img", horizontally_vertically_img)
  cv.waitKey(0)
  cv.destroyAllWindows()

if __name__ == "__main__":
  image_self_flip()
實(shí)現(xiàn)效果

OpenCV-Python學(xué)習(xí)(21)—— OpenCV 圖像幾何變換之圖像翻轉(zhuǎn)(cv.flip、np.flip)文章來源地址http://www.zghlxwxcb.cn/news/detail-459975.html

8. 總結(jié)

  1. 注意: 陣列的反轉(zhuǎn)OpenCV 的翻轉(zhuǎn) 對比,少了對角線翻轉(zhuǎn),但是使用【上下反轉(zhuǎn)+左右反轉(zhuǎn)】能夠?qū)崿F(xiàn)相同的效果;
  2. 自己使用循環(huán)陣列的方法實(shí)現(xiàn)水平、垂直、對角線翻轉(zhuǎn),但是相比原生方法,計(jì)算很慢,需要進(jìn)行優(yōu)化!?。?/li>

到了這里,關(guān)于OpenCV-Python學(xué)習(xí)(21)—— OpenCV 圖像幾何變換之圖像翻轉(zhuǎn)(cv.flip、np.flip)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 我在Vscode學(xué)OpenCV 幾何變換(縮放、翻轉(zhuǎn)、仿射變換、透視、重映射)

    我在Vscode學(xué)OpenCV 幾何變換(縮放、翻轉(zhuǎn)、仿射變換、透視、重映射)

    幾何變換指的是將一幅圖像映射到另一幅圖像內(nèi)的操作。 cv2.warpAffine :使用仿射變換矩陣對圖像進(jìn)行變換,可以實(shí)現(xiàn)平移、縮放和旋轉(zhuǎn)等操作。 cv2.warpPerspective :使用透視變換矩陣對圖像進(jìn)行透視變換,可以實(shí)現(xiàn)鏡頭校正、圖像糾偏等操作。 cv2.getAffineTransform :計(jì)算仿射變換

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

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

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

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

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

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

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

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

    對圖像進(jìn)行各種幾個(gè)變換,例如移動,旋轉(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()實(shí)

    2024年02月13日
    瀏覽(97)
  • 【OpenCV ? c++】圖像幾何變換 | 圖像仿射變換

    【OpenCV ? c++】圖像幾何變換 | 圖像仿射變換

    ?? 個(gè)人簡介:CSDN「 博客新星 」TOP 10 , C/C++ 領(lǐng)域新星創(chuàng)作者 ?? 作 ?? 者: 錫蘭_CC ?? ?? 專 ?? 欄: 【OpenCV ? c++】計(jì)算機(jī)視覺 ?? 若有幫助,還請 關(guān)注?點(diǎn)贊?收藏 ,不行的話我再努努力??????

    2024年02月16日
    瀏覽(92)
  • 【C++ OpenCV】圖像變換:連接、尺寸、翻轉(zhuǎn)、旋轉(zhuǎn)、仿射變換

    【C++ OpenCV】圖像變換:連接、尺寸、翻轉(zhuǎn)、旋轉(zhuǎn)、仿射變換

    目錄 圖像縮放變換 圖像翻轉(zhuǎn) 圖像拼接 縱向拼接 橫向拼接 圖像插值原理 作用 單線性插值 雙線性插值的公式 雙線性插值的例子 雙線性插值的直觀展示 意義 仿射變換 圖像旋轉(zhuǎn) 實(shí)操 一、實(shí)現(xiàn)圖像旋轉(zhuǎn) 二、根據(jù)定義的三個(gè)點(diǎn)實(shí)現(xiàn)仿射變換,并且求取仿射變換矩陣 源碼 src -

    2024年01月18日
    瀏覽(1257)
  • (opencv)圖像幾何變換——縮放

    (opencv)圖像幾何變換——縮放

    圖像縮放是指將圖像的尺寸變小或變大的過程,也就是減少或增加源圖像數(shù)據(jù)的像素個(gè)數(shù)。圖像縮放一定程度上會造成信息的丟失,因此需要考慮適宜的方法進(jìn)行操作。 下面介紹兩種常用的圖像縮放方法的原理及實(shí)現(xiàn) 1.基于等間隔提取圖像縮放 等間隔提取圖像縮放是通過對

    2024年02月16日
    瀏覽(29)
  • (opencv)圖像幾何變換——平移

    (opencv)圖像幾何變換——平移

    圖像的平移操作是將圖像的所有像素坐標(biāo)進(jìn)行水平或垂直方向移動,也就是將所有像素點(diǎn)按照給定的偏移量在水平方向沿x軸、垂直方向上沿y軸移動。平移變換分為兩種類型:圖像大小變化與圖像大小不變。第一種類型保證圖像平移的完整信息,第二種圖像導(dǎo)致原始圖像的部

    2024年02月08日
    瀏覽(27)
  • 【OpenCV ? c++】圖像幾何變換 | 圖像旋轉(zhuǎn)

    【OpenCV ? c++】圖像幾何變換 | 圖像旋轉(zhuǎn)

    ?? 個(gè)人簡介:CSDN「 博客新星 」TOP 10 , C/C++ 領(lǐng)域新星創(chuàng)作者 ?? 作 ?? 者: 錫蘭_CC ?? ?? 專 ?? 欄: 【OpenCV ? c++】計(jì)算機(jī)視覺 ?? 若有幫助,還請 關(guān)注?點(diǎn)贊?收藏 ,不行的話我再努努力?????? ??圖像的幾何變換是指在不改變圖像像素值的前提下對圖像像素進(jìn)

    2024年02月16日
    瀏覽(99)
  • 【OpenCV ? c++】圖像幾何變換 | 圖像縮放

    【OpenCV ? c++】圖像幾何變換 | 圖像縮放

    ?? 個(gè)人簡介:CSDN「 博客新星 」TOP 10 , C/C++ 領(lǐng)域新星創(chuàng)作者 ?? 作 ?? 者: 錫蘭_CC ?? ?? 專 ?? 欄: 【OpenCV ? c++】計(jì)算機(jī)視覺 ?? 若有幫助,還請 關(guān)注?點(diǎn)贊?收藏 ,不行的話我再努努力??????

    2024年02月16日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包