پروژه الکترونیکپروژه های پایتونپروژه های رزبری پای

پخش زنده فیلم دوربین های مدار بسته در رزبری پای (استفاده از DVR)

امروزه در بیشتر محل های کار و ساختمان های تجاری سیستم نظارت دوربین مداربسته برای نظارت بر فعالیت ها نصب شده است. اما اغلب اوقات ، برای مقامات مربوطه یا افراد امنیتی دشوار است که به طور مداوم بر روی پخش زنده همه دوربین ها نظارت کنند تا به دنبال فعالیت مشکوک باشند. با پیشرفت چشم انداز رایانه و یادگیری ماشین در یک مرحله سریع ، زمان آن فرا رسیده است که سیستم های دوربین مداربسته خود را هوشمند تر کنیم.

در این مقاله ، ما در مورد چگونگی دریافت ویدیو از یک DVR (مانند Hikvision DVR) از طریق پخش RTSP با رزبری پای با استفاده از Python و OpenCV بحث خواهیم کرد. در نهایت ما میتوانیم می توانیم از قدرت OpenCV برای تشخیص یک شی خاص ، استفاده از پلاک خودرو ، تشخیص چهره و … استفاده کنیم.

در این آموزش ، من از یک دوربین مدار بسته DVR 4 کانال هایک ویژن استفاده می کنم که قبلاً در ساختمان نصب شده است. ما همه 4 صفحه نمایش دوربین را به رزبری پای متصل میکنیم و آن را در صفحه نمایش لمسی 5 اینچی نمایش می دهیم که کاربر می تواند بین هر کانال در صورت لزوم جابجا شود. فیلم عملکرد پروژه در انتهای صفحه قرار داده شده است.

همچنین پروژه اندازه گیری جمعیت با رزبری پای را نیز ببینید.

آماده سازی DVR برای پخش جریانی RTSP

قبل از اینکه وارد سخت افزار raspberry pi و کد پایتون شویم ، مهم است که بررسی کنیم آیا DVR از RTSP پشتیبانی می کند و نحوه دسترسی به آن چگونه است. این روش برای هر نوع DVR متفاوت است و شما باید روش های مختلفی را انجام دهید.

اول از همه ، مطمئن شوید که نام کاربری و رمز ورود سیستم DVR خود را می دانید و DVR شما به اینترنت متصل است. همچنین در این آموزش ، من RTSP را فقط از یک شبکه محلی پخش می کنم ، اگر IP ثابت دارید ، می توانید انتقال پورت را انجام دهید و همین کار را برای سایر شبکه ها دنبال کنید. اما در این آموزش ، ما همه کارها را در داخل شبکه محلی انجام خواهیم داد.

مرحله 1: آدرس IP DVR خود را پیدا کنید. هنگامی که DVR به اینترنت متصل شد ، آدرس IP اختصاصی به آن اختصاص می یابد. این آدرس IP را می توانید از طریق صفحه پیکربندی روتر یا از طریق صفحه DVR خود پیدا کنید (با فرض اینکه مانیتور به DVR متصل هست).

مرحله 2: مرورگر وب مورد نظر خود را باز کرده و آدرس IP را وارد کرده و enter را بزنید. شما به صفحه ورود DVR منتقل خواهید شد. جایی که باید نام کاربری (نام کاربری تغییر کرده است) و رمز ورود DVR خود را وارد کنید. نام کاربری پیش فرض admin خواهد بود ، اما رمز عبور را باید بدانید. صفحه ورود به سیستم DVR من در زیر نشان داده شده است ، ممکن است از نظر ظاهری با DVR شما متفاوت باشد.

ورود به صفحه پخش زنده DVR

مرحله 3: پس از ورود موفقیت آمیز ، به دنبال شماره پورت RTSP در DVR خود باشید ، بیشتر اوقات ، مقدار پیش فرض 554 خواهد بود اما ممکن است تغییر کند. در اینجا باید بگردید تا گزینه ای را برای فعال کردن RTSP پیدا کنید.

اگر میخواهید آردوینو را به صورت اصولی و پروژه محور (برنامه نویسی حرفه ای، ارتباط آردوینو با اندروید، ساخت ربات با آردوینو) یاد بگیرید، روی دوره آموزش آردوینو کلیک کنید.

شماره پورت RTSP در DVR اتصال به رزبری پای

مرحله 4: پیوند RTSP خود را آماده کنید ، پیوند RTSP اصلی در قالب زیر خواهد بود-

rtsp://<username>:<password>@<ip>:<port>/cam/realmonitor?channel=<channelNo>&subtype=<typeNo>

باز هم ، این به نوع DVR بستگی دارد ، می توانید با استفاده از گوگل قالب مناسب را پیدا کنید. همچنین میتوانید از قالب زیر استفاده کنید

rtsp://<username>:<password>@<address>:<port>/Streaming/Channels/<id>/

جایی که <username> و <password> همان است که قبلاً در مرحله 2 برای ورود به سیستم استفاده می کردیم و <address> آدرس IP است که در مرحله 1 پیدا کردیم. شماره <port> برابر با 554 است ، یا همان چیزی است که شما در مرحله 3 پیدا کردید. عدد <id> برای هر کانال متفاوت خواهد بود. به عنوان مثال ، شماره “201” به این معنی است که ما از دوربین دوم (با 2 نشان داده شده) در جریان اصلی استفاده می کنیم. اگر شماره شناسه با 1 به پایان برسد ، به این معنی است که ما از جریان اصلی استفاده می کنیم و اگر با 2 به پایان برسد ، به این معنی است که از جریان فرعی استفاده خواهیم کرد. جریان فرعی در مقایسه با جریان اصلی از کیفیت پایینی برخوردار خواهد بود و در دستگاه های کم مصرف مانند رزبری پای ما بهترین عملکرد را دارد. پیوند RTSP پیوند به دوربین دوم فیلم در جریان زیر نشان داده شده است.

rtsp://admin:pas12345@192.168.11.110:554/Streaming/Channels/202/

مرحله 5: جریان را در VLC پخش کنید تا مطمئن شوید اتصال RTSP شما کار می کند. VLC را روی رایانه ای که به همان شبکه DVR متصل است نصب کنید ، آن را راه اندازی کنید و برای پخش جریانی شبکه Ctrl + N را فشار دهید. URL را همانطور که در زیر نشان داده شده وارد کنید و تأیید را فشار دهید.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

آموزش کامل اتصال DVR به برد رزبری پای

اگر پیوند RTSP به روشی معمول کار می کند ، باید جریان مستقیم دوربین مداربسته خود را در دستگاه پخش کننده VLC مانند تصویر زیر مشاهده کنید. اگر مشکل وجود داشته باشد ، باید پیوند صحیح را کشف کنید.

نمایش تصاویر دوربین مدار بسته در رزبری پای

پیکربندی رزبری پای برای اتصال به DVR

در مرحله بعدی ، ما باید Raspberry pi خود را به نمایشگر 5 اینچی متصل کنیم. اگر نحوه اتصال را نمیدانید، آموزش اتصال نمایشگر به رزبری پای را بخوانید.

ما از Raspberry Pi 3 B+ با سیستم عامل دبیان باستر استفاده می کنیم. خوب است که از موراد خنک کننده مثل هیت سینک یا فن نیز استفاده کنید. ما از هیچ خنک کننده ای استفاده نکردیم، بنابراین شکل نهایی مانند زیر است :

پیکربندی رزبری پای برای اتصال به DVR

نصب OpenCV و کتابخانه های دیگر در Raspberry Pi

برای نصب OpenCV، آموزش نصب OpenCV در رزبری پای را مشاهده کنید.

ما در این پروژه از کتابخانه “cvui” برای ایجاد یک رابط کاربری اساسی با دو دکمه استفاده خواهیم کرد که به ما امکان می دهد بین چهار صفحه نمایش سوئیچ کنیم. برای نصب cvui دستور زیر را دنبال کنید.

Python3 pip install cvui

با نصب هر دو بسته ، می توانیم وارد برنامه اصلی شویم. اطمینان حاصل کنید که هر دو بسته نصب شده در حال کار هستند.

بررسی نصب کتابخانه پخش زنده در رزبری پای

برنامه نویسی رزبری پای برای پخش ویدئو دوربین مدار بسته

کد کامل این پروژه در انتهای صفحه قرار داده شده است. در اینجا قسمت های مهم کد را توضیح خواهیم داد. کد رزبری پای را با فراخوانی کتابخانه های مورد نیاز آغاز خواهیم کرد.

import cv2
import cvui

قسمت بعدی برنامه نیاز به برخی ویرایش ها دارد. شما باید نام کاربری و رمز ورود DVR خود را وارد کنید. برای یک نمایشگر 5 اینچی ، عرض و ارتفاع به ترتیب 800 و 480 هستند ، بنابراین ما همان را وارد کرده ایم.

rtsp_username = "admin"
rtsp_password = "aswinth347653"
width = 800
height = 480
cam_no = 1

ما تابعی داریم به نام create camera که هر بار که شماره دوربینی را که باید مشاهده شود تغییر خواهیم داد.

def create_camera (channel):
    rtsp = "rtsp://" + rtsp_username + ":" + rtsp_password + "@192.168.29.100:554/Streaming/channels/" + channel + "02"
    cap = cv2.VideoCapture()
    cap.open(rtsp)
    cap.set(3, 640)  # ID number for width is 3
    cap.set(4, 480)  # ID number for height is 480
    cap.set(10, 100)  # ID number for brightness is 10qq
    return cap

در داخل حلقه while اصلی ، ما برنامه خود را برای خواندن یک فریم از دستگاه ضبط و تبدیل آن به تمام صفحه داریم. پنجره نمایش در برنامه ما به عنوان صفحه نمایش فراخوانی می شود.

success, current_cam = cam.read()
dim = (width, height)
Full_frame = cv2.resize(current_cam, dim, interpolation=cv2.INTER_AREA)
cv2.namedWindow('screen', cv2.WINDOW_NORMAL)
cv2.setWindowProperty('screen', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)

در ادامه دو دکمه داریم که روی صفحه قرار می گیرند. از دستور cvui.button برای قرار دادن دکمه در مکان مورد استفاده و از دستور cvui.mouse برای تشخیص کلیک ماوس استفاده می شود. در صورت کلیک بر روی دکمه ، دو عبارت if داریم که دستور if مربوطه اجرا می شود.

if (cvui.button(Full_frame, width - 100, height - 40, "Next") and cvui.mouse(cvui.CLICK)):
    print("Next Button Pressed")
    cvui.init('screen')
    cam_no = cam_no+1
    if (cam_no>4):
        cam_no=1
    del cam
    cam = create_camera(str(cam_no))
if (cvui.button(Full_frame, width - 200, height - 40, "Previous") and cvui.mouse(cvui.CLICK)):
    print("Previous Button Pressed")
    cvui.init('screen')
    cam_no = cam_no - 1
    if (cam_no<1):
        cam_no=4
    del cam
    cam = create_camera(str(cam_no))

در داخل دستور if ، بر اساس دکمه ما cam_no count را کم یا زیاد می کنیم و سپس cam موجود را حذف کرده و با استفاده از عملکردی که در بالا بحث کردیم یک cam جدید ایجاد می کنیم. همچنین ، توجه داشته باشید که cvui.init برای رفرش صفحه نمایش باید هر بار فراخوانی شود.

قسمت نهایی کد نمایش کادر به عنوان خروجی و خروج از صفحه خروجی با فشار دادن q است. ما فقط منتظر یک ضربه کلید هستیم و اگر کلید ‘q’ باشد ، همه پنجره ها را از بین می بریم.

cv2.imshow('screen', Full_frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
    cv2.destroyAllWindows()
    break

آزمایش پخش دوربین مداربسته در رزبری پای

تست کد کاملاً آسان است ، رزبری پای را روشن کنید و کد پایتون که در انتهای صفحه قرار داده شده است را راه اندازی کنید. اطمینان حاصل کنید که اطلعات مناسب برای کار با لینک RTSP را وارد کرده اید. همچنین میتوانید از VLC در رزبری پای استفاده کنید.

پخش دوربین مداربسته در رزبری پای

اگر روی VLC کار کند ، می توان مطمئن بود که رزبری پای ما به همان شبکه متصل است و پیوند RTSP همانطور که باید کار می کند. سپس کد داده شده در پایین این صفحه را باز کرده و با استفاده از python IDE آن را اجرا کنید. اگر اطلاعات به درستی وارد شده باشد ، صفحه زیر را مشاهده خواهید کرد. که پخش زنده دوربین را با دو دکمه نشان می دهد.

پخش زنده CCTV با رزبری پای و DVR

از آنجا که نمایشگر لمسی است ، می توانید دکمه های “قبلی” و “بعدی” را لمس کنید تا به دوربین بعدی بروید. این برنامه برای سوئیچ بین چهار دوربین اول نوشته شده است ، اگر بیش از 4 دوربین به DVR شما متصل باشد ، می توانید آن را به راحتی تغییر دهید.

پروژه ها رایگان هستند. برای دانلود فایل های پروژه باید در سایت عضو باشید. ثبت نام / ورود

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید
امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. مالکیتی بر مطالب ارائه شده ندارم. اکثر فعالیت بنده در زمینه ترجمه است. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *