實現代碼
#!/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
提醒:
有的小伙伴可能會在運行時,出現代碼報錯,此時需要注意的是,記得環境要安裝正確或者包要導對哦~
有需要幫助的可以查看本博客內容,選擇所需就好,或者在下方留言