<?xml version="1.0"?>
<rss version="2.0">
   <channel>
      <title>2024 AI메이커톤(광양고) by 이미숙</title>
      <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec</link>
      <description></description>
      <language>en-us</language>
      <pubDate>2024-08-24 08:36:17 UTC</pubDate>
      <lastBuildDate>2025-01-10 02:52:06 UTC</lastBuildDate>
      <webMaster>hello@padlet.com</webMaster>
      <image>
         <url></url>
      </image>
      <item>
         <title>Face detection</title>
         <author>gwangyang243</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3086679332</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/942429061/b61b9a969567e33e42ec90b0e53b8859/1__Face_Detection.py" />
         <pubDate>2024-08-24 08:40:55 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3086679332</guid>
      </item>
      <item>
         <title>Hands</title>
         <author>gwangyang243</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3086679406</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/942429061/583daf1c5898894f6611ab48541442d9/4__Hands.py" />
         <pubDate>2024-08-24 08:41:07 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3086679406</guid>
      </item>
      <item>
         <title>Face detection</title>
         <author>gwangyang243</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3086679927</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://www.canva.com/design/DAGOFAFUFUU/JN0z9Z1spBKUI0l1FmQUDA/edit?utm_content=DAGOFAFUFUU&amp;utm_campaign=designshare&amp;utm_medium=link2&amp;utm_source=sharebutton" />
         <pubDate>2024-08-24 08:42:32 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3086679927</guid>
      </item>
      <item>
         <title>Hands</title>
         <author>gwangyang243</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3086680524</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://www.canva.com/design/DAGOe7Tk0Kg/uyETbq4hOicDmPLO7K8KKQ/edit?utm_content=DAGOe7Tk0Kg&amp;utm_campaign=designshare&amp;utm_medium=link2&amp;utm_source=sharebutton" />
         <pubDate>2024-08-24 08:44:16 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3086680524</guid>
      </item>
      <item>
         <title>일정</title>
         <author>gwangyang243</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3086681590</link>
         <description><![CDATA[<p><strong>8월 30일(금) 정보관 4층 AI실</strong></p><p>2:50 ~ 3:10 등록 및 팀빌딩</p><p>3:20 ~ 5:00 mediapipe, face detection, hands 강의</p><p>5:00 ~ 5:30 저녁식사</p><p>5:30 ~ 7:30 모둠별 기획 및 제작&nbsp;</p><p>7:30 ~ 8:30 발표 및 갤러리워크, 시상</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-08-24 08:47:07 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3086681590</guid>
      </item>
      <item>
         <title>운영진</title>
         <author>gwangyang243</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3086681791</link>
         <description><![CDATA[<p>강사: 정보 이미숙</p><p>보조강사: 졸업생 김태선, 김철주</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-08-24 08:47:48 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3086681791</guid>
      </item>
      <item>
         <title>모둠별 산출물</title>
         <author>gwangyang243</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3086684772</link>
         <description><![CDATA[<p>1.기획PPT</p><ul><li><p><strong>목표 및 배경</strong>: 프로그램 기획의 목적과 배경 설명</p></li><li><p> <strong>프로그램 개요</strong>: 프로그램의 주요 내용 및 특성</p></li><li><p><strong>프로그램 구현: </strong>순서도 및 프로그램</p></li><li><p><strong>성과 및 기대 효과</strong>: 프로그램 실행 후 예상되는 성과와 기대 효과</p></li></ul><p><br/></p><p>2.구현 프로그램</p>]]></description>
         <enclosure url="" />
         <pubDate>2024-08-24 08:54:26 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3086684772</guid>
      </item>
      <item>
         <title>최약체둘</title>
         <author>gwangyang230518</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095190671</link>
         <description><![CDATA[]]></description>
         <enclosure url="" />
         <pubDate>2024-08-30 06:19:30 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095190671</guid>
      </item>
      <item>
         <title>team. code</title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095191303</link>
         <description><![CDATA[]]></description>
         <enclosure url="" />
         <pubDate>2024-08-30 06:19:58 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095191303</guid>
      </item>
      <item>
         <title>집가고싶다</title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095191530</link>
         <description><![CDATA[]]></description>
         <enclosure url="" />
         <pubDate>2024-08-30 06:20:12 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095191530</guid>
      </item>
      <item>
         <title>멋진 팀 이름</title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095191549</link>
         <description><![CDATA[]]></description>
         <enclosure url="" />
         <pubDate>2024-08-30 06:20:13 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095191549</guid>
      </item>
      <item>
         <title>혜지쌤의 아이들</title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095191851</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://pixabay.com/get/g5f7397852ea1f444abf5cfc2215cbdb7399d9e4def6b297a2b0e393dac2320eaa656670e3ea34c8f11686214846d4929.jpg" />
         <pubDate>2024-08-30 06:20:24 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095191851</guid>
      </item>
      <item>
         <title>놈놈놈놈</title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095192400</link>
         <description><![CDATA[]]></description>
         <enclosure url="" />
         <pubDate>2024-08-30 06:20:47 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095192400</guid>
      </item>
      <item>
         <title>한태경 팀</title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095215862</link>
         <description><![CDATA[]]></description>
         <enclosure url="" />
         <pubDate>2024-08-30 06:38:57 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095215862</guid>
      </item>
      <item>
         <title></title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095364139</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676841757/6e6a3fa411d5d025c98996b2ecfacff7/_____.pptx" />
         <pubDate>2024-08-30 09:11:03 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095364139</guid>
      </item>
      <item>
         <title></title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095386172</link>
         <description><![CDATA[<p>import cv2</p><p>import mediapipe as mp</p><p>mp_drawing = <a rel="noopener noreferrer nofollow" href="http://mp.solutions">mp.solutions</a>.drawing_utils</p><p>mp_hands = <a rel="noopener noreferrer nofollow" href="http://mp.solutions">mp.solutions</a>.hands</p><p>drawing = False</p><p>points = []</p><p>def recognize_gesture(hand_landmarks):</p><p>    index_tip = hand_landmarks.landmark[mp_hands.HandLandmark.INDEX_FINGER_TIP]</p><p>    thumb_tip = hand_landmarks.landmark[mp_hands.HandLandmark.THUMB_TIP]</p><p>    if index_tip.y &lt; thumb_tip.y:</p><p>        return "Drawing"</p><p>    else:</p><p>        return "Not Drawing"</p><p>def main():</p><p>    global drawing, points</p><p>    cap = cv2.VideoCapture(0)</p><p>    if not cap.isOpened():</p><p>        print("웹캠을 열 수 없습니다.")</p><p>        return</p><p>    with mp_hands.Hands(</p><p>        model_complexity=1,</p><p>        min_detection_confidence=0.7,</p><p>        min_tracking_confidence=0.7</p><p>    ) as hands:</p><p>        while True:</p><p>            success, image = <a rel="noopener noreferrer nofollow" href="http://cap.read">cap.read</a>()</p><p>            if not success:</p><p>                print("빈 카메라 프레임을 무시합니다.")</p><p>                continue</p><p>            image = cv2.flip(image, 1)</p><p>            image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)</p><p>            results = hands.process(image_rgb)</p><p>            if results.multi_hand_landmarks:</p><p>                for hand_landmarks in results.multi_hand_landmarks:</p><p>                    gesture = recognize_gesture(hand_landmarks)</p><p>                    index_tip = hand_landmarks.landmark[mp_hands.HandLandmark.INDEX_FINGER_TIP]</p><p>                    x, y = int(index_tip.x <em> image.shape[1]), int(index_tip.y </em> image.shape[0])</p><p>                    if gesture == "Drawing":</p><p>                        drawing = True</p><p>                        points.append((x, y))</p><p>                    else:</p><p>                        drawing = False</p><p>                    mp_drawing.draw_landmarks(image, hand_landmarks, mp_hands.HAND_CONNECTIONS)</p><p>            if drawing and len(points) &gt; 1:</p><p>                for i in range(1, len(points)):</p><p>                    cv2.line(image, points[i - 1], points[i], (0, 255, 0), 5)</p><p>            cv2.imshow('Hand Gesture Drawing', image)</p><p>            if cv2.waitKey(1) &amp; 0xFF == 27:  # ESC 키를 눌러 종료</p><p>                break</p><p>    cap.release()</p><p>    cv2.destroyAllWindows()</p><p>if <strong>name</strong> == "__main__":</p><p>    main()</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-08-30 09:43:32 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095386172</guid>
      </item>
      <item>
         <title></title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095397096</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2677205479/d409965f2cbf7b1e1665fe4ab3d81457/____________________.pptx" />
         <pubDate>2024-08-30 10:00:33 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095397096</guid>
      </item>
      <item>
         <title>신세계를 경험할수 있습니다</title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095397298</link>
         <description><![CDATA[<p>카메라를 향해 손가락을 들어주세요</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676571014/c83593c73089cd08cf7112aca4eb4ed7/xsaxsa.py" />
         <pubDate>2024-08-30 10:00:54 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095397298</guid>
      </item>
      <item>
         <title>화이트보드</title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095404957</link>
         <description><![CDATA[<p>화이트 보드</p><p><br/></p><p>손 다 펴면 그려지고 주먹 쥐면 멈춤</p><p>enter 화이트보드 초기화</p><p>키보드 x 버튼 그리기 멈춤</p><p>키보드 s 버튼 화이트보드 저장</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676572503/7bda845c7324fc946dfc8fa0a0c513e8/jjinchoijong.py" />
         <pubDate>2024-08-30 10:13:39 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095404957</guid>
      </item>
      <item>
         <title></title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095406496</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676571727/f3de57630f31228c0f88144dbc8efa69/alarm.py" />
         <pubDate>2024-08-30 10:16:16 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095406496</guid>
      </item>
      <item>
         <title>AR 키보드</title>
         <author>gwangyang230518</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095407418</link>
         <description><![CDATA[<pre><code class="language-python">import cv2
import mediapipe as mp
import numpy as np
from pynput.keyboard import Controller

# Initialize Mediapipe Hands and drawing utilities
mp_hands = mp.solutions.hands

# Initialize the keyboard controller
keyboard = Controller()

# Initialize webcam
cap = cv2.VideoCapture(0)

# Define the virtual keyboard layout for 'a' to 'z'
keys = list("abcdefghijklmnopqrstuvwxyz")
key_size = 50  # Size of each key
rows = 3  # Number of rows in the virtual keyboard
keys_per_row = 10  # Number of keys per row

# Calculate key positions
key_positions = []
for i in range(rows):
    row_keys = keys[i * keys_per_row: (i + 1) * keys_per_row]
    for j, key in enumerate(row_keys):
        x = 30 + j * (key_size + 10)
        y = 50 + i * (key_size + 10)
        key_positions.append((key, (x, y)))

# Reverse key positions for display
def reverse_key_positions(positions):
    h, w, _ = image.shape
    return [(key, (w - x - key_size, y)) for key, (x, y) in positions]

# List of fingertip landmarks (only thumb and index finger)
fingertip_landmarks = [
    mp_hands.HandLandmark.THUMB_TIP,      # Thumb
    mp_hands.HandLandmark.INDEX_FINGER_TIP # Index Finger
]

# Initialize Mediapipe Hands solution
with mp_hands.Hands(
    model_complexity=0,
    min_detection_confidence=0.5,
    min_tracking_confidence=0.5) as hands:
    
    # Dictionary to track touch states and previous touch states
    key_touch_states = {key: False for key, _ in key_positions}
    prev_key_touch_states = {key: False for key, _ in key_positions}
    
    while cap.isOpened():
        success, image = cap.read()
        if not success:
            print("Ignoring empty camera frame.")
            break

        # Convert the image to RGB
        image.flags.writeable = False
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        results = hands.process(image)

        # Convert back to BGR for rendering
        image.flags.writeable = True
        image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
        h, w, _ = image.shape

        # Create a transparent overlay for the keyboard
        overlay = np.zeros((h, w, 4), dtype=np.uint8)
        alpha = 170  # Transparency level (0-255, 255 is fully opaque)

        # Draw the virtual keyboard on the overlay
        reversed_key_positions = reverse_key_positions(key_positions)
        for key, pos in reversed_key_positions:
            x, y = pos
            color = (255, 255, 255)  # Default color is white
            if key_touch_states[key]:
                color = (0, 255, 0)  # Change color to green if the key is pressed
            cv2.rectangle(overlay, (x, y), (x + key_size, y + key_size), color, -1)
            cv2.putText(overlay, key, (x + 15, y + 45), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 2)

        # Add alpha channel to the overlay
        overlay = cv2.merge((overlay[:, :, :3], (overlay[:, :, 3] * alpha / 255).astype(np.uint8)))

        # Blend the overlay with the original image
        image = cv2.addWeighted(image, 1.0, overlay[:, :, :3], alpha / 255.0, 0)

        # Reset key touch states
        for key in key_touch_states.keys():
            key_touch_states[key] = False

        # If hand landmarks are detected
        if results.multi_hand_landmarks:
            for hand_landmarks in results.multi_hand_landmarks:
                # Get coordinates of thumb and index fingertip
                fingertip_coords = {}
                for fingertip in fingertip_landmarks:
                    fingertip_coords[fingertip] = hand_landmarks.landmark[fingertip]

                # Check distance between thumb and index finger
                def distance(pt1, pt2):
                    return np.sqrt((pt1.x - pt2.x)**2 + (pt1.y - pt2.y)**2 + (pt1.z - pt2.z)**2)

                # Define a threshold distance for the fingers to be considered close
                close_threshold = 0.05

                thumb_fingertip = fingertip_landmarks[0]
                index_fingertip = fingertip_landmarks[1]
                dist = distance(fingertip_coords[thumb_fingertip], fingertip_coords[index_fingertip])
                
                if dist &lt; close_threshold:
                    # Mark the keys under the fingertips as touched
                    for key, pos in key_positions:
                        x, y = pos
                        thumb_pixel = (int(fingertip_coords[thumb_fingertip].x * w), int(fingertip_coords[thumb_fingertip].y * h))
                        index_pixel = (int(fingertip_coords[index_fingertip].x * w), int(fingertip_coords[index_fingertip].y * h))
                        
                        x_flipped = w - x - key_size

                        if (x_flipped &lt;= thumb_pixel[0] &lt;= x_flipped + key_size and y &lt;= thumb_pixel[1] &lt;= y + key_size) or \
                           (x_flipped &lt;= index_pixel[0] &lt;= x_flipped + key_size and y &lt;= index_pixel[1] &lt;= y + key_size):
                            key_touch_states[key] = True

        # Print key press event only if the key state has just been changed to pressed
        for key in key_touch_states.keys():
            if key_touch_states[key] and not prev_key_touch_states[key]:
                # Reverse key position for actual input
                actual_key_pos = {k: pos for k, pos in zip(keys, key_positions)}
                reversed_key_pos = reverse_key_positions(key_positions)
                for rev_key, rev_pos in reversed_key_pos:
                    if key == rev_key:
                        # Simulate key press using pynput
                        keyboard.press(key)
                        keyboard.release(key)
                        print(f"{key}",end='')
                        break

        # Update previous key touch states
        prev_key_touch_states = key_touch_states.copy()

        # Mirror the image and show it
        cv2.imshow('Virtual Keyboard', cv2.flip(image, 1))
        
        # Exit on 'Esc' key press
        if cv2.waitKey(5) &amp; 0xFF == 27:
            break

# Release the capture device
cap.release()
cv2.destroyAllWindows()
</code></pre>]]></description>
         <enclosure url="" />
         <pubDate>2024-08-30 10:17:33 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095407418</guid>
      </item>
      <item>
         <title></title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095408916</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676571727/db328e3f912e5a646572a50f94b945ee/____________.pptx" />
         <pubDate>2024-08-30 10:19:20 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095408916</guid>
      </item>
      <item>
         <title></title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095410815</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676585003/4aa146389487596ac1edec95f6701c4d/TEAM_CODE___.pptx" />
         <pubDate>2024-08-30 10:22:38 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095410815</guid>
      </item>
      <item>
         <title></title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095410914</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676587009/aedf53253ae36f71881cfbcf0de9f379/AR___.pptx" />
         <pubDate>2024-08-30 10:22:50 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095410914</guid>
      </item>
      <item>
         <title>이걸로. </title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095411953</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2677281912/82ec3bebead7571b5b03551aa66b4952/AR___.pptx" />
         <pubDate>2024-08-30 10:24:13 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095411953</guid>
      </item>
      <item>
         <title></title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095412382</link>
         <description><![CDATA[<p>import cv2</p><p>import webbrowser</p><p>import random</p><p>import time</p><p># 유튜브 링크 리스트</p><p>youtube_links = [</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=frIRfvU6sKE">https://www.youtube.com/watch?v=frIRfvU6sKE</a>",  # 실제 유튜브 링크로 교체하세요</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=Q414VnDOZNk">https://www.youtube.com/watch?v=Q414VnDOZNk</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=FhA37Sw4j8w">https://www.youtube.com/watch?v=FhA37Sw4j8w</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=JF0YwScEMag">https://www.youtube.com/watch?v=JF0YwScEMag</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=VsBdl9tFhFk">https://www.youtube.com/watch?v=VsBdl9tFhFk</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=H5kokc0ULuo">https://www.youtube.com/watch?v=H5kokc0ULuo</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=hcsxPnlh3VY">https://www.youtube.com/watch?v=hcsxPnlh3VY</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=wLoQeRY70RA">https://www.youtube.com/watch?v=wLoQeRY70RA</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=peMT6N4rI9Q">https://www.youtube.com/watch?v=peMT6N4rI9Q</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=SaecxMkklx8">https://www.youtube.com/watch?v=SaecxMkklx8</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=AFU25b2QZt4">https://www.youtube.com/watch?v=AFU25b2QZt4</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=4eDgnp4e3cY">https://www.youtube.com/watch?v=4eDgnp4e3cY</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=2PESZCT56a8">https://www.youtube.com/watch?v=2PESZCT56a8</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=Dfu0QBqAtgE">https://www.youtube.com/watch?v=Dfu0QBqAtgE</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=8O1dAhor_K4">https://www.youtube.com/watch?v=8O1dAhor_K4</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=sturUvSze60">https://www.youtube.com/watch?v=sturUvSze60</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=asBo6G8gFs8">https://www.youtube.com/watch?v=asBo6G8gFs8</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=iwHMI1IynVc">https://www.youtube.com/watch?v=iwHMI1IynVc</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=YfiokqRQ9j4">https://www.youtube.com/watch?v=YfiokqRQ9j4</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=uecovg3W1HI&amp;t=420s">https://www.youtube.com/watch?v=uecovg3W1HI&amp;t=420s</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=abJ0R97juZY">https://www.youtube.com/watch?v=abJ0R97juZY</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=ePcphV22OgU">https://www.youtube.com/watch?v=ePcphV22OgU</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=sMW2u5xe-jM">https://www.youtube.com/watch?v=sMW2u5xe-jM</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=u1GPYtXDuHE">https://www.youtube.com/watch?v=u1GPYtXDuHE</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=TH3nUCzioNo">https://www.youtube.com/watch?v=TH3nUCzioNo</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=armCB-Eik5Y">https://www.youtube.com/watch?v=armCB-Eik5Y</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=WUS79TrTX_k">https://www.youtube.com/watch?v=WUS79TrTX_k</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=ODWCUAyiFDg">https://www.youtube.com/watch?v=ODWCUAyiFDg</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=5UMqUfZWOWc">https://www.youtube.com/watch?v=5UMqUfZWOWc</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=aSwxiLTrF9o">https://www.youtube.com/watch?v=aSwxiLTrF9o</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=-GsaVY1Qsds">https://www.youtube.com/watch?v=-GsaVY1Qsds</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=JJ0tUT0c4nY">https://www.youtube.com/watch?v=JJ0tUT0c4nY</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=5APC-SCEKM8">https://www.youtube.com/watch?v=5APC-SCEKM8</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=MhOzBLNoFjc">https://www.youtube.com/watch?v=MhOzBLNoFjc</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=-L65fvDjFoA">https://www.youtube.com/watch?v=-L65fvDjFoA</a>",</p><p>    "<a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=Oo6wLwtu3r4">https://www.youtube.com/watch?v=Oo6wLwtu3r4</a>",</p><p>    </p><p>    # 추가 링크를 여기에 삽입하세요</p><p>]</p><p># 얼굴 인식을 위한 CascadeClassifier 로드</p><p>face_cascade = cv2.CascadeClassifier(<a rel="noopener noreferrer nofollow" href="http://cv2.data">cv2.data</a>.haarcascades + 'haarcascade_frontalface_default.xml')</p><p># 웹캠을 열어 비디오 캡처 시작</p><p>cap = cv2.VideoCapture(0)</p><p>print("얼굴을 인식하면 유튜브 링크를 열도록 설정되었습니다.")</p><p>print("웹캠 앞에 서주세요. 종료하려면 'q'를 누르세요.")</p><p>while True:</p><p>    # 웹캠에서 프레임을 읽음</p><p>    ret, frame = <a rel="noopener noreferrer nofollow" href="http://cap.read">cap.read</a>()</p><p>    if not ret:</p><p>        print("웹캠에서 프레임을 읽을 수 없습니다. 웹캠이 연결되어 있는지 확인하세요.")</p><p>        break</p><p>    # 프레임을 회색조로 변환</p><p>    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)</p><p>    # 얼굴 인식</p><p>    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))</p><p>    # 얼굴이 인식되었는지 확인</p><p>    if len(faces) &gt; 0:</p><p>        # 인식된 얼굴을 표시</p><p>        for (x, y, w, h) in faces:</p><p>            cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)</p><p>        </p><p>        # 3초 동안 얼굴 표시</p><p>        cv2.imshow('Face Detection', frame)</p><p>        print("얼굴이 인식되었습니다. 3초 후에 링크를 열겠습니다...")</p><p>        cv2.waitKey(3000)  # 3초 대기</p><p>        # 랜덤으로 유튜브 링크 선택</p><p>        video_url = random.choice(youtube_links)</p><p>        # 웹 브라우저로 링크 열기</p><p>        <a rel="noopener noreferrer nofollow" href="http://webbrowser.open">webbrowser.open</a>(video_url)</p><p>        print(f"링크를 열고 있습니다: {video_url}")</p><p>        # 프로그램 종료</p><p>        break</p><p>    # 프레임을 화면에 표시 (디버깅용)</p><p>    cv2.imshow('Face Detection', frame)</p><p>    # 'q'를 누르면 프로그램 종료</p><p>    if cv2.waitKey(1) &amp; 0xFF == ord('q'):</p><p>        print("사용자가 종료를 요청했습니다.")</p><p>        break</p><p># 웹캠과 윈도우 종료</p><p>cap.release()</p><p>cv2.destroyAllWindows()</p><p><br/></p>]]></description>
         <enclosure url="" />
         <pubDate>2024-08-30 10:24:50 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095412382</guid>
      </item>
      <item>
         <title>가상 키보드</title>
         <author>gwangyang220308</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095413432</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1756544469/9e61761ecb611120df337ad8dd067993/______.py" />
         <pubDate>2024-08-30 10:26:41 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095413432</guid>
      </item>
      <item>
         <title></title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095416941</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2677312950/e7757dbce89ea1e9733ac98803706fb4/___.py" />
         <pubDate>2024-08-30 10:31:34 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095416941</guid>
      </item>
      <item>
         <title>피피팉</title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095417843</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2677296356/ed822e34ae5509166f0370360517644f/__ppt.pptx" />
         <pubDate>2024-08-30 10:32:52 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095417843</guid>
      </item>
      <item>
         <title></title>
         <author></author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095431979</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676575774/c6edbe5a2098ac683648eb46e52deee9/_____.pptx" />
         <pubDate>2024-08-30 10:52:25 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3095431979</guid>
      </item>
      <item>
         <title>자기평가</title>
         <author>gwangyang243</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3252481908</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://docs.google.com/spreadsheets/d/11eif3OVGecaqDiVgvWwfAIKl6tlAjGxmrPspklKKyhw/edit?usp=sharing" />
         <pubDate>2024-12-09 13:07:56 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3252481908</guid>
      </item>
      <item>
         <title>발표 동영상</title>
         <author>gwangyang243</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3252488076</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/942429061/42c2413339a47bce6b5822e5ead192e9/20240830_194349_mp4_20240902_133241.mkv" />
         <pubDate>2024-12-09 13:12:56 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3252488076</guid>
      </item>
      <item>
         <title>발표 동영상</title>
         <author>gwangyang243</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3252489810</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/942429061/be14ea681b6ba9db7e0964cbb9029516/20240830_195126.mp4" />
         <pubDate>2024-12-09 13:14:13 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3252489810</guid>
      </item>
      <item>
         <title>발표 동영상</title>
         <author>gwangyang243</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3252490107</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/942429061/61f9b7fce902b5cedbbbcef92b417d11/20240830_193541.mp4" />
         <pubDate>2024-12-09 13:14:27 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3252490107</guid>
      </item>
      <item>
         <title>발표 동영상</title>
         <author>gwangyang243</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3252492681</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/942429061/e074ea8c7b82e99a1bfa1d0b1c31a36f/20240830_193139.mp4" />
         <pubDate>2024-12-09 13:16:23 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3252492681</guid>
      </item>
      <item>
         <title>발표 동영상</title>
         <author>gwangyang243</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3252492904</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/942429061/0d689ed7e58f1be1a2ddb1c5a66a11cd/20240830_193925.mp4" />
         <pubDate>2024-12-09 13:16:34 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3252492904</guid>
      </item>
      <item>
         <title>발표 동영상</title>
         <author>gwangyang243</author>
         <link>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3286064592</link>
         <description><![CDATA[]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/942429061/12b630d8c49f16272167f4b0e0ddf320/20240830_195456.mp4" />
         <pubDate>2025-01-10 02:52:05 UTC</pubDate>
         <guid>https://padlet.com/gwangyang243/r4iv5zgjef26dnec/wish/3286064592</guid>
      </item>
   </channel>
</rss>
