Spaces:
Build error
Build error
import cv2 #cv2==4.8.0 | |
import numpy as np#numpy ==1.24.3 | |
import streamlit as st# | |
import time | |
st.title("实时皮肤检测应用程序") | |
cap = cv2.VideoCapture(0) | |
if not cap.isOpened(): | |
st.error("无法打开摄像头。") | |
else: | |
while True: | |
ret, frame = cap.read() | |
if not ret: | |
st.error("无法获取摄像头帧。") | |
break | |
ycbcr_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2YCrCb) | |
lower_skin = np.array([0, 133, 77], dtype="uint8") | |
upper_skin = np.array([255, 230, 255], dtype="uint8") | |
skin_mask = cv2.inRange(ycbcr_frame, lower_skin, upper_skin) | |
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (11, 11)) | |
skin_mask = cv2.erode(skin_mask, kernel, iterations=2) | |
skin_mask = cv2.dilate(skin_mask, kernel, iterations=2) | |
skin_detected = cv2.bitwise_and(frame, frame, mask=skin_mask) | |
st.image(skin_detected, channels="BGR", caption="皮肤检测结果", use_column_width=True) | |
stop_button_id = str(time.time()) | |
if st.button("停止按钮" + stop_button_id): | |
break | |
# 控制每秒只显示2张图像 | |
time.sleep(1.0) | |
cap.release() | |
cv2.destroyAllWindows() | |