###### tags: `OpenCV`,`影像處理`,`鏡像處理`
# OpenCV 基礎篇-實作-惡搞我家小孩part2(鏡像處理,垂直與水平鏡像)
挑選照片(手機照片尺寸過大,先用resize處理一下照片)
```python=
import matplotlib.pyplot as plt
import cv2
import numpy as np
img = cv2.imread('photo3-1.jpg')
img_resize = cv2.resize(img, (0,0), fx=0.6, fy=0.6) #原尺寸過大 調整一下尺寸
plt.imshow(img_resize[:,:,::-1]) #把BGR調成RBG
img_resize.shape #確定一下尺寸 #(451, 638, 3)
```

```python=
#先做出雙倍高的空間,上層為原照片
imgNew = np.zeros((902,626,3),dtype=np.uint8) #451*2 = 902
imgNew[:451,:] = img_resize #row [0:451]為原圖 先做上半部
plt.imshow(imgNew[:,:,::-1])
```

```python=
#做出顛倒的一張
imgInverted = img_resize[::-1,:,:] #row顛倒
#顏色再顛倒
plt.imshow(imgInverted[:,:,::-1]) #把BGR調成RBG
```

```python=
#加入下半部
imgNew[451:][:] = imgInverted
plt.imshow(imgNew[:,:,::-1])
```

**水平鏡像**
```python=
import matplotlib.pyplot as plt
import cv2
import numpy as np
img1 = cv2.imread('photo7.jpg')
plt.imshow(img1[:,:,::-1]) #把BGR調成RBG
img1.shape #(860, 431, 3)
cv2.imwrite("photo7-1.jpg",img1)
```

```python=
#column相反
imgInverted1 = img1[:,::-1,:]
#顏色再顛倒
plt.imshow(imgInverted1[:,:,::-1])
imgInverted1.shape #(860, 431, 3)
cv2.imwrite("photo7-2.jpg",imgInverted1)
```

```python=
img_con = cv2.hconcat([img1, imgInverted1])
plt.imshow(img_con[:,:,::-1])
cv2.imwrite("photo7-3.jpg",img_con)
img_con.shape #(860, 862, 3)
```

**CV2.HCONCAT() AND CV2.VCONCAT()**
cv2.hconcat([img1, img2, ...])
* 水平串接
* 照片高度需相同(row),channels也要一致
* 照片寬度可以不同(columns)
cv2.vconcat([img1, img2, ...])
* 垂直串接
* 照片寬度需相同(columns),channels也要一致
* 照片高度可以不同(rows)