در این مطلب، ویدئو تشخیص شکل در زمان واقعی با استفاده از خطوط [9] | آموزش OpenCV پایتون برای مبتدیان 2020 با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:20:24
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,000 –> 00:00:22,510
[موسیقی]
2
00:00:25,940 –> 00:00:28,590
سلام به همه خوش آمدید امروز به کارگاه من خوش آمدید،
3
00:00:28,590 –> 00:00:31,410
ما یاد خواهیم گرفت که چگونه
4
00:00:31,410 –> 00:00:34,400
اشکال اجسام را با پیدا کردن خطوط
5
00:00:34,400 –> 00:00:37,770
6
00:00:37,770 –> 00:00:40,949
7
00:00:40,949 –> 00:00:43,199
آنها تشخیص دهیم.
8
00:00:43,199 –> 00:00:47,220
9
00:00:47,220 –> 00:00:49,800
نقاط گوشه ای که هر شکل به همراه
10
00:00:49,800 –> 00:00:53,550
ناحیه خود دارد، من به صورت هفتگی ویدیوها را آپلود می کنم،
11
00:00:53,550 –> 00:00:55,559
بنابراین فراموش نکنید که مشترک شوید و
12
00:00:55,559 –> 00:00:57,300
اگر می
13
00:00:57,300 –> 00:01:00,360
خواهید تعداد بیشتری از این ویدیوها را ببینید، دکمه نوتیفیکیشن را فشار دهید، بنابراین بیایید
14
00:01:00,360 –> 00:01:02,360
15
00:01:02,360 –> 00:01:07,110
[Music] را شروع کنیم،
16
00:01:08,790 –> 00:01:12,700
بنابراین ما اینجا هستیم کد از ویدیوی وب کم خود
17
00:01:12,700 –> 00:01:15,369
که در آن وب کم را اجرا می کنیم
18
00:01:15,369 –> 00:01:18,450
و هر تصویر را فریم به فریم نمایش می
19
00:01:18,450 –> 00:01:21,310
دهیم، کتابخانه های خود را وارد می کنیم که
20
00:01:21,310 –> 00:01:24,390
cb2 و numpy هستند، تنظیمات دوربین خود را مقداردهی اولیه می کنیم
21
00:01:24,390 –> 00:01:28,149
و سپس
22
00:01:28,149 –> 00:01:31,149
هر فریم را می خوانیم و سپس با استفاده
23
00:01:31,149 –> 00:01:35,860
از I am show نمایش می دهیم. عملکردی که اکنون می
24
00:01:35,860 –> 00:01:38,770
خواهیم انجام دهیم این است که ابتدا
25
00:01:38,770 –> 00:01:42,909
تصویر خود را به مقیاس خاکستری تبدیل می کنیم و قبل از
26
00:01:42,909 –> 00:01:45,429
انجام این کار می خواهیم کمی تاری اضافه کنیم،
27
00:01:45,429 –> 00:01:48,179
بنابراین برای انجام این کار از G استفاده می کنیم.
28
00:01:48,179 –> 00:01:52,349
تابع aussian blur اکنون
29
00:01:52,349 –> 00:01:54,340
در یکی از ویدیوهای قبلی بحث کرده ایم،
30
00:01:54,340 –> 00:01:57,250
بنابراین در اینجا تابع این است
31
00:01:57,250 –> 00:01:59,349
تاری تصویر ما و ما از
32
00:01:59,349 –> 00:02:01,420
تابع hosnian blur با
33
00:02:01,420 –> 00:02:05,200
هسته هفت در هفت استفاده می کنیم و
34
00:02:05,200 –> 00:02:08,769
تصویر خود را به تارتر تبدیل می کنیم. نسخه
35
00:02:08,769 –> 00:02:10,899
اکنون پس از
36
00:02:10,899 –> 00:02:13,180
اینکه تبدیل شدیم، میخواهیم آن
37
00:02:13,180 –> 00:02:15,670
را با استفاده از تابع مقیاس خاکستری
38
00:02:15,670 –> 00:02:19,329
که رنگ CVT است، آن را به مقیاس خاکستری تبدیل کنیم و ما در حال
39
00:02:19,329 –> 00:02:21,459
وارد کردن تصویر تار تابع تار
40
00:02:21,459 –> 00:02:24,569
خود هستیم و سپس آن را از BGR به خاکستری تبدیل میکنیم،
41
00:02:24,569 –> 00:02:30,880
بنابراین قبل از اینکه وارد هر کدام شویم.
42
00:02:30,880 –> 00:02:33,840
علاوه بر این، یک تمرین خوب این است
43
00:02:33,840 –> 00:02:37,150
که کارهایی را که تاکنون انجام دادهایم تجسم کنیم، بنابراین
44
00:02:37,150 –> 00:02:39,840
اگر به یاد داشته باشید چندی پیش من یک
45
00:02:39,840 –> 00:02:43,780
تابع برای چیدن تصاویر در کنار هم نوشتم،
46
00:02:43,780 –> 00:02:45,819
میخواهیم همه آنها را در کنار
47
00:02:45,819 –> 00:02:49,810
هم و نه در پنجرهای متفاوت نمایش دهیم تا کاری که میتوانیم
48
00:02:49,810 –> 00:02:52,209
انجام دهیم این است. ما میتوانیم آن تابع را کپی کنیم،
49
00:02:52,209 –> 00:02:54,340
من پیوند آن تابع را در توضیحات خواهم داشت،
50
00:02:54,340 –> 00:02:57,760
بنابراین در اینجا آن تابع است که ما
51
00:02:57,760 –> 00:02:59,980
فقط باید مقیاس و
52
00:02:59,980 –> 00:03:02,170
آرایهای از تصاویر را که میخواهیم
53
00:03:02,170 –> 00:03:04,150
با هم انباشته کنیم را وارد کنیم و این کار انجام میشود. آن را برای ما بچسبانید، بنابراین
54
00:03:04,150 –> 00:03:08,220
در مورد ما میخواهیم تصاویر خود را روی
55
00:03:08,220 –> 00:03:13,500
هم قرار دهیم، بنابراین میگوییم پشته تصویر برابر است با
56
00:03:13,500 –> 00:03:16,540
پشتههای تصاویر و
57
00:03:16,540 –> 00:03:20,620
مقیاس 0.8 را میدهیم و سپس تصاویر خود
58
00:03:20,620 –> 00:03:23,530
را میدهیم، آرایهای از تصاویر را میدهیم که
59
00:03:23,530 –> 00:03:27,430
IMG است. و سپس ما تاری IMG داریم و سپس
60
00:03:27,430 –> 00:03:32,470
خاکستری IMG داریم، بنابراین
61
00:03:32,470 –> 00:03:34,450
به جای نمایش تصویر، میخواهیم
62
00:03:34,450 –> 00:03:37,780
پشته تصویر را نمایش دهیم، بنابراین بیایید این کار را اجرا
63
00:03:37,780 –> 00:03:42,790
کنیم، بنابراین در اینجا سه تصویر را داریم که
64
00:03:42,790 –> 00:03:44,650
صویر اصلی را داریم و میتوانید ای
65
00:03:44,650 –> 00:03:47,019
را کمی ببینید. کمی تاری
66
00:03:47,019 –> 00:03:48,940
معرفی شد و سپس ما
67
00:03:48,940 –> 00:03:53,019
تصویر مقیاس خاکستری را داریم، بنابراین در مرحله بعدی
68
00:03:53,019 –> 00:03:55,180
از آشکارساز لبه کنی خود برای تشخیص لبههای تصویر استفاده میکنیم،
69
00:03:55,180 –> 00:03:59,170
اگر
70
00:03:59,170 –> 00:04:02,560
به یاد داشته باشید که آشکارساز لبهای دو
71
00:04:02,560 –> 00:04:06,129
آستانه دارد و کاری که باید انجام دهیم این است که
72
00:04:06,129 –> 00:04:08,290
به آن نیاز داریم. برای جابجایی آنها تا زمانی که
73
00:04:08,290 –> 00:04:10,180
مقادیر مناسب را بدست آوریم، بنابراین برای انجام این
74
00:04:10,180 –> 00:04:12,610
کار از نوارهای مسیر استفاده می کنیم، بنابراین بیایید نوارهای مسیر را
75
00:04:12,610 –> 00:04:16,870
معرفی کنیم تا به
76
00:04:16,870 –> 00:04:19,930
نام پنجره نیاز داشته باشیم، اندازه پنجره را تغییر می
77
00:04:19,930 –> 00:04:22,710
دهیم و سپس آستانه یک را معرفی می
78
00:04:22,710 –> 00:04:27,370
کنیم و آستانه دو بنابراین
79
00:04:27,370 –> 00:04:29,470
اینجا من نام پارامترهای پنجره را
80
00:04:29,470 –> 00:04:31,960
میدهیم، سپس اندازه پنجره را تغییر
81
00:04:31,960 –> 00:04:34,810
میدهیم و سپس
82
00:04:34,810 –> 00:04:36,550
نوار آهنگ یک را با آستانه یک و
83
00:04:36,550 –> 00:04:40,599
نوار مسیر دو را با آستانه ایجاد میکنیم – اکنون این
84
00:04:40,599 –> 00:04:42,639
خالی اساساً تابعی است که
85
00:04:42,639 –> 00:04:46,090
هر زمان که وجود داشته باشد فراخوانی میشود.
86
00:04:46,090 –> 00:04:48,550
تغییر در مقدار بنابراین ما
87
00:04:48,550 –> 00:04:50,590
نمیخواهیم کاری انجام دهیم، بنابراین
88
00:04:50,590 –> 00:04:54,430
یک تابع خالی تعریف میکنیم و
89
00:04:54,430 –> 00:04:59,820
فقط آن را پاس میدهیم تا حالا که داریم که
90
00:04:59,820 –> 00:05:05,139
اکنون که داریم
91
00:05:05,139 –> 00:05:08,289
، آشکارساز لبهی canny خود را به این صورت در canny مینویسیم.
92
00:05:08,289 –> 00:05:11,110
ردیاب لبه ما تصویر canny را داریم سپس
93
00:05:11,110 –> 00:05:13,630
با استفاده از تابع canny تصویر خاکستری خود را اضافه می
94
00:05:13,630 –> 00:05:16,289
کنیم و سپس
95
00:05:16,289 –> 00:05:22,840
آستانه یک و سپس آستانه خود را تعریف می کنیم – اکنون
96
00:05:22,840 –> 00:05:25,330
این مقادیر آستانه
97
00:05:25,330 –> 00:05:27,930
از نوار مسیر ما می آیند بنابراین می گوییم
98
00:05:27,930 –> 00:05:31,960
آستانه یک برابر است با چیزی و
99
00:05:31,960 –> 00:05:32,690
Thresh
100
00:05:32,690 –> 00:05:36,830
به نام دو برابر است با چیزی که اکنون
101
00:05:36,830 –> 00:05:40,220
این چیزی را با گرفتن موقعیت تعریف می کنیم
102
00:05:40,220 –> 00:05:43,340
تا CV به نقطه دریافت موقعیت نوار مسیر
103
00:05:43,340 –> 00:05:46,160
آستانه یک در
104
00:05:46,160 –> 00:05:49,120
پنجره پارامترها و همان چیزی برای
105
00:05:49,120 –> 00:05:52,010
آستانه 2 بنابراین ما اینجا
106
00:05:52,010 –> 00:05:55,670
آستانه دو را می نویسیم، جایی که یک اشتباه املایی وجود دارد،
107
00:05:55,670 –> 00:06:03,110
آستانه خوب است، بنابراین اگر
108
00:06:03,110 –> 00:06:06,770
اکنون آن را اجرا کنیم، باید مقادیر خود را داشته باشیم،
109
00:06:06,770 –> 00:06:08,480
تنها کاری که باید انجام دهیم این است که باید
110
00:06:08,480 –> 00:06:10,550
آن را نمایش دهیم، بنابراین بیایید تصویر تار را حذف کنیم و تصویر ساده خود
111
00:06:10,550 –> 00:06:14,120
را نمایش خواهیم داد.
112
00:06:14,120 –> 00:06:21,170
کنی، بنابراین در اینجا ما تصاویر خود را داریم که
113
00:06:21,170 –> 00:06:26,200
تصویر اصلی هستند
114
00:06:26,200 –> 00:06:29,210
و اکنون تصویر قوطی هستند، بنابراین
115
00:06:29,210 –> 00:06:31,790
اگر آنها
116
00:06:31,790 –> 00:06:35,600
را به حداقل برسانیم، میتوانیم
117
00:06:35,600 –> 00:06:40,250
همه این خطوط را ببینیم، بنابراین میخواهیم
118
00:06:40,250 –> 00:06:44,180
فیلتر کنیم. آن را تا زمانی که مقدار کمی نویز دریافت کنیم
119
00:06:44,180 –> 00:06:48,520
و کانتورها نیاز داشته باشند،
120
00:06:48,520 –> 00:06:52,760
بنابراین 23 و 22 مقدار خوبی به نظر می رسند، بنابراین
121
00:06:52,760 –> 00:06:55,550
ما بالا می رویم و در مقدار اولیه خود
122
00:06:55,550 –> 00:07:00,830
می گوییم 23 و 25 چه کسی بود یا 20 من
123
00:07:00,830 –> 00:07:01,400
.
124
00:07:01,400 –> 00:07:04,220
خوب 23 و 20 را به خاطر بسپارید، بیایید بگوییم پس بیایید دوباره آن را اجرا کنیم
125
00:07:04,220 –> 00:07:07,790
و بله، اکنون بسیار خوب است، اگر می
126
00:07:07,790 –> 00:07:10,100
بینید که در اینجا چند همپوشانی
127
00:07:10,100 –> 00:07:12,740
داریم و سپس مقداری نویز نیز داریم، بنابراین
128
00:07:12,740 –> 00:07:15,380
یکی از راه های حذف استفاده از
129
00:07:15,380 –> 00:07:19,190
تابع اتساع است، بنابراین برای معرفی
130
00:07:19,190 –> 00:07:20,930
تابع اتساع ما باید یک هسته را تعریف کنیم
131
00:07:20,930 –> 00:07:24,080
هسته را می توان با آرایه numpy یک ها تعریف
132
00:07:24,080 –> 00:07:28,160
کرد، بنابراین ما
133
00:07:28,160 –> 00:07:30,919
5 در 5 را اعلام می کنیم و سپس
134
00:07:30,919 –> 00:07:33,710
با استفاده از تابع dilation تصویر اتساع خود را اعلام می کنیم
135
00:07:33,710 –> 00:07:36,890
،
136
00:07:36,890 –> 00:07:38,120
تصویر را
137
00:07:38,120 –> 00:07:40,160
در تابع و سپس هسته را معرفی می کنیم و
138
00:07:40,160 –> 00:07:43,220
سپس به عدد نیاز داریم. از تکرارها، بنابراین
139
00:07:43,220 –> 00:07:44,889
تکرارهای ما یکی هستند،
140
00:07:44,889 –> 00:07:49,360
بنابراین بیایید تصویر اتساع
141
00:07:49,360 –> 00:07:53,440
IMT اتساع را نمایش دهیم، بیایید یک
142
00:07:53,440 –> 00:07:57,400
ردیف جدید قرار دهیم و می گوییم اتساع IMG سپس
143
00:07:57,400 –> 00:08:00,250
دوباره اتساع IMG ما فقط این کار را انجام می
144
00:08:00,250 –> 00:08:04,830
دهیم زیرا به سه تصویر در هر ردیف نیاز داریم،
145
00:08:04,830 –> 00:08:07,690
خوب پس شما اینجا هستید میتوانیم نتایج را ببینیم، بنابراین
146
00:08:07,690 –> 00:08:12,490
اکنون یک مربع یا بدنه بیرونی بسیار بهتری به
147
00:08:12,490 –> 00:08:17,319
نام لبهها داریم، بنابراین اکنون
148
00:08:17,319 –> 00:08:21,210
میتوانیم آن را به تابع contour خود بفرستیم، بنابراین
149
00:08:21,210 –> 00:08:24,310
بیایید یک تابع جدید برای
150
00:08:24,310 –> 00:08:27,039
خطوط بسازیم زیرا باید
151
00:08:27,039 –> 00:08:30,250
چند خط کد بنویسیم. بیایید
152
00:08:30,250 –> 00:08:34,450
تابعی را با نام get contours تعریف کنیم اکنون در
153
00:08:34,450 –> 00:08:37,599
این تابع به دو تصویر نیاز داریم که
154
00:08:37,599 –> 00:08:43,690
یکی تصویر ورودی ما
155
00:08:43,690 –> 00:08:45,820
و دیگری تصویر خروجی ما باشد،
156
00:08:45,820 –> 00:08:49,320
بنابراین در اینجا تصویر ورودی را
157
00:08:49,320 –> 00:08:52,690
داریم که آن را پیدا می کنیم. کانتورها از و
158
00:08:52,690 –> 00:08:55,720
در دومی
159
00:08:55,720 –> 00:08:59,350
میخواهیم کانتورهای شناساییشدهمان را بنویسیم،
160
00:08:59,350 –> 00:09:03,089
کانتورهای شناساییشدهمان را نمایش میدهیم، بنابراین در
161
00:09:03,089 –> 00:09:05,649
اینجا میخواهیم تابع
162
00:09:05,649 –> 00:09:08,709
خطوط را بنویسیم، بنابراین در اینجا
163
00:09:08,709 –> 00:09:11,920
تابع Find contour را داریم و تصویر خود را ارسال میکنیم
164
00:09:11,920 –> 00:09:15,700
و سپس یک پارامتر داریم
165
00:09:15,700 –> 00:09:18,880
که روش بازیابی است، بنابراین روش بازیابی
166
00:09:18,880 –> 00:09:21,430
ما دو نوع اصلی داریم، چند
167
00:09:21,430 –> 00:09:25,360
نوع داریم، اما من متوجه شدم که دو نوع
168
00:09:25,360 –> 00:09:28,230
از آنها واقعا ضروری هستند.
169
00:09:28,230 –> 00:09:32,770
170
00:09:32,770 –> 00:09:35,350
171
00:09:35,350 –> 00:09:38,470
خطوط و
172
00:09:38,470 –> 00:09:41,290
روش دیگری به نام درخت در درخت وجود دارد که
173
00:09:41,290 –> 00:09:43,510
تمام خطوط و
174
00:09:43,510 –> 00:09:46,600
بازسازی سلسله مراتب کامل را بازیابی می کند، بنابراین اگر
175
00:09:46,600 –> 00:09:49,470
این را اجرا کنیم، به عنوان مثال قبل از انجام آن
176
00:09:49,470 –> 00:09:52,480
، بیایید تقریب را نیز ببینیم،
177
00:09:52,480 –> 00:09:55,660
بنابراین آخرین پارامتر، تقریب ما
178
00:09:55,660 –> 00:09:57,560
179
00:09:57,560 –> 00:10:00,410
در