实现代码
#!/usr/bin/python
# -*- coding: utf-8 -*-
from PIL import Image
import cv2
import numpy as np
def aikit_take_pictures(): # 调用摄像头,并保存图像函数
camera = cv2.VideoCapture(0)
while True:
ret, frame = camera.read() # 一帧一帧读取视频
cv2.imshow('frame', frame) # 显示结果
# 根据用户的键盘操作,保存照片或者停止程序
key_code = cv2.waitKey(1)
if key_code & 0xFF == ord('p'): # 按p保存照片
cv2.imwrite("photo.jpg", frame)
print('Successful photo')
if key_code & 0xFF == ord('q'): # 按q停止
break
camera.release()
cv2.destroyAllWindows()
def Image_resize(): # 裁剪图片大小函数
img = Image.open('photo.jpg') # 需要转换的源图片,前提是该图片已经在上一个函数中保存
outsize = img.resize((100,88), Image.ANTIALIAS) # 设置输出图片的大小
outsize.save('resize.png','png') # 输出图片的名字及格式
def gray_img(): # 灰度图函数
img = Image.open('photo.jpg') # 需要转换的源图片,前提是该图片已经在上一个函数中保存
Img = img.convert('L') # PIL有九种不同模式: 1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。这里选择L灰度模式
Img.save("gray.jpg") # 保保存文件名
def binary_scale(): # 二值化函数
img = Image.open('photo.jpg')
Img = img.convert('L') # PIL有九种不同模式: 1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。这里选择L灰度模式
threshold = 200 # 设定的阈值
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
photo = Img.point(table, '1')
photo.save('binary.jpg')
if __name__ == '__main__': # 调用函数
aikit_take_pictures()
Image_resize()
gray_img()
binary_scale()
pass
提醒:
有的小伙伴可能会在运行时,出现代码报错,此时需要注意的是,记得环境要安装正确或者包要导对哦~
有需要帮助的可以查看本博客内容,选择所需就好,或者在下方留言