python把照片转换成山水画
时间: 2023-11-10 07:59:01 浏览: 50
要将照片转换成山水画,可以使用Python中的Pillow库和OpenCV库。
首先,使用Pillow库读取照片:
```python
from PIL import Image
image = Image.open('photo.jpg')
```
然后,将照片转换成灰度图像:
```python
gray_image = image.convert('L')
```
接下来,使用OpenCV库将灰度图像进行边缘检测:
```python
import cv2
gray_image_array = cv2.cvtColor(np.array(gray_image), cv2.COLOR_RGB2GRAY)
canny_image = cv2.Canny(gray_image_array, 100, 200)
```
最后,使用Pillow库将边缘检测后的图像转换成山水画:
```python
from PIL import ImageFilter
oil_painting_image = Image.fromarray(canny_image)
oil_painting_image = oil_painting_image.filter(ImageFilter.CONTOUR)
```
完整代码如下:
```python
from PIL import Image, ImageFilter
import cv2
import numpy as np
# 读取照片
image = Image.open('photo.jpg')
# 转换成灰度图像
gray_image = image.convert('L')
# 边缘检测
gray_image_array = cv2.cvtColor(np.array(gray_image), cv2.COLOR_RGB2GRAY)
canny_image = cv2.Canny(gray_image_array, 100, 200)
# 转换成山水画
oil_painting_image = Image.fromarray(canny_image)
oil_painting_image = oil_painting_image.filter(ImageFilter.CONTOUR)
# 显示结果
oil_painting_image.show()
```
注意,这种方法只是一种简单的转换方式,转换效果可能不如专业的山水画软件。