天天看點

Opencv-攝像頭圖像處理打開攝像頭攝像頭美顔

打開攝像頭

import cv2
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
    # 擷取一幀
    ret, frame = cap.read()
    ##圖像處理
    frame1=cv2.flip(frame,1)
    gray=cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
    canny=cv2.Canny(gray,80,150)
    
    ##
    cv2.imshow('frame', canny)
    if cv2.waitKey(1) == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
           

在攝像頭中加入灰階後如何顯示正常

import cv2
cap = cv2.VideoCapture(0)

while(cap.isOpened()):
    # 擷取一幀
    ret, frame = cap.read()
    ##圖像處理
    frame1=cv2.flip(frame,1)
    gray=cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)

    
    ##
    cv2.imshow('frame', canny)
    if cv2.waitKey(1) == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
           

我們一般第一步想到的就是加入cv2.cvrColor語句,但是加入後你會發現攝像頭隻會顯示你打開的那一瞬間的樣子。

Opencv-攝像頭圖像處理打開攝像頭攝像頭美顔

他将拍攝到物品的邊緣顯示出來就停止了,我們可以加入一個邊緣檢測代碼,讓他一直檢測邊緣就可以讓攝像頭正常顯示。

import cv2
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
    # 擷取一幀
    ret, frame = cap.read()
    ##圖像處理
    frame1=cv2.flip(frame,1)
    gray=cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
    canny=cv2.Canny(gray,80,150)
    
    ##
    cv2.imshow('frame', canny)
    if cv2.waitKey(1) == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
           

攝像頭美顔

先定義一個自己想要的特效後将特效導入攝像頭中即可

def meiyan(img):
    rows, cols = img.shape[:2]
    dst = np.zeros((rows, cols, 3), dtype="uint8")

    #圖像懷舊特效
    for i in range(rows):
        for j in range(cols):
            B = 0.272*img[i,j][2] + 0.534*img[i,j][1] + 0.131*img[i,j][0]
            G = 0.349*img[i,j][2] + 0.686*img[i,j][1] + 0.168*img[i,j][0]
            R = 0.393*img[i,j][2] + 0.769*img[i,j][1] + 0.189*img[i,j][0]
            if B>255:
                B = 255
            if G>255:
                G = 255
            if R>255:
                R = 255
            dst[i,j] = np.uint8((B, G, R))
    return dst
           
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
width, height = cap.get(3), cap.get(4)
while(cap.isOpened()):
    ret, frame = cap.read()
    frame = meiyan(frame)
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
           

案例@ Fu Xianjun. All Rights Reserved.