در این مطلب، ویدئو آموزش OpenCV Python برای مبتدیان 31 – تشخیص خط جاده با OpenCV (قسمت 1) با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:15:59
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,030 –> 00:00:02,460
سلام بچه ها به ویدیوی بعدی
2
00:00:02,460 –> 00:00:04,650
آموزش رزومه باز برای مبتدیان با استفاده از
3
00:00:04,650 –> 00:00:07,770
پایتون خوش آمدید در آخرین ویدیوها
4
00:00:07,770 –> 00:00:10,860
ما چند مفهوم مهم در CV باز را یاد گرفتیم
5
00:00:10,860 –> 00:00:14,639
اکنون در این ویدیو و
6
00:00:14,639 –> 00:00:17,580
چند ویدیوی بعدی من قصد دارم یک
7
00:00:17,580 –> 00:00:21,420
پروژه ساده ایجاد کنم که بیشترین استفاده را دارد. از این
8
00:00:21,420 –> 00:00:24,390
مفاهیمی که در ویدیوهای قبلی یاد گرفتیم،
9
00:00:24,390 –> 00:00:27,060
بنابراین کاری که میخواهیم
10
00:00:27,060 –> 00:00:29,220
انجام دهیم این است که میخواهیم یک
11
00:00:29,220 –> 00:00:34,020
سیستم تشخیص ناب بسیار ساده ایجاد کنیم، بنابراین اول از
12
00:00:34,020 –> 00:00:37,500
همه با یک تصویر ثابت شروع میکنیم،
13
00:00:37,500 –> 00:00:40,800
میتوانید ببینید یک تصویر وجود دارد که حاوی
14
00:00:40,800 –> 00:00:44,430
این جاده و این جاده شامل خطوط است،
15
00:00:44,430 –> 00:00:48,410
بنابراین آنچه که میخواهیم به آن برسیم این است که میخواهیم
16
00:00:48,410 –> 00:00:52,020
این خطوطی را که وسیله نقلیه ما در آن حرکت میکند شناسایی کنیم
17
00:00:52,020 –> 00:00:55,469
، بنابراین اول از همه
18
00:00:55,469 –> 00:00:58,800
با این تصویر این کار را انجام میدهیم و به تدریج
19
00:00:58,800 –> 00:01:02,460
به سمت فریمهای ویدیو حرکت میکنیم، بنابراین
20
00:01:02,460 –> 00:01:04,739
اول از همه ما نحوه تشخیص
21
00:01:04,739 –> 00:01:08,010
این خطوط را در این تصویر خواهیم دید و سپس
22
00:01:08,010 –> 00:01:10,409
نحوه تشخیص این خطوط را در ویدیوی متحرک خواهیم دید،
23
00:01:10,409 –> 00:01:15,210
بنابراین بیایید شروع کنیم بنابراین
24
00:01:15,210 –> 00:01:17,490
من این پروژه جدید را در pycharm IDE خود ایجاد کرده ام،
25
00:01:17,490 –> 00:01:19,049
26
00:01:19,049 –> 00:01:21,869
شما می توانید از هر ویرایشگر دیگری از y استفاده کنید.
27
00:01:21,869 –> 00:01:24,090
انتخاب ماست و اول از همه بدیهی است که شما
28
00:01:24,090 –> 00:01:26,850
فقط باید بسته OpenCV پایتون و بسته matplotlib را نصب کنید،
29
00:01:26,850 –> 00:01:31,409
پس
30
00:01:31,409 –> 00:01:35,369
از انجام این کار، من یک فایل جدید در اینجا ایجاد خواهم کرد،
31
00:01:35,369 –> 00:01:37,020
بنابراین من فقط اینجا کلیک راست می
32
00:01:37,020 –> 00:01:39,960
کنم و یک فایل جدید ایجاد می کنم و می روم.
33
00:01:39,960 –> 00:01:43,619
برای نامگذاری این فایل به عنوان فایل آشکارساز dot py،
34
00:01:43,619 –> 00:01:46,110
بنابراین در اینجا ما می خواهیم چند بسته را وارد کنیم،
35
00:01:46,110 –> 00:01:50,430
به عنوان مثال matplotlib بنابراین
36
00:01:50,430 –> 00:01:56,700
matplotlib نقطه PI نمودار به عنوان PLT، بنابراین
37
00:01:56,700 –> 00:02:01,469
فرض کنید به عنوان PLT همچنین ما می خواهیم
38
00:02:01,469 –> 00:02:05,430
CV را به بسته وارد کنیم و می خواهیم
39
00:02:05,430 –> 00:02:09,840
وارد کنیم. numpy بنابراین یک import numpy
40
00:02:09,840 –> 00:02:14,190
و در بخش بعدی باشید که کاری که
41
00:02:14,190 –> 00:02:15,800
میخواهیم انجام دهیم این است که ما به سادگی
42
00:02:15,800 –> 00:02:18,660
یک تصویر را بارگذاری میکنیم، بنابراین من یک
43
00:02:18,660 –> 00:02:21,510
متغیر تصویر ایجاد میکنم تا تصویر برابر با CB 2
44
00:02:21,510 –> 00:02:26,250
نقطه باشد. من Reed هستم و ما هستیم میخواهیم
45
00:02:26,250 –> 00:02:30,420
تصویر خود را بخوانیم که تصویر جاده است، بنابراین
46
00:02:30,420 –> 00:02:34,860
Road dot jpg اکنون در خط بعدی
47
00:02:34,860 –> 00:02:39,870
این تصویر را به فرمت RGB
48
00:02:39,870 –> 00:02:42,390
تبدیل میکنیم زیرا میخواهیم این
49
00:02:42,390 –> 00:02:46,260
تصویر را با استفاده از matplotlib بارگذاری کنیم، بنابراین من
50
00:02:46,260 –> 00:02:48,540
فقط یک بار دیگر مینویسم.
51
00:02:48,540 –> 00:02:50,970
تصویر، بنابراین من قصد دارم این
52
00:02:50,970 –> 00:02:54,180
متغیر تصویر را با t بازنویسی کنم او تصویر را تبدیل به
53
00:02:54,180 –> 00:03:00,269
رنگ CB 2 نقطه CVT کرد و منبع آن
54
00:03:00,269 –> 00:03:03,510
تصویر ما است، بنابراین این متغیر است و
55
00:03:03,510 –> 00:03:09,480
سپس رنگ نقطه CB 2 از BG به RGB
56
00:03:09,480 –> 00:03:13,200
درست است، بنابراین این همان چیزی است که ما میخواهیم اکنون
57
00:03:13,200 –> 00:03:16,260
در خط بعدی از آنچه میخواهیم انجام دهیم استفاده کنیم. آیا
58
00:03:16,260 –> 00:03:21,750
میخواهیم تصویر خود را با استفاده از PLT dot بارگذاری کنیم،
59
00:03:21,750 –> 00:03:24,239
من روش نشان میدهم و در
60
00:03:24,239 –> 00:03:29,220
نهایت میخواهیم بگوییم PLT dot show، بنابراین به این
61
00:03:29,220 –> 00:03:31,980
صورت میخواهیم تصویر خود را بارگذاری کنیم،
62
00:03:31,980 –> 00:03:33,709
بنابراین من روی این فایل کلیک راست میکنم
63
00:03:33,709 –> 00:03:38,069
و سپس این اسکریپت را اجرا کنید و
64
00:03:38,069 –> 00:03:40,620
می توانید ببینید که این تصویر jpg نقطه جاده
65
00:03:40,620 –> 00:03:44,190
بارگذاری شده است اکنون در این نمودار شما این مقادیر را نیز مشاهده می کنید
66
00:03:44,190 –> 00:03:47,910
و یکی از مواردی که
67
00:03:47,910 –> 00:03:51,840
در اینجا باید رعایت کنید این است که به صورت افقی این مقادیر
68
00:03:51,840 –> 00:03:56,910
از 0 تا 1200 می رود و به صورت عمودی
69
00:03:56,910 –> 00:04:00,120
به طور معمول در نمودارها خواهید دید که
70
00:04:00,120 –> 00:04:02,389
مقادیر از پایین به بالا افزایش می یابد،
71
00:04:02,389 –> 00:04:06,569
اما در matplotlib این مقدار از
72
00:04:06,569 –> 00:04:10,560
بالا به پایین سمت راست می رود، بنابراین 0 در بالا
73
00:04:10,560 –> 00:04:14,090
و سپس حداکثر مقدار در پایین خواهد بود،
74
00:04:14,090 –> 00:04:17,450
بنابراین این یک نکته قابل
75
00:04:17,450 –> 00:04:20,470
توجه است زیرا ما منطقه خود را تعریف می کنیم.
76
00:04:20,470 –> 00:04:23,750
مورد علاقه است و اکنون
77
00:04:23,750 –> 00:04:27,140
بر اساس این ارزش ها خواهد بود در مرحله بعدی
78
00:04:27,140 –> 00:04:31,010
میخواهیم منطقه مورد علاقه خود را تعریف کنیم،
79
00:04:31,010 –> 00:04:33,830
بنابراین اجازه دهید من یک
80
00:04:33,830 –> 00:04:38,240
بار دیگر این کد را اجرا کنم و نکتهای که
81
00:04:38,240 –> 00:04:42,110
در اینجا باید به آن توجه شود این است که این خطی که
82
00:04:42,110 –> 00:04:45,830
وسیله نقلیه ما در آن حرکت میکند موازی است، بنابراین
83
00:04:45,830 –> 00:04:48,820
دو خط موازی وجود دارد و در نهایت این خط موازی است.
84
00:04:48,820 –> 00:04:53,510
درست در اینجا ادغام می شوند
85
00:04:53,510 –> 00:04:56,900
بنابراین همه خطوطی که
86
00:04:56,900 –> 00:05:00,290
وسیله نقلیه در آنها حرکت می کند الگوی یکسانی داشته باشند،
87
00:05:00,290 –> 00:05:04,220
بنابراین این خط و این خط
88
00:05:04,220 –> 00:05:06,380
با یکدیگر موازی هستند و
89
00:05:06,380 –> 00:05:10,220
در نقطه ای ادغام می شوند بنابراین ادغام نمی شود اما
90
00:05:10,220 –> 00:05:14,390
به نظر می رسد در حال ادغام است. یک نقطه بنابراین ما
91
00:05:14,390 –> 00:05:17,750
می توانیم منطقه مورد علاقه خود را از
92
00:05:17,750 –> 00:05:21,770
این نقطه به این نقطه و از این
93
00:05:21,770 –> 00:05:25,100
نقطه به این نقطه تعریف کنیم، بنابراین این منطقه
94
00:05:25,100 –> 00:05:28,850
مورد علاقه مثلث خواهد بود، بنابراین این
95
00:05:28,850 –> 00:05:30,800
منطقه مورد علاقه
96
00:05:30,800 –> 00:05:33,919
ما برای وسیله نقلیه خود تعریف می کنیم، هر
97
00:05:33,919 –> 00:05:36,890
مانع دیگری را می پوشاند. به عنوان مثال این
98
00:05:36,890 –> 00:05:40,040
نیز برای ما یک خط است، مهم نیست
99
00:05:40,040 –> 00:05:42,470
زیرا این
100
00:05:42,470 –> 00:05:46,550
طرف خط است، بنابراین در اینجا وسیله نقلیه
101
00:05:46,550 –> 00:05:48,770
در جهت مخالف خواهد آمد، بنابراین
102
00:05:48,770 –> 00:05:51,440
این منطقه مورد علاقه ما است، بنابراین آن
103
00:05:51,440 –> 00:05:55,370
را پنهان می کند. خط خط یا هر
104
00:05:55,370 –> 00:05:59,390
خط یا اعوجاج دیگری است که در
105
00:05:59,390 –> 00:06:01,820
این تصویر داریم، ما فقط
106
00:06:01,820 –> 00:06:03,890
آنها را پنهان می کنیم و فقط
107
00:06:03,890 –> 00:06:08,120
روی این مثلث تمرکز می کنیم، بنابراین بیایید ابتدا این کار را انجام دهیم،
108
00:06:08,120 –> 00:06:10,970
بنابراین اول از همه می خواهیم
109
00:06:10,970 –> 00:06:14,660
شکل آن را پیدا کنیم. تصویر
110
00:06:14,660 –> 00:06:18,260
را فقط چاپ می کنم و سپس
111
00:06:18,260 –> 00:06:21,710
فقط شکل نقطه تصویر را می گوییم و
112
00:06:21,710 –> 00:06:25,460
همچنین فقط
113
00:06:25,460 –> 00:06:27,439
ارتفاع و عرض تصویر را تعریف می کنیم،
114
00:06:27,439 –> 00:06:30,589
بنابراین می گویم خوب است، پس بیایید
115
00:06:30,589 –> 00:06:32,779
این مقدار را چاپ کنیم. و بیایید ببینیم چه
116
00:06:32,779 –> 00:06:36,199
اتفاقی میافتد، بنابراین چه چیزی در صفر است و چه چیزی در
117
00:06:36,199 –> 00:06:41,539
یک است، بنابراین میتوانید چاپ 7:04 را به عنوان
118
00:06:41,539 –> 00:06:45,309
ارتفاع ما و یک دو هفت نه به عنوان
119
00:06:45,309 –> 00:06:49,699
عرض را ببینید، بنابراین این چیزی است که من
120
00:06:49,699 –> 00:06:53,269
از این روش شکل تصویر میگیرم، بنابراین
121
00:06:53,269 –> 00:06:55,699
ادامه دارد. برای برگرداندن این نوع تاپل، بنابراین
122
00:06:55,699 –> 00:06:59,119
در شاخص 0 ارتفاع و
123
00:06:59,119 –> 00:07:02,599
در اولین شاخص عرض وجود خواهد داشت
124
00:07:02,599 –> 00:07:09,169
و همانطور که گفتم از صفر تا 704
125
00:07:09,169 –> 00:07:12,769
از بالا به پایین شروع می شود و به صورت
126
00:07:12,769 –> 00:07:17,809
افقی از صفر تا 1279 از سمت چپ
127
00:07:17,809 –> 00:07:19,869
می رود. سمت راست به سمت راست،
128
00:07:19,869 –> 00:07:23,149
بنابراین یک بار عرض و ارتفاع را داشته باشیم t
129
00:07:23,149 –> 00:07:26,300
ما میتوانیم منطقه
130
00:07:26,300 –> 00:07:29,829
مورد نظر خود را تعریف کنیم، بنابراین متغیر خود را به نام
131
00:07:29,829 –> 00:07:35,119
رئوس ناحیه مورد نظر تعریف میکنیم و در
132
00:07:35,119 –> 00:07:39,079
اینجا مقادیری را ارائه میکنیم، بنابراین
133
00:07:39,079 –> 00:07:40,939
سه نقطه ارائه میکنیم که سه نقطه
134
00:07:40,939 –> 00:07:44,300
135
00:07:44,300 –> 00:07:47,089
منطقه مورد نظر ما خواهد بود. همانطور که گفتم
136
00:07:47,089 –> 00:07:50,269
منطقه مورد علاقه ما این نقطه است که
137
00:07:50,269 –> 00:07:53,719
گوشه پایین سمت چپ است، این نقطه
138
00:07:53,719 –> 00:07:55,519
که گوشه پایین سمت راست است و
139
00:07:55,519 –> 00:07:59,749
جایی در وسط این تصویر است، بنابراین
140
00:07:59,749 –> 00:08:02,979
اینجا بنابراین در تصویر زیرا
141
00:08:02,979 –> 00:08:06,949
ارتفاع عمودی از صفر شروع می شود بنابراین من
142
00:08:06,949 –> 00:08:10,969
من فقط می