इसमें हम एक पायथन प्रोग्राम लिखने जा रहे हैं जो वेबकैम से ली गई छवियों का विश्लेषण करेगा और गति का पता लगाने की कोशिश करेगा और वेबकैम वीडियो के समय-अंतराल को एक 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