# 數據建模-數據集處理
*****
**以下內容均按照作者的個人思路去編排,如果有更好的想法等,則以自己的優先**
*****
## 一、圖像切割
### 1. 定義:圖像切割的意思是**截取圖像的某一部分,達到分割的目的**
### 2. 范例:
①首先是原始圖像

?顯然這是一幅山景圖,如果把這個圖像**畫兩條水平和豎直的對稱軸,圖像就可以被分為四塊**

現在我們**想要截取圖像的某一角**,該怎么實現呢?下面的‘**代碼實踐**‘將會教給大家
②'代碼實踐'
```
import cv2
# 【指定圖像文件路徑(此處使用絕對路徑)】
img = cv2.imread('D:/Source Code/Python/Conda/AI/exampls/seg_train/seg_train/forest/8.jpg',1)#(1彩色讀取,0灰度讀取)
##
image_width = img.shape[1]#圖像的水平尺寸(寬度)
image_height = img.shape[0]#圖像的垂直尺寸(高度)
### 【裁剪圖像,0,0代表圖像左上角的坐標(起始坐標)】
# 【左上部分截取】
imCrop_left_top = img[0 : image_height//2, 0:image_width//2]
# 【左下部分截取】
imCrop_left_down = img[image_height//2 : image_height, 0:image_width//2]
#【右上部分截取】
imCrop_right_top = img[0 : image_height//2, image_width//2:image_width]
#【右下部分截取】
imCrop_right_down = img[image_height//2 : image_height, image_width//2:image_width]
# #######顯示圖片的代碼########
# 【顯示原始圖像】
cv2.imshow('image',img) #(窗口標題,圖像)
cv2.namedWindow('image',cv2.WINDOW_NORMAL)#(窗口標題,cv2.WINDOW_AUTOSIZE:自動調節大小/cv2.WINDOW_NORMAL:手動調節大小)
# 【顯示左上圖像】
cv2.imshow("left_top", imCrop_left_top)
# 【顯示左下圖像】
cv2.imshow("left_down", imCrop_left_down)
# 【顯示右上圖像】
cv2.imshow("right_top", imCrop_right_top)
# 【顯示右下圖像】
cv2.imshow("right_down", imCrop_right_down)
##以下兩行代碼很重要
cv2.waitKey()#(展示圖像的窗口持續顯示多少秒,0/空:一直顯示直到按下鍵位)
cv2.destroyAllWindows()#(刪除所有圖像展示窗口)
--------------------------------------------------------------------
##亦可用matplotlib顯示
#import?matplotlib.pylab?as?plt #(加載庫)
#plt.subplot(2,?2,?1) #(行,列,位置)
#plt.imshow(img) #顯示圖片
---------------------------------------------------------------------
```
結果:(與之類似即可)

* 拓展學習
上述范例中,給予的是最基礎的例子,如果大家想要更深一步的去研究,可以[訪問本鏈接](https://blog.csdn.net/weixin_40633696/article/details/108838547?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-15.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-15.no_search_link)進行學習
*****
## 二、圖像幾何變換
1. ### 翻轉圖片
```
#Ⅰ.讀取圖片
import cv2
img = cv2.imread('D:/Source Code/Python/Conda/AI/exampls/pokeman/pokemanpicture/pikachu/1.jpg',1)#(注意是反斜杠)
#Ⅱ.水平翻轉
img1=cv2.flip(img,1)
#Ⅲ.垂直翻轉
img2=cv2.flip(img,0)
#Ⅲ.水平垂直翻轉
img3=cv2.flip(img,-1)
#Ⅳ.展示圖片
cv2.imshow('image',img)
cv2.imshow('image1',img1)
cv2.imshow('image2',img2)
cv2.imshow('image3',img3)
#*必要的部分
cv2.waitKey()
cv2.destroyAllWindows()
```
結果:(與之類似即可)

*****
### 2. 縮放圖片
```
import cv2
img = cv2.imread('D:/Source Code/Python/Conda/AI/exampls/pokeman/pokemanpicture/pikachu/1.jpg',1)#(注意是反斜杠)
#(打印原圖片的尺寸,輸出值為高,寬,通道數:1:單色(灰色等),2:不常見,可忽略,3:常指RGB彩色,4:在'3'的基礎上多了'透明度'的通道)
print(img.shape)
# 將圖片高和寬分別賦值給x,y
x, y = img.shape[0:2]
# 縮放到原來的二分之一,這里要注意,輸出尺寸格式為(寬,高)
img_test1 = cv2.resize(img, (int(y / 2), int(x / 2)))
#打印縮放后的圖片的尺寸
print(img_test1.shape)
# 顯示原圖
cv2.imshow('OriginalPicture', img)
#顯示縮放后的圖
cv2.imshow('resize0', img_test1)
cv2.waitKey()
cv2.destroyAllWindows()
```
結果:(與之類似即可)

* 拓展學習
上述范例中,給予的是最基礎的例子,如果大家想要更深一步的去研究,可以[訪問本鏈接](https://www.jianshu.com/p/79052fbf477d)進行學習
*****
### 3. 剪裁圖片
```
import cv2
import matplotlib.pylab as plt
img = cv2.imread("D:/Source Code/Python/Conda/AI/exampls/pokeman/pokemanpicture/pikachu/1.jpg",1)
#直接讀取圖像會變色,因為opencv是按照bgr通道讀取的
#讀取源圖像,并顯示
(r, g, b) = cv2.split(img)#(把img圖像的通道拆分為r通道,g通道,b通道)
img = cv2.merge([b, g, r])#(將r通道,g通道,b通道合并成bgr通道,賦給img)
plt.subplot(2, 2, 1)
plt.imshow(img)
#對圖像進行剪裁
img1=img[250:750,0:500]#保留的部分(y:起始:終止,x:起始:終止)
plt.subplot(2,2,2)
plt.imshow(img1)
```
結果:(與之類似即可)

* 拓展學習
上述范例中,給予的是最基礎的例子,如果大家想要更深一步的去研究,可以[訪問本鏈接](https://www.jb51.net/article/211183.htm)進行學習
*****
### 4. 灰度化圖片
```
import cv2
#直接在讀取的時候進行灰度化
img = cv2.imread("D:/Source Code/Python/Conda/AI/data/seg_data/seg_train/seg_train/forest/8.jpg",0)
print(img.shape)
#采用cv2.COLOR_RGB2GRAY函數
img1 = cv2.imread("D:/Source Code/Python/Conda/AI/data/seg_data/seg_train/seg_train/forest/8.jpg",1)
print(img1.shape)
dst = cv2.cvtColor(img1,cv2.COLOR_RGB2GRAY)#灰度化
print(dst.shape)
cv2.imshow("img",img)
cv2.imshow("img0",img1)
cv2.imshow("dst",dst)
cv2.waitKey()
```
結果:(與之類似即可)

* 拓展學習
上述范例中,給予的是最基礎的例子,如果大家想要更深一步的去研究,可以[訪問本鏈接](https://www.cnblogs.com/zhouzetian/p/12837120.html)進行學習