## python影像處理
要做影像處理,我們使用工具有
**requests**(處理該圖片網址)
**pillow(PIL)** (python的影像處理套件)
**io** (轉換影像url為其他形式保存)
**matplotlib.pyplot** (繪圖)
```python=
import requests
from PIL import Image, ImageEnhance
from io import BytesIO
import matplotlib.pyplot as plt
url = "https://web.ncku.edu.tw/var/file/0/1000/img/DSC01181ok.jpg" #目標網址
response = requests.get(url) #讀取該網址內容
image=Image.open(BytesIO(response.content)) #image.open為產生一個image物件,有自身屬性
plt.axis('off') # 不顯示座標軸
plt.imshow(image) #plt.imshow 顯示
```
執行結果:

為了方便,寫出一個download圖片的函數,把圖片變成一種變數
```python=
def download_image(url): #下載圖片函數
response = requests.get(url) #讀取該網址內容
image = Image.open(BytesIO(response.content)) #IO為把文件轉成圖片
return image
```
### 將兩張圖合起來
```python=
def concatenate_images(image1, image2): #合併圖片的函數
total_width = image1.width + image2.width #寬度相加 #物件的屬性
max_height = max(image1.height, image2.height) #兩張圖片高度切齊(取最高)
#PIL.Image.new(mode,size) #創建一個空的image,規格為兩張圖合併後大小
new_image = Image.new('RGB', (total_width, max_height))
new_image.paste(image1, (0, 0))
new_image.paste(image2, (image1.width, 0)) #圖片的位置也有起始點和終點跟座標系統差不多概念
return new_image
```
### 色調調整
```python=
color_enhancer = ImageEnhance.Color(image) #創建一個顏色增強對象
enhanced_image = color_enhancer.enhance(2.0) # 增强颜色饱和度
combined_image = concatenate_images(image, enhanced_image)
plt.imshow(combined_image)
plt.axis('off') # 不顯示座標軸
plt.show()
```
色調調整後跟原本圖片合併,結果:

### 亮度增強
```python=
brightness_enhancer = ImageEnhance.Brightness(image) #創建亮度增強對象
brightened_image = brightness_enhancer.enhance(1.5) # 增加亮度
combined_image = concatenate_images(image, brightened_image)
plt.imshow(combined_image)
plt.axis('off') # 不顯示座標軸
plt.show()
```
亮度增強後與原本圖片合併,結果:

### other transformation
```python=
gray_image = image.convert("L") #"L"為灰階
combined_image = concatenate_images(image, gray_image)
plt.imshow(combined_image)
plt.axis('off') # 不顯示座標軸
plt.show()
```
#其他轉換模式:https://blog.csdn.net/icamera0/article/details/50843172
圖片灰化後與原本圖片合併,結果:

### 高斯模糊
```python=
from PIL import ImageFilter #模糊濾鏡
blurred_image = image.filter(ImageFilter.GaussianBlur(radius=100)) #高斯模糊(GaussianBlur)為濾波器的一種
combined_image = concatenate_images(image, blurred_image)
plt.imshow(combined_image)
plt.axis('off') # 不顯示座標軸
plt.show()
```
高斯模糊後與原本圖片合併,結果:

### 套用反RGB
```python=
width, height = image.size #得到該圖片長度寬度
negative_image = Image.new("RGB", (width, height)) #創建一個大小相同空白圖片
# 遍歷每格PIXEL取得像素值
for x in range(width):
for y in range(height):
pixel = image.getpixel((x, y)) #它是取每個位置(x,y)的(r,g,b)值
inverted_pixel = tuple(255 - value for value in pixel) #反RGB是用256減去該RGB值
negative_image.putpixel((x, y), inverted_pixel) #在該圖片的像素位置上填充反轉後RGB
combined_image = concatenate_images(image, negative_image)
plt.imshow(combined_image)
plt.axis('off') # 不顯示座標軸
plt.show()
```
結果為:
