Python攝像頭抓拍的彩色圖像轉為灰度圖、二值化和調整圖片尺寸(實例)


實現代碼

#!/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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM