OpenCV圖片沿對角線調換
1、在學習左上角和右下角對調之前,我們有必要了解一下什麼是水平方向對調圖片和豎直方向對調圖片。
2、在開始圖片對調之前,我們思考一下這個問題
我們將A1和B7進行互換,A2和B6進行互換,以此類推,將A組元素和B組元素對角線互換,得到新的A和B,我們對圖片進行的對角線調換也是這個原理。
3、代碼實現:
import cv2 as cv
import numpy as np
# 要進行調換的圖片
img = cv.imread("D:/img/pic (1).png",1)
# 獲取圖片基本信息
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
mode = imgInfo[2]
# 獲取原圖的第一個鏡像爲了下面以橫軸爲主進行調換操作
dst1 = np.zeros(imgInfo,np.uint8)
np.copyto(dst1,img)
# 獲取原圖的第二個鏡像爲了下面以橫軸爲主進行調換操作
dst2 = np.zeros(imgInfo,np.uint8)
np.copyto(dst2,img)
# 展示原圖像
cv.imshow("img",img)
# 以橫軸爲主進行圖像對角調換
for i in range(0,width):
# 此處的分界點是豎直方向的一半
for j in range(0,int(height/2)):
dst1[i][j] += dst1[width-1-i][height-1-j]
dst1[width-1-i][height-1-j] = dst1[i][j] - dst1[width-1-i][height-1-j]
dst1[i][j] -= dst1[width-1-i][height-1-j]
# 以縱軸爲主進行對角調換
for i in range(0,height):
# 此處的分界點是水平方向的一半
for j in range(0,int(width/2)):
dst2[i][j] += dst2[width-1-i][height-1-j]
dst2[width-1-i][height-1-j] = dst2[i][j] - dst2[width-1-i][height-1-j]
dst2[i][j] -= dst2[width-1-i][height-1-j]
# 展示調換後的圖一和圖二
cv.imshow("dst1",dst1)
cv.imshow("dst2",dst2)
cv.waitKey(0)
cv.destroyAllWindows()
上述代碼運行結果如下圖所示:
總結,從簡單的換位置思考這個問題更容易上手,此圖和該圖旋轉360度得到的圖像應該是一直的。