python黑白图取反
时间: 2023-10-11 09:07:08 浏览: 243
可以使用Pillow库来进行黑白图取反操作。具体实现如下:
```python
from PIL import Image
# 打开图片
image = Image.open("test.jpg")
# 灰度化
gray_image = image.convert("L")
# 取反
inverted_image = Image.eval(gray_image, lambda x: 255 - x)
# 显示图片
inverted_image.show()
# 保存图片
inverted_image.save("inverted_test.jpg")
```
代码解释:
1. 首先通过Pillow库的Image模块打开一张图片;
2. 将图片转为灰度图,方便进行取反操作;
3. 使用`Image.eval`方法,对每个像素点的灰度值进行取反操作(255减去原值);
4. 显示取反后的图片,也可以保存到本地。
相关问题
黑白像素翻转python代码
在Python中,如果你想要对一个黑白图像(通常表示为二维列表,其中每个元素代表一个像素,值0或1分别对应黑色和白色)进行像素翻转,可以这样做:
```python
def flip_pixels(image):
# 确保输入的是二维列表
assert len(image) == len(image[0]) and all(isinstance(row, list) for row in image)
flipped_image = []
for row in image:
flipped_row = [1 - pixel for pixel in row] # 对每行的像素取反
flipped_image.append(flipped_row)
return flipped_image
# 示例使用
original_image = [[0, 1], [1, 0]] # 单位矩阵,黑背景白字
flipped_image = flip_pixels(original_image)
print("Flipped Image:")
for row in flipped_image:
print(row)
用中文详细解释能够实现实现基本的图像界面,图像上传,结果保存,黑白处理,反色处理,亮度变化,磨皮,素描,瘦脸的完整python代码
好的,以下是能够实现基本的图像界面,图像上传,结果保存,黑白处理,反色处理,亮度变化,磨皮,素描,瘦脸的完整Python代码:
```python
import cv2
import numpy as np
import tkinter as tk
from tkinter import filedialog
# 创建GUI界面
root = tk.Tk()
root.title("图像处理工具")
# 定义函数:打开图片
def open_file():
file_path = filedialog.askopenfilename(title="选择图片", filetypes=[("Image Files", "*.png *.jpg *.bmp")])
img = cv2.imread(file_path)
cv2.imshow("原图", img)
# 定义函数:保存图片
def save_file():
save_path = filedialog.asksaveasfilename(title="保存图片", filetypes=[("Image Files", "*.png *.jpg *.bmp")])
cv2.imwrite(save_path, img)
# 定义函数:黑白处理
def gray_process():
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("黑白图", gray_img)
# 定义函数:反色处理
def invert_process():
invert_img = cv2.bitwise_not(img)
cv2.imshow("反色图", invert_img)
# 定义函数:亮度变化
def brightness_process():
alpha = 1.5
beta = 30
brightness_img = cv2.addWeighted(img, alpha, np.zeros(img.shape, dtype=img.dtype), 0, beta)
cv2.imshow("亮度变化图", brightness_img)
# 定义函数:磨皮
def blur_process():
blur_img = cv2.GaussianBlur(img, (0, 0), 15)
cv2.imshow("磨皮图", blur_img)
# 定义函数:素描
def pencil_process():
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
invert_img = cv2.bitwise_not(gray_img)
pencil_img = cv2.GaussianBlur(invert_img, (21, 21), 0)
pencil_img = cv2.divide(gray_img, 255 - pencil_img, scale=256)
cv2.imshow("素描图", pencil_img)
# 定义函数:瘦脸
def face_process():
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray_img, scaleFactor=1.1, minNeighbors=5)
for (x, y, w, h) in faces:
face_img = img[y:y+h, x:x+w]
face_img = cv2.GaussianBlur(face_img, (51, 51), 0)
img[y:y+h, x:x+w] = face_img
cv2.imshow("瘦脸图", img)
# 创建子窗口
sub_root = tk.Toplevel(root)
sub_root.title("图片处理")
# 创建按钮:保存图片
save_button = tk.Button(sub_root, text="保存图片", command=save_file)
save_button.pack()
# 创建按钮:黑白处理
gray_button = tk.Button(sub_root, text="黑白处理", command=gray_process)
gray_button.pack()
# 创建按钮:反色处理
invert_button = tk.Button(sub_root, text="反色处理", command=invert_process)
invert_button.pack()
# 创建按钮:亮度变化
brightness_button = tk.Button(sub_root, text="亮度变化", command=brightness_process)
brightness_button.pack()
# 创建按钮:磨皮
blur_button = tk.Button(sub_root, text="磨皮", command=blur_process)
blur_button.pack()
# 创建按钮:素描
pencil_button = tk.Button(sub_root, text="素描", command=pencil_process)
pencil_button.pack()
# 创建按钮:瘦脸
face_button = tk.Button(sub_root, text="瘦脸", command=face_process)
face_button.pack()
# 创建按钮:打开图片
open_button = tk.Button(root, text="打开图片", command=open_file)
open_button.pack()
# 创建GUI界面循环
root.mainloop()
```
其中,图像处理的具体实现方式如下:
- 黑白处理:使用cv2.cvtColor()函数将图片转为灰度图。
- 反色处理:使用cv2.bitwise_not()函数将图片取反。
- 亮度变化:使用cv2.addWeighted()函数实现图片的亮度变化。
- 磨皮:使用cv2.GaussianBlur()函数实现图片的磨皮效果。
- 素描:先将图片转为灰度图,然后使用cv2.bitwise_not()函数将图片取反,再使用cv2.GaussianBlur()函数实现模糊效果,最后使用cv2.divide()函数实现素描效果。
- 瘦脸:使用cv2.CascadeClassifier()函数加载人脸识别分类器,使用cv2.cvtColor()函数将图片转为灰度图,使用cv2.detectMultiScale()函数识别人脸位置,使用cv2.GaussianBlur()函数实现瘦脸效果。
阅读全文