در این مطلب، ویدئو بیایید با استفاده از OpenCV در پایتون یک آشکارساز حرکت ایجاد کنیم با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,060 –> 00:00:04,200
سلام، بله، از اینکه
2
00:00:04,200 –> 00:00:05,549
مردم به اتاق نشیمن
3
00:00:05,549 –> 00:00:09,990
شما می آیند و عسل شما را می دزدند، خسته شده اید، پس من خوب هستم،
4
00:00:09,990 –> 00:00:12,000
امروز یک خبر عالی برای شما دارم، ما
5
00:00:12,000 –> 00:00:13,679
از شما می خواهیم که از ابتدا بیایید که
6
00:00:13,679 –> 00:00:15,289
تشخیص می دهد چه زمانی شخصی در کادر است
7
00:00:15,289 –> 00:00:17,970
با استفاده از پس زمینه تفریق پسزمینه
8
00:00:17,970 –> 00:00:20,039
یک الگوریتم است که ما در حال
9
00:00:20,039 –> 00:00:22,050
تولید یک ماسک پیشزمینه برای تشخیص
10
00:00:22,050 –> 00:00:24,990
حرکت چیزی در تصویر
11
00:00:24,990 –> 00:00:26,550
هستیم. گاهی اوقات به عنوان تشخیص پیشزمینه نیز شناخته میشود.
12
00:00:26,550 –> 00:00:29,310
13
00:00:29,310 –> 00:00:31,170
14
00:00:31,170 –> 00:00:33,899
15
00:00:33,899 –> 00:00:36,210
فریم جدید درست است، شما
16
00:00:36,210 –> 00:00:37,920
آن فریم را با مدل پسزمینه مقایسه میکنید
17
00:00:37,920 –> 00:00:40,050
و میبینید که کدام پیکسلها
18
00:00:40,050 –> 00:00:41,180
و با
19
00:00:41,180 –> 00:00:43,950
استفاده از آن آستانه چقدر متفاوت هستند و
20
00:00:43,950 –> 00:00:45,570
تفریق پسزمینه چگونه کار میکند، بنابراین اگر
21
00:00:45,570 –> 00:00:47,489
دوربین متحرکی دارید، این کار خیلی خوب کار نمیکند،
22
00:00:47,489 –> 00:00:49,440
زیرا هر فریمی
23
00:00:49,440 –> 00:00:50,910
متفاوت خواهد بود و بسیار
24
00:00:50,910 –> 00:00:53,370
متفاوت خواهد بود، بنابراین فکر می کنم چیزی در
25
00:00:53,370 –> 00:00:55,980
هر فریم در حال حرکت است، چهار نوع
26
00:00:55,980 –> 00:00:57,780
تفریق پس زمینه وجود دارد که حداقل من
27
00:00:57,780 –> 00:01:03,600
می دانم ab از MLG MLG 2k n و سپس GMG
28
00:01:03,600 –> 00:01:06,750
Emoji و Emoji به هر دو به معنی مخلوط
29
00:01:06,750 –> 00:01:08,970
گاوسی مطمئن شوید که ایموجی
30
00:01:08,970 –> 00:01:11,100
31
00:01:11,100 –> 00:01:12,960
مخلوطی از گاوسی است.
32
00:01:12,960 –> 00:01:15,950
33
00:01:15,950 –> 00:01:18,570
34
00:01:18,570 –> 00:01:19,890
یک
35
00:01:19,890 –> 00:01:22,110
مشخصه رایج که در آن قاب جدید را
36
00:01:22,110 –> 00:01:25,530
با یک مدل پسزمینه مقایسه میکند. یکی
37
00:01:25,530 –> 00:01:28,680
از شکلکها برای به تعویق انداختن شکلکها، یکی
38
00:01:28,680 –> 00:01:30,540
گزینهای برای انتخاب چند ترکیب از
39
00:01:30,540 –> 00:01:32,340
گاوسی که میخواهید توزیع گاوسی
40
00:01:32,340 –> 00:01:34,710
اجازه دهید M 1 G
41
00:01:34,710 –> 00:01:36,750
2 بسیار سریعتر از emoji 1 است، داشت. و همچنین
42
00:01:36,750 –> 00:01:39,360
بسیار پایدارتر است، همچنین از
43
00:01:39,360 –> 00:01:41,640
توانایی انتخاب تعداد میکسرهای گوش
44
00:01:41,640 –> 00:01:43,049
که میخواهید برای کل فریم انتخاب کنید خلاص میشود،
45
00:01:43,049 –> 00:01:46,140
زیرا پیکسل به پیکسل آن را تشخیص میدهد و تشخیص
46
00:01:46,140 –> 00:01:48,570
میدهد که
47
00:01:48,570 –> 00:01:50,970
این هر پیکسل به چه تعداد مخلوط نیاز دارد و این
48
00:01:50,970 –> 00:01:52,950
پالایش را انجام میدهد. سازگاری بهتر هر صحنه
49
00:01:52,950 –> 00:01:55,020
از طرف دیگر GMG بسیار
50
00:01:55,020 –> 00:01:56,930
پویاتر است، چند فریم اول را
51
00:01:56,930 –> 00:02:00,420
به طور پیشفرض 120 میگیرد و با فریمهای
52
00:02:00,420 –> 00:02:02,700
بعدی نمایش میدهد و در واقع با آن سازگار میشود.
53
00:02:02,700 –> 00:02:05,399
اکنون MLG برنده یک MLG 2 است همچنین یک
54
00:02:05,399 –> 00:02:07,259
پارامتر تاریخچه داشت که از طریق
55
00:02:07,259 –> 00:02:09,959
هر الگوریتمی عبور می کنید که در آن می توانید اساساً
56
00:02:09,959 –> 00:02:11,849
مدل پس زمینه را در
57
00:02:11,849 –> 00:02:12,660
هر
58
00:02:12,660 –> 00:02:15,090
فریم تغییر دهید، بنابراین اگر می خواهید هر ده
59
00:02:15,090 –> 00:02:17,370
فریم آن مدل
60
00:02:17,370 –> 00:02:19,200
پس زمینه مدل پس زمینه جدید باشد، بگویید.
61
00:02:19,200 –> 00:02:20,520
گزینه ای برای انجام آن در چیزی شبیه به
62
00:02:20,520 –> 00:02:23,430
آن وجود دارد و سپس KNN یکی از مواردی است که من در واقع استفاده نکرده
63
00:02:23,430 –> 00:02:25,620
ام و نمی توانم زیاد در مورد آن توضیح دهم،
64
00:02:25,620 –> 00:02:27,000
اما این فقط به معنی K نزدیکترین همسایه است
65
00:02:27,000 –> 00:02:30,960
و اگر اطلاعاتی در مورد آن
66
00:02:30,960 –> 00:02:32,940
نظر زیر شخصی من دارید مورد علاقه
67
00:02:32,940 –> 00:02:35,070
ایموجی است که امروز در اینجا خواهید دید،
68
00:02:35,070 –> 00:02:37,290
بنابراین بیایید به کد
69
00:02:37,290 –> 00:02:45,180
اجازه دهید و سپس شروع می کنیم که
70
00:02:45,180 –> 00:02:48,330
OpenCV را به کتابخانه برای پایتون
71
00:02:48,330 –> 00:02:54,420
وارد می کنیم، numpy را مانند p وارد
72
00:02:54,420 –> 00:02:58,440
می کنیم و اکنون می خواهیم زمانی که از
73
00:02:58,440 –> 00:03:05,040
ویدیوی خود فیلمبرداری میکنم، از ویدیوی خود عکس بگیرید، بنابراین میخواهم به
74
00:03:05,040 –> 00:03:08,670
همه شما یک نسخه نمایشی ویدیویی ارائه کنم که
75
00:03:08,670 –> 00:03:10,710
فقط به صفحه
76
00:03:10,710 –> 00:03:13,710
نمایش داده میشود و آن را نشان میدهد، میتوانیم آن را در اینجا نشان دهیم یا
77
00:03:13,710 –> 00:03:19,830
روی این ویدیو کلیک کنید.
78
00:03:19,830 –> 00:03:22,160
79
00:03:22,960 –> 00:03:28,670
کمی بیشتر است تا
80
00:03:28,670 –> 00:03:30,470
بتوانیم با برخی از معیارها و
81
00:03:30,470 –> 00:03:31,300
چیزهای مختلف از این قبیل بازی کنید،
82
00:03:31,300 –> 00:03:33,920
من فقط همین امروز آن را نشان میدهم که
83
00:03:33,920 –> 00:03:39,110
هنوز هم خوب نیست،
84
00:03:39,110 –> 00:03:40,790
بنابراین یک ویدیو برای ما ارائه
85
00:03:40,790 –> 00:03:45,040
میدهم تا این متغیر را capture ego cb2 نامگذاری کنیم که
86
00:03:45,040 –> 00:03:48,620
ضبط ویدیو و ویدیو قرار است
87
00:03:48,620 –> 00:03:55,550
حرکت آزمایشی نامیده شود، بنابراین در مرحله بعد میخواهیم
88
00:03:55,550 –> 00:03:57,080
پسزمینه تفریق را در آنجا ایجاد کنیم،
89
00:03:57,080 –> 00:04:02,560
آن را f gb g مینامم و برای
90
00:04:02,560 –> 00:04:06,410
ایجاد تفریقکننده پسزمینه به cv میروم، از ایموجی استفاده میکنم،
91
00:04:06,410 –> 00:04:10,640
بنابراین این چند پارامتر داشته باشد
92
00:04:10,640 –> 00:04:12,980
، تاریخچه دارد. آستانه و تشخیص
93
00:04:12,980 –> 00:04:16,250
سایهها، بنابراین اساساً تاریخچه این است
94
00:04:16,250 –> 00:04:18,649
که چند فریم قبلی
95
00:04:18,649 –> 00:04:20,149
برای ساخت مدل پسزمینه
96
00:04:20,149 –> 00:04:23,360
استفاده شده است، بنابراین بگویید اگر تاریخچه ما Tim است اکنون
97
00:04:23,360 –> 00:04:25,220
این هر فریم تیم یک
98
00:04:25,220 –> 00:04:28,220
پسزمینه جدید میسازد.
99
00:04:28,220 –> 00:04:29,840
شما ویدیو را برای آنها دیدید
100
00:04:29,840 –> 00:04:31,100
اگر من
101
00:04:31,100 –> 00:04:34,370
در آن موقعیت ثابت می ایستادم که
102
00:04:34,370 –> 00:04:36,530
پس زمینه جدید بود و سپس
103
00:04:36,530 –> 00:04:38,270
حرکتی در آن موقعیت پیدا کردم
104
00:04:38,270 –> 00:04:40,100
پس زمینه تغییر می کرد شما می دانید که
105
00:04:40,100 –> 00:04:43,880
حرکت در نظر گرفته می شود. ما یک
106
00:04:43,880 –> 00:04:47,810
تاریخچه بسیار بالا برای 300 فریم می خواهیم و
107
00:04:47,810 –> 00:04:49,940
پارامتر دوم ما آستانه آستانه است که
108
00:04:49,940 –> 00:04:54,140
اساساً فریم قبلی را در
109
00:04:54,140 –> 00:04:56,540
آن موقعیت پیکسل با فریم جدید
110
00:04:56,540 –> 00:04:58,669
مقایسه می کند و موقعیت آن را انتخاب می کند و می بیند و
111
00:04:58,669 –> 00:05:00,440
می بیند که چقدر تفاوت
112
00:05:00,440 –> 00:05:02,630
در واقع دارد بنابراین ما اختلاف بسیار بالایی را
113
00:05:02,630 –> 00:05:09,410
بالای 400 قرار دهید، بسیار
114
00:05:09,410 –> 00:05:12,890
بیشتر خواهد بود، حساسیت بسیار کمتری خواهد داشت و سپس
115
00:05:12,890 –> 00:05:15,140
برای سایههای متنی، میخواهیم سایه را تشخیص دهیم،
116
00:05:15,140 –> 00:05:17,500
بنابراین چه کسی آن را درست میداند
117
00:05:17,500 –> 00:05:19,370
و سپس
118
00:05:19,370 –> 00:05:33,320
آستانه تاریخچه را قرار میدهیم. کار بعدی
119
00:05:33,320 –> 00:05:36,380
که میخواهیم انجام دهیم این است که حلقه وحشی خود را ایجاد کنیم،
120
00:05:36,380 –> 00:05:41,270
بنابراین در حالی که true است، میخواهیم
121
00:05:41,270 –> 00:05:44,020
مقدار بازگشتی را در قاب
122
00:05:44,020 –> 00:05:48,590
عکس خوانده شده دریافت کنیم، بنابراین این قاب
123
00:05:48,590 –> 00:05:53,720
جایی است که در حال حاضر ضبط در آن قرار دارد، این
124
00:05:53,720 –> 00:06:02,830
یادداشتها به نوعی مقدار بازگشتی و جریان وجود دارد.
125
00:06:03,940 –> 00:06:07,160
بنابراین این مقدار بازگشتی بسیار مناسب است
126
00:06:07,160 –> 00:06:10,070
زیرا می تواند بگوید که آیا
127
00:06:10,070 –> 00:06:12,650
فریمی وجود دارد که واقعاً فعلی
128
00:06:12,650 –> 00:06:14,479
وجود دارد یا نه، اکنون هیچ فریم فعلی وجود ندارد که
129
00:06:14,479 –> 00:06:16,220
نمی خواهیم کد خود را مرور کنیم
130
00:06:16,220 –> 00:06:19,220
زیرا درست در اینجا در بالا خراب می شود.
131
00:06:19,220 –> 00:06:21,169
فقط بررسی کنید که یک بازگشت درست است یا
132
00:06:21,169 –> 00:06:23,180
نه، شاید درست نیست، بیایید
133
00:06:23,180 –> 00:06:28,389
در فضای وحشی اوه اوه نه در سرزمین جاوا اسکریپت
134
00:06:42,690 –> 00:06:45,000
و سپس میخواهیم اندازه قاب را تغییر دهیم،
135
00:06:45,000 –> 00:06:51,480
زیرا این ویدیو بسیار بزرگ است، بنابراین
136
00:06:51,480 –> 00:06:55,410
با یک قاب تغییر اندازه، نسوز خواهیم داشت.
137
00:06:55,410 –> 00:07:00,390
متغیر cv به non resize با یک
138
00:07:00,390 –> 00:07:01,860
پارامتر تازه من می خواهم در قاب
139
00:07:01,860 –> 00:07:03,480
برای پارامتر دوم پاس می دهم
140
00:07:03,480 –> 00:07:06,930
، اندازه D را پاس می کنیم و سپس
141
00:07:06,930 –> 00:07:10,650
اساساً مقیاس آنچه که
142
00:07:10,650 –> 00:07:12,210
نمایش قرار است باشد را می خواهیم و سپس
143
00:07:12,210 –> 00:07:17,160
موقعیت Y و
144
00:07:17,160 –> 00:07:21,690
زمانی که آن را در سی دی باز باز می کنیم راحت تر دیده می شود،
145
00:07:21,690 –> 00:07:23,670
بنابراین کار بعدی که می خواهیم انجام دهیم این است
146
00:07:23,670 –> 00:07:29,100
که جرم پیش زمینه را بدست آوریم تا
147
00:07:29,100 –> 00:07:34,440
ماسک پیش زمینه برابر با f g p f DB g باشد و
148
00:07:34,440 –> 00:07:36,570
من این پس زمینه را اعمال می کنم.
149
00:07:36,570 –> 00:07:45,360
اینجا را در قاب تغییر اندازه تشخیص دهید و سپس
150
00:07:45,360 –> 00:07:48,810
در اینجا، تمام
151
00:07:48,810 –> 00:07:56,760
پیکسلهای غیر صفر داخل ماسک را میشماریم، بنابراین
152
00:07:56,760 –> 00:07:59,400
در اینجا این ماسک
153
00:07:59,400 –> 00:08:01,710
به شما یک قاب سیاه و سفید میدهد و یک قاب سیاه و سفید به شما میدهد،
154
00:08:01,710 –> 00:08:03,360
155
00:08:03,360 –> 00:08:06,870
بنابراین اساساً هر زمان که میخواهید اینجا را پایین بیاورید. ما
156
00:08:06,870 –> 00:08:09,390
یک پیکسل سفید داریم که True در نظر گرفته می شود e
157
00:08:09,390 –> 00:08:13,890
pixel، بنابراین صفر صفر نادرست نیست،
158
00:08:13,890 –> 00:08:17,310
بنابراین یک پیکسل سیاه خواهد بود، بنابراین
159
00:08:17,310 –> 00:08:20,130
در اینجا میخواهیم تعداد egos MP
160
00:08:20,130 –> 00:08:25,830
را روی این شعله تغییر اندازه بدون صفر انجام دهیم،
161
00:08:25,830 –> 00:08:27,760
162
00:08:27,760 –> 00:08:31,180
بنابراین numpy یک عملکرد داخلی دارد که
163
00:08:31,180 –> 00:08:34,070
روی آن حساب میشود. صفر بنابراین اساساً فقط
164
00:08:34,070 –> 00:08:37,880
هر پیکسل در بردار را می شمارد تا ببیند
165
00:08:37,880 –> 00:08:41,179
آیا این پیکسل رنگی دارد یا نه و اگر
166
00:08:41,179 –> 00:08:44,360
ندارد و صفر در نظر گرفته می شود و اگر
167
00:08:44,360 –> 00:08:47,830
داشته باشد پس صفر نیست
168
00:08:47,830 –> 00:08:51,860
خوب من اینجا را به هم زدم پس من خوب هستم.
169
00:08:51,860 –> 00:08:56,510
وارد کردن numpy به عنوان MP در بالا، فقط
170
00:08:56,510 –> 00:08:57,770
به اینجا برگردید،
171
00:08:57,770 –> 00:09:00,020
بنابراین بیایید آنچه را که میخواهیم به دست
172
00:09:00,020 –> 00:09:07,550
آوریم چاپ کنیم تا تعداد پیکسلها را به خوبی فریم دریافت کنیم، اکنون
173
00:09:07,550 –> 00:09:16,340
میخواهیم فریم خود را ردیابی کنیم، بنابراین
174
00:09:16,340 –> 00:09:18,020
بیایید در واقع ردیابی فریم
175
00:09:18,020 –> 00:09:20,990
اشتباه را داشته باشیم. فریم را انجام میدهید که میدانید
176
00:09:20,990 –> 00:09:27,890
درصد D را انجام میدهید و سپس فراخوانی میکند،
177
00:09:27,890 –> 00:09:30,650
یک متغیر نام تعداد فریم را ایجاد میکند،
178
00:09:30,650 –> 00:09:39,430
صفر نگه میدارد
179
00:09:45,380 –> 00:09:48,800
و سپس در اینجا پایین،
180
00:09:48,800 –> 00:09:53,260
تعداد فریم را به اضافه یک افزایش
181
00:09:53,260 –> 00:09:55,940
میدهیم و در اینجا میتوانیم برای
182
00:09:55,940 –> 00:09:57,730
پرینت گرفتن از کدام
183
00:09:57,730 –> 00:10:00,950
184
00:10:00,950 –> 00:10:02,450
فریم واقعا در کادر ما نویز
185
00:10:02,450 –> 00:10:03,829
داشته باشید، همیشه یک عینک کوچک وجود خواهد داشت
186
00:10:03,829 –> 00:10:05,779
یا شاید
187
00:10:05,779 –> 00:10:07,279
عینک بزرگی بود که ما واقعاً
188
00:10:07,279 –> 00:10:10,130
در یک قاب نمیخواهیم، بنابراین میخواهیم می
189
00:10:10,130 –> 00:10:14,450
ان بزرگی این تغییر را ردیابی کن
190
00:10:14,450 –> 00:10:18,470
م و میخواهیم آن را به خوبی انجام دهیم. ببینید در
191
00:10:18,470 –> 00:10:20,240
واقع تغییر در کل فریم چقدر بزرگ است،
192
00:10:20,240 –> 00:10:23,329
فریم فعلی که اکنون در
193
00:10:23,329 –> 00:10:25,700
آن هستیم، بنابراین ما در اینجا آستانه هر پیکسل را داریم،
194
00:10:25,700 –> 00:10:28,519
اما این چیزی نیست که در
195
00:10:28,519 –> 00:10:30,019
مورد آن صحبت می کنیم،
196
00:10:30,019 –> 00:10:32,000
اگر واقعاً یک حرکت باشد، درباره کارآگاه صحبت نمی کنیم. یا نه، ما تشخیص میدهیم که
197
00:10:32,000 –> 00:10:34,430
آیا حرکت به اندازهای بزرگ است که به
198
00:10:34,430 –> 00:10:39,290
عنوان یک تغییر واقعی معتبر باشد، بنابراین این همان
199
00:10:39,290 –> 00:10:41,360
جایی است که وارد میشود، بنابراین
200
00:10:41,360 –> 00:10:45,920
دستور if را تعداد فریم خواهد داشت
201
00:10:45,920 –> 00:10:48,200
، مطمئن شوید که ابتدا انجام میدهیم.
202
00:10:48,200 –> 00:10:49,579
مطمئن شوید که تعداد فریمها بیشتر
203
00:10:49,579 –> 00:10:52,160
از یک است، زیرا اولین
204
00:10:52,160 –> 00:10:53,800
فریم همیشه یک عدد واقعاً بالا خواهد بود،
205
00:10:53,800 –> 00:10:56,149
زیرا اساساً یک
206
00:10:56,149 –> 00:10:57,950
تغییر کامل از آنچه بود، است، بنابراین
207
00:10:57,950 –> 00:10:59,690
در ابتدا یک تصویر سیاه و سفید خواهد بود و آن را
208
00:10:59,690 –> 00:11:01,880
تشخیص میداد و آن را با آن مقایسه میکرد.
209
00:11:01,880 –> 00:11:04,250
اولین فریم کاملاً n بود فریم
210
00:11:04,250 –> 00:11:06,140
ew بنابراین همیشه یک عدد بالا وجود خواهد داشت،
211
00:11:06,140 –> 00:11:07,760
بنابراین بیایید مطمئن شویم که تعداد فریمها
212
00:11:07,760 –> 00:11:10,430
بیش از یک است و سپس
213
00:11:10,430 –> 00:11:12,589
مطمئن شویم که تعداد
214
00:11:12,589 –> 00:11:15,620
پیکسلهای تغییر داخل فریم بیشتر
215
00:11:15,620 –> 00:11:19,279
از مقیاسی است که فرض کنیم مانند یک
216
00:11:19,279 –> 00:11:21,290
عدد دلخواه من در واقع قبلاً این
217
00:11:21,290 –> 00:11:24,200
کار را انجام دادهام، بنابراین یک عدد دارم،
218
00:11:24,200 –> 00:11:25,550
تعدادی پیکسل دارم که واقعاً میخواهم آنها را جستجو
219
00:11:25,550 –> 00:11:28,190
کنم، بنابراین از
220
00:11:28,190 –> 00:11:32,600
تعداد فریمهای 5000 عبور میکنیم، بنابراین اکنون
221
00:11:32,600 –> 00:11:36,560
فریمی را
222
00:11:36,560 –> 00:11:40,160
که من هستم نشان میدهیم. قاب تغییر اندازه را دقیقاً در کنار یکدیگر نشان میدهیم
223
00:1