Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में वेबकैम मोशन डिटेक्टर प्रोग्राम


इसमें हम एक पायथन प्रोग्राम लिखने जा रहे हैं जो वेबकैम से ली गई छवियों का विश्लेषण करेगा और गति का पता लगाने की कोशिश करेगा और वेबकैम वीडियो के समय-अंतराल को एक CSV फ़ाइल में संग्रहीत करेगा।

आवश्यक लाइब्रेरी

हम इसके लिए OpenCV और pandas लाइब्रेरी का उपयोग करने जा रहे हैं। यदि यह पहले से इंस्टॉल नहीं है, तो आप इसे pip का उपयोग करके इंस्टॉल कर सकते हैं, जैसे:

$pip install opencv2, pandas

उदाहरण कोड

# आवश्यक लाइब्रेरी आयात करें
import cv2
import pandas as pd
import time
from datetime import datetime

# वेरिएबल इनिशियलाइज़ करें
stillImage = None
motionImage = [None, None]
time = []

# प्रारंभ और समाप्ति समय के साथ DataFrame इनिशियलाइज़ करें
df = pd.DataFrame(columns=["start", "end"])

# वीडियो कैप्चर करना
video = cv2.VideoCapture(0)

while True:
    # वीडियो से छवि पढ़ना शुरू करें
    check, frame = video.read()
    motion = 0
    # रंगीन छवि को ग्रेस्केल छवि में बदलें
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    gray = cv2.GaussianBlur(gray, (21, 21), 0)
    if stillImage is None:
        stillImage = gray
        continue
    # स्टिल इमेज और वर्तमान इमेज
    diff_frame = cv2.absdiff(stillImage, gray)
    # यदि स्थिर पृष्ठभूमि और वर्तमान फ्रेम 25 से अधिक है तो छवि को सफेद में बदलें
    thresh_frame = cv2.threshold(diff_frame, 25, 255, cv2.THRESH_BINARY)[1]
    thresh_frame = cv2.dilate(thresh_frame, None, iterations=2)
    # गतिमान वस्तु से कंटूर और पदानुक्रम ढूंढना
    contours, hierachy = cv2.findContours(thresh_frame.copy(),
                                          cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    for contour in contours:
        if cv2.contourArea(contour) < 10000:
            continue
        motion = 1
        (x, y, w, h) = cv2.boundingRect(contour)
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 3)
    # गति की वर्तमान स्थिति जोड़ें
    motionImage.append(motion)
    motionImage = motionImage[-2:]
    # गति का प्रारंभ समय जोड़ें
    if motionImage[-1] == 1 and motionImage[-2] == 0:
        time.append(datetime.now())
    # गति का समाप्ति समय जोड़ें
    if motionImage[-1] == 0 and motionImage[-2] == 1:
        time.append(datetime.now())
    # ग्रेस्केल में छवि प्रदर्शित करना
    cv2.imshow("Gray_Frame", gray)
    # काले और सफेद फ्रेम प्रदर्शित करें और यदि तीव्रता अंतर > 25 है, तो यह सफेद हो जाता है
    cv2.imshow("Threshold Frame", thresh_frame)
    # रंगीन फ्रेम प्रदर्शित करें
    cv2.imshow("Colored_Frame", frame)
    key = cv2.waitKey(1)
    # प्रक्रिया रोकने के लिए q दबाएं
    if key == ord('q'):
        if motion == 1:
            time.append(datetime.now())
        break

# गति के समय के लिए CSV फाइल में जोड़ें
for i in range(0, len(time), 2):
    df = df.append({"Start": time[i], "End": time[i + 1]}, ignore_index=True)

# CSV फाइल बनाएं जिसमें गति का समय सहेजा जाएगा
df.to_csv("FrameInMotion_time.csv")
video.release()  # विंडो बंद करें
cv2.destroyAllWindows()

आउटपुट

पायथन में वेबकैम मोशन डिटेक्टर प्रोग्राम

हम देख सकते हैं कि हमें 3 अलग-अलग विंडो मिलेंगी जो हमारे वेबकैम से वर्तमान गति को तीन अलग-अलग मोड (ग्रेस्केल, रंगीन और काले और सफेद) में प्रदर्शित करेंगी।

यह हमारे वेबकैम मोशन के डेटाटाइम को एक CSV में भी संग्रहीत करेगा और CSV से हमारा आउटपुट कुछ इस तरह होगा:

FrameMotion_time.csv (आउटपुट)

start                   end                     End                         Start
0   2019-02-21 18:10:59.718005   2019-02-21 18:08:35.791487

  1. पायथन प्रोग्राम में सिलेक्शन सॉर्ट पायथन प्रोग्राम में सिलेक्शन सॉर्ट

    इस लेख में, हम पायथन 3.x में सिलेक्शन सॉर्ट और इसके कार्यान्वयन के बारे में सीखेंगे। या इससे पहले। सिलेक्शन सॉर्ट एल्गोरिदम में, एक ऐरे को अनसॉर्टेड पार्ट से न्यूनतम एलिमेंट को रिकर्सिवली ढूंढकर और इसे शुरुआत में इन्सर्ट करके सॉर्ट किया जाता है। दिए गए ऐरे पर सिलेक्शन सॉर्ट के निष्पादन के दौरान दो

  1. OpenCV पायथन प्रोग्राम: इमेज ब्लर करना OpenCV पायथन प्रोग्राम: इमेज ब्लर करना

    OpenCV (cv2) पायथन में इमेज प्रोसेसिंग के लिए शक्तिशाली लाइब्रेरी है। इमेज ब्लरिंग (स्मूथिंग) नॉइज़ कम करने और डिटेल कम करने के लिए उपयोगी है। गौसियन ब्लर (Gaussian Blur) सबसे आम ब्लरिंग तकनीक - गौसियन कर्नेल का उपयोग करके एजेस को स्मूथ करता है जबकि अत्यधिक ब्लर से बचाता है। सिंटैक्स cv2.GaussianB

  1. Python प्रोग्राम: OpenCV का उपयोग करके इमेज के एज डिटेक्ट करना Python प्रोग्राम: OpenCV का उपयोग करके इमेज के एज डिटेक्ट करना

    इस समस्या में, हम देखेंगे कि Python इमेज या वीडियो फ़ाइल के एज कैसे डिटेक्ट कर सकता है। इसे प्राप्त करने के लिए, हमें OpenCV लाइब्रेरी की आवश्यकता है। OpenCV लाइब्रेरी मुख्य रूप से कंप्यूटर विजन के लिए डिज़ाइन की गई है। यह ओपन सोर्स है। मूल रूप से इसे इंटेल द्वारा डिज़ाइन किया गया था। यह ओपन-सोर्स B