এখানে আমরা একটি পাইথন প্রোগ্রাম লিখব যা ওয়েবক্যাম থেকে ছবি নিয়ে গতিবিদ্যা বিশ্লেষণ করবে এবং গতিবিদ্যার সময়-অन्तরাল CSV ফাইলে সংরক্ষণ করবে।
প্রয়োজনীয় লাইব্রেরি
এখানে OpenCV এবং pandas লাইব্রেরি ব্যবহার করা হবে। যদি ইতিমধ্যে ইনস্টল না থাকে, তবে পিপ দিয়ে ইন্সটল করুন:
$pip install opencv2, pandas
উদাহরণ কোড
# প্রয়োজনীয় লাইব্রেরি ইম্পোর্ট করুন
import cv2
import pandas as pd
import time
from datetime import datetime
# ভেরিয়েবল ইনিশিয়ালাইজ করুন
stillImage = None
motionImage = [None, None]
time_list = []
# শুরুর ও শেষ সময়ের জন্য 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)
# স্ট্যাটিক ব্যাকগ্রাউন্ড ও বর্তমান ফ্রেমের পার্থক্য ২৫-এর বেশি হলে সাদা করুন
thresh_frame = cv2.threshold(diff_frame, 25, 255, cv2.THRESH_BINARY)[1]
thresh_frame = cv2.dilate(thresh_frame, None, iterations=2)
# চলমান বস্তু থেকে কন্টুর ও হায়ারার্কি খুঁজুন
contours, hierarchy = 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_list.append(datetime.now())
# গতিবিদ্যের শেষ সময় যুক্ত করুন
if motionImage[-1] == 0 and motionImage[-2] == 1:
time_list.append(datetime.now())
# গ্রে-স্কেল ছবি প্রদর্শন করুন
cv2.imshow("Gray_Frame", gray)
# ব্ল্যাক অ্যান্ড হোয়াইট ফ্রেম প্রদর্শন করুন (পার্থক্য > ২৫ হলে সাদা)
cv2.imshow("Threshold Frame", thresh_frame)
# রঙিন ফ্রেম প্রদর্শন করুন
cv2.imshow("Colored_Frame", frame)
key = cv2.waitKey(1)
# 'q' চাপলে প্রক্রিয়া বন্ধ করুন
if key == ord('q'):
if motion == 1:
time_list.append(datetime.now())
break
# গতিবিদ্যার সময় CSV ফাইলে সংরক্ষণ করুন
for i in range(0, len(time_list), 2):
df = df.append({"Start": time_list[i], "End": time_list[i + 1]}, ignore_index=True)
# গতিবিদ্যার সময় সংরক্ষণের জন্য CSV ফাইল তৈরি করুন
df.to_csv("FrameInMotion_time.csv")
video.release() # ভিডিও রিলিজ করুন
cv2.destroyAllWindows() # উইন্ডো বন্ধ করুন
আউটপুট

এখানে ৩টি আলাদা উইন্ডো দেখাবে যা ওয়েবক্যাম থেকে বর্তমান গতিবিদ্যাকে তিনটি মোডে (গ্রে-স্কেল, রঙিন ও ব্ল্যাক অ্যান্ড হোয়াইট) প্রদর্শন করবে।
এছাড়া ওয়েবক্যাম গতিবিদ্যের ডেটাটাইম CSV ফাইলে সংরক্ষণ করবে, যার আউটপুট নিচের মতো হবে:
FrameMotion_time.csv (আউটপুট)
start end
0 2019-02-21 18:10:59.718005 2019-02-21 18:08:35.791487