本文實(shí)例講述了python圖像處理之鏡像實(shí)現(xiàn)方法。分享給大家供大家參考。具體分析如下:
圖像的鏡像變化不改變圖像的形狀。圖像的鏡像變換分為三種:水平鏡像、垂直鏡像、對(duì)角鏡像
設(shè)圖像的大小為M×N,則
水平鏡像可按公式
I = i
J = N - j + 1
垂直鏡像可按公式
I = M - i + 1
J = j
對(duì)角鏡像可按公式
I = M - i + 1
J = N - j + 1
值得注意的是在OpenCV中坐標(biāo)是從[0,0]開始的
所以,式中的 +1 在編程時(shí)需要改為 -1
這里運(yùn)行環(huán)境為:
Python為:Python2.7.6
OpenCV2.4.10版(可到http://sourceforge.net/projects/opencvlibrary/files/opencv-win/下載)
numpy為:numpy-1.9.1-win32-superpack-python2.7(可到http://sourceforge.net/projects/numpy/files/NumPy/1.9.1/下載)
下面的代碼仍以baby美圖為例具體程序如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import cv2.cv as cv image = cv.LoadImage( 'angelababy.jpg' , 1 ) size = (image.width,image.height) iUD = cv.CreateImage(size,image.depth,image.nChannels) iLR = cv.CreateImage(size,image.depth,image.nChannels) iAcross = cv.CreateImage(size,image.depth,image.nChannels) h = image.height w = image.width for i in range (h): for j in range (w): iUD[h - 1 - i,j] = image[i,j] iLR[i,w - 1 - j] = image[i,j] iAcross[h - 1 - i,w - 1 - j] = image[i,j] cv.ShowImage( 'image' ,image) cv.ShowImage( 'iUD' ,iUD) cv.ShowImage( 'iLR' ,iLR) cv.ShowImage( 'iAcross' ,iAcross) cv.WaitKey( 0 ) |
運(yùn)行結(jié)果如下圖所示:
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。