در این مطلب، ویدئو پنهان کردن یک عکس در یک عکس دیگر | پایتون | استگانوگرافی با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:10:15
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,000 –> 00:00:01,120
خوب بچه ها، پس امروز ما قصد
2
00:00:01,120 –> 00:00:02,480
داریم برنامه ای بسازیم که به ما امکان می دهد
3
00:00:02,480 –> 00:00:04,319
هر تصویری را که می خواهیم در یک تصویر دیگر مخفی کنیم، می
4
00:00:04,319 –> 00:00:04,799
5
00:00:04,799 –> 00:00:05,759
خواهیم همه چیز را
6
00:00:05,759 –> 00:00:08,000
با استفاده از پایتون بسازیم، حالا چیزی که در مورد آن جالب است
7
00:00:08,000 –> 00:00:09,519
این است که شبیه هر
8
00:00:09,519 –> 00:00:10,639
تصویر معمولی است. درست به نظر می رسد که
9
00:00:10,639 –> 00:00:12,160
تصویری است که می توانید آن را از اینترنت دانلود کرده باشید
10
00:00:12,160 –> 00:00:12,960
،
11
00:00:12,960 –> 00:00:14,559
بنابراین نمی دانید چه چیزی در آن وجود دارد،
12
00:00:14,559 –> 00:00:16,079
اما نکته جالب این است که در
13
00:00:16,079 –> 00:00:17,520
مقادیر واقعی پیکسل تصویر
14
00:00:17,520 –> 00:00:19,199
، تصویر دیگری در داخل آن پنهان شده است،
15
00:00:19,199 –> 00:00:21,039
بنابراین به غیر از چشم مشکوک
16
00:00:21,039 –> 00:00:22,480
فقط یک تصویر معمولی به نظر می رسد، بنابراین
17
00:00:22,480 –> 00:00:23,840
چند راه برای دستیابی به این
18
00:00:23,840 –> 00:00:24,960
برنامه وجود دارد، اما من فکر کردم خوب،
19
00:00:24,960 –> 00:00:26,240
بیایید فقط بر اساس آنچه که
20
00:00:26,240 –> 00:00:27,439
فکر می کنم ساده ترین راه برای
21
00:00:27,439 –> 00:00:27,920
22
00:00:27,920 –> 00:00:29,199
رسیدن به این هدف است، برویم. چند
23
00:00:29,199 –> 00:00:30,720
چیز وجود دارد که باید قبل
24
00:00:30,720 –> 00:00:31,840
از بازیابی
25
00:00:31,840 –> 00:00:32,960
کد در مورد آن بدانید. اولین چیزی که باید در مورد
26
00:00:32,960 –> 00:00:35,120
آن بدانید پیکسل است، اکنون ممکن است این را بدانید،
27
00:00:35,120 –> 00:00:37,040
اما تصاویر از مربع های بسیار بسیار ریز تشکیل شده اند
28
00:00:37,040 –> 00:00:39,520
به نام
29
00:00:39,520 –> 00:00:41,040
پیکسل با وضوح بالاتر. استفاده و تصاویر،
30
00:00:41,040 –> 00:00:42,800
هرچه تعداد پیکسلهای بیشتری وجود داشته باشد، پیکسلها
31
00:00:42,800 –> 00:00:44,239
از یک رنگ تشکیل شدهاند و
32
00:00:44,239 –> 00:00:45,920
معمولاً با رنگهای rgb نشان داده میشوند
33
00:00:45,920 –> 00:00:47,680
که اساساً به شما میگوید چه مقدار
34
00:00:47,680 –> 00:00:49,440
قرمز سبز یا آبی در هر پیکسل وجود دارد،
35
00:00:49,440 –> 00:00:50,719
اکنون رنگهای rgb به
36
00:00:50,719 –> 00:00:52,879
این شکل کار میکنند، حداکثر حداکثر وجود دارد. که
37
00:00:52,879 –> 00:00:54,320
می توانید برای هر کانال داشته باشید
38
00:00:54,320 –> 00:00:56,800
که 255 است. همه آنها با هم به عنوان
39
00:00:56,800 –> 00:00:58,000
255 باعث می شوند رنگ
40
00:00:58,000 –> 00:01:00,480
سفید حداقل صفر باشد و
41
00:01:00,480 –> 00:01:01,199
همه آنها با هم
42
00:01:01,199 –> 00:01:02,960
صفر رنگ را سیاه می کند یا می
43
00:01:02,960 –> 00:01:04,559
توانید مخلوطی از این مقادیر
44
00:01:04,559 –> 00:01:06,400
هر مقدار داشته باشید که به شما می گوید چگونه مقدار زیادی قرمز
45
00:01:06,400 –> 00:01:08,400
سبز و آبی در هر پیکسل وجود دارد،
46
00:01:08,400 –> 00:01:09,360
بنابراین اکنون که
47
00:01:09,360 –> 00:01:10,799
درک خوبی از پیکسل ها دارید یا
48
00:01:10,799 –> 00:01:12,240
حداقل درک اولیه ای دارید،
49
00:01:12,240 –> 00:01:15,600
بیایید در مورد اعداد باینری صحبت کنیم، بنابراین تمام یک
50
00:01:15,600 –> 00:01:17,520
عدد باینری نمایش
51
00:01:17,520 –> 00:01:18,640
یک عدد است
52
00:01:18,640 –> 00:01:20,159
در این مورد نگاه کنید این عدد
53
00:01:20,159 –> 00:01:23,200
107 داریم و در زیر یک نمایش دودویی
54
00:01:23,200 –> 00:01:24,159
از این عدد است
55
00:01:24,159 –> 00:01:27,040
که یک یک صفر یک صفر یک است
56
00:01:27,040 –> 00:01:28,320
حالا نکته جالب این است که با
57
00:01:28,320 –> 00:01:29,759
زبان های سطح بالا مانند پایتون
58
00:01:29,759 –> 00:01:30,720
واقعاً نیازی به نگرانی نیست.
59
00:01:30,720 –> 00:01:32,159
تبدیل ها یا هر چیز دیگری
60
00:01:32,159 –> 00:01:33,600
چون پایتون واقعا این کار را به
61
00:01:33,600 –> 00:01:35,280
تنهایی انجام می دهد، ما فقط باید نگران چند
62
00:01:35,280 –> 00:01:35,680
چیز باشیم،
63
00:01:35,680 –> 00:01:37,360
بنابراین ابتدا بیایید به مهم ترین بیت نگاهی بیندازیم
64
00:01:37,360 –> 00:01:39,360
تا برای شما توضیح دهیم که یک
65
00:01:39,360 –> 00:01:40,159
66
00:01:40,159 –> 00:01:42,560
بیت مهم چگونه کار می کند، اجازه دهید به این عدد نگاه کنیم.
67
00:01:42,560 –> 00:01:43,920
این 107 است.
68
00:01:43,920 –> 00:01:45,280
حالا اگر بخواهیم عدد اول را
69
00:01:45,280 –> 00:01:46,960
در اینجا در صدها مکان تغییر
70
00:01:46,960 –> 00:01:48,640
دهیم، مثلاً یک عدد دیگر را تغییر
71
00:01:48,640 –> 00:01:51,439
دهیم، اکنون عدد 207 را به دست می آوریم، همانطور که
72
00:01:51,439 –> 00:01:53,520
می بینید با تغییر یک عدد
73
00:01:53,520 –> 00:01:55,439
با یک تغییر قابل توجه، می
74
00:01:55,439 –> 00:01:57,280
توانیم همان مفهوم را اعمال کنیم. به یک عدد باینری
75
00:01:57,280 –> 00:01:59,360
در این مثال، بیایید بیشترین بیت سمت چپ را تغییر دهیم،
76
00:01:59,360 –> 00:02:01,600
در نظر داشته باشیم که یک
77
00:02:01,600 –> 00:02:03,520
عدد باینری فقط مقدار ممکن یک
78
00:02:03,520 –> 00:02:04,320
و صفر دارد،
79
00:02:04,320 –> 00:02:06,240
بنابراین در این مورد اجازه دهید آن را به صفر تغییر دهیم،
80
00:02:06,240 –> 00:02:08,080
این عدد 43 را به ما می دهد.
81
00:02:08,080 –> 00:02:09,919
همانطور که می بینید تغییر در
82
00:02:09,919 –> 00:02:12,160
مقایسه با 107 که قبلا داشتیم بسیار قابل توجه است،
83
00:02:12,160 –> 00:02:12,640
84
00:02:12,640 –> 00:02:14,879
بنابراین نام مهم ترین بیت اکنون
85
00:02:14,879 –> 00:02:16,640
مانند مهم ترین بیت کم
86
00:02:16,640 –> 00:02:18,400
اهمیت ترین بیت واقعا مشابه است،
87
00:02:18,400 –> 00:02:20,000
ما فقط به طرف مقابل نگاه می کنیم
88
00:02:20,000 –> 00:02:22,160
و دوباره 107 را به عنوان مثال در نظر می گیریم.
89
00:02:22,160 –> 00:02:24,239
اگر سمت راست ترین عدد را
90
00:02:24,239 –> 00:02:25,440
که جای یکها است را تغییر
91
00:02:25,440 –> 00:02:27,840
دهیم، فرض کنیم دوباره مقدار 1
92
00:02:27,840 –> 00:02:29,360
به عدد 108 می رسد.
93
00:02:29,360 –> 00:02:31,920
همانطور که می بینید 107 در مقایسه با 108
94
00:02:31,920 –> 00:02:33,440
چندان قابل توجه
95
00:02:33,440 –> 00:02:35,360
نیست، تغییر بسیار کوچکی است که می
96
00:02:35,360 –> 00:02:37,519
توانیم همان چیزی را برای آن اعمال کنیم. یک عدد باینری
97
00:02:37,519 –> 00:02:39,280
که سمت راست ترین عدد را در این
98
00:02:39,280 –> 00:02:40,879
مورد از 1
99
00:02:40,879 –> 00:02:44,080
به 0 تغییر می دهد، مقدار 106 را به ما می دهد. اکنون
100
00:02:44,080 –> 00:02:46,400
دوباره در مقایسه با 107 که قبل از آن داشتیم،
101
00:02:46,400 –> 00:02:48,400
این تغییر بسیار ناچیز است، به
102
00:02:48,400 –> 00:02:50,160
عبارت دیگر بسیار کوچک است، به
103
00:02:50,160 –> 00:02:52,160
همین دلیل نام اکنون کمی اهمیت دارد.
104
00:02:52,160 –> 00:02:54,000
بیایید در مورد تغییر
105
00:02:54,000 –> 00:02:56,160
در پایتون و بسیاری از زبانهای دیگر صحبت کنیم
106
00:02:56,160 –> 00:02:57,920
، این عملگر شیفت چپ است
107
00:02:57,920 –> 00:03:00,400
و این یک عملگر شیفت راست است، برای
108
00:03:00,400 –> 00:03:00,959
109
00:03:00,959 –> 00:03:04,000
مثال فرض کنید میخواهیم 107 را به
110
00:03:04,000 –> 00:03:06,239
2 به راست تغییر دهیم. بیایید یک خط فرضی را
111
00:03:06,239 –> 00:03:07,280
به سمت راست تصور کنیم
112
00:03:07,280 –> 00:03:09,440
که اعداد به دست میدهند. ما یک مقدار
113
00:03:09,440 –> 00:03:10,480
1 1 0
114
00:03:10,480 –> 00:03:13,599
1 0 که همان 26 است، اکنون به
115
00:03:13,599 –> 00:03:14,640
شیفت چپ نگاه
116
00:03:14,640 –> 00:03:17,280
می کنیم، فرض می کنیم می خواهیم 107 در دو را به
117
00:03:17,280 –> 00:03:17,840
سمت
118
00:03:17,840 –> 00:03:19,920
چپ تغییر دهیم و یک خط فرضی قرار دهیم، اما این
119
00:03:19,920 –> 00:03:20,879
بار
120
00:03:20,879 –> 00:03:23,120
یک بار مقادیر را به سمت چپ تغییر دهیم. برای اینکه ما
121
00:03:23,120 –> 00:03:24,720
در انتها باید آن را با
122
00:03:24,720 –> 00:03:25,760
صفرها بکوبیم در این مورد
123
00:03:25,760 –> 00:03:27,760
اکنون با انجام این کار مقدار محدود 428 به ما می دهد،
124
00:03:27,760 –> 00:03:29,760
بنابراین در حال حاضر احتمالاً
125
00:03:29,760 –> 00:03:30,159
فکر
126
00:03:30,159 –> 00:03:31,599
می کنید این زبان بیگانه چیست
127
00:03:31,599 –> 00:03:33,120
که در مورد آن صحبت می کنید می دانید من می توانم نمی توانم
128
00:03:33,120 –> 00:03:34,000
حتی محاسبه کنید
129
00:03:34,000 –> 00:03:35,120
و آن را دریافت کنم، می دانم که این اطلاعات زیادی است
130
00:03:35,120 –> 00:03:37,200
که من به شما داده ام، اما
131
00:03:37,200 –> 00:03:39,280
واقعاً خیلی پیچیده نیست و
132
00:03:39,280 –> 00:03:40,959
حتی اگر نیمی از آن
133
00:03:40,959 –> 00:03:42,319
چیزی را که من گفتم را فهمیده باشید، حتی اگر
134
00:03:42,319 –> 00:03:42,799
135
00:03:42,799 –> 00:03:44,239
به بخشی از آن علاقه مند باشید. باید
136
00:03:44,239 –> 00:03:45,360
به اندازه ای باشد که شما را از کاری که می خواهیم در
137
00:03:45,360 –> 00:03:46,319
حال حاضر انجام دهیم، انجام دهیم،
138
00:03:46,319 –> 00:03:48,000
اوم، واقعاً آنقدرها هم پیچیده نیست،
139
00:03:48,000 –> 00:03:49,519
جز اینکه فقط آن بخش باینری است
140
00:03:49,519 –> 00:03:50,879
که هرگز آن را ندیده اید، می دانم
141
00:03:50,879 –> 00:03:52,720
که می تواند یک جور دلهره آور باشد، اما حالا اجازه دهید در
142
00:03:52,720 –> 00:03:54,000
واقع به رایانه بروید و در
143
00:03:54,000 –> 00:03:54,879
مورد الگوریتم صحبت
144
00:03:54,879 –> 00:03:55,840
کنید خیلی خوب بچه ها، بیایید با این پروژه شروع کنیم.
145
00:03:55,840 –> 00:03:57,760
اوم شما می توانید از هر ویرایشگر کد
146
00:03:57,760 –> 00:03:59,280
دلخواه خود استفاده کنید، همانجا از طریق استودیو
147
00:03:59,280 –> 00:04:00,319
، هر آنچه که می خواهید وجود دارد،
148
00:04:00,319 –> 00:04:01,760
اما من فقط از vim استفاده می کنم زیرا می دانید که
149
00:04:01,760 –> 00:04:03,360
من با آن خوب هستم. که اگر در vi نیستید من
150
00:04:03,360 –> 00:04:04,480
می خواهم آن را حل کنم برادر،
151
00:04:04,480 –> 00:04:06,239
به هر حال بیایید از اینجا شروع کنیم. اوم
152
00:04:06,239 –> 00:04:07,599
اولین کاری که باید انجام دهید، می
153
00:04:07,599 –> 00:04:08,400
خواهم یک
154
00:04:08,400 –> 00:04:10,400
دایرکتوری جدید در اینجا بسازم، من از لینوکس استفاده می کنم، اما شما
155
00:04:10,400 –> 00:04:11,599
می توانید از هر چیزی استفاده کنید که
156
00:04:11,599 –> 00:04:14,319
وابسته به پلت فرم نباشد، بنابراین بیایید
157
00:04:14,319 –> 00:04:15,439
این را صدا کنیم
158
00:04:15,439 –> 00:04:16,560
بنابراین اول از همه از
159
00:04:16,560 –> 00:04:18,320
کتابخانه قرص استفاده خواهیم کرد تا پردازش تصویر را انجام دهیم
160
00:04:18,320 –> 00:04:19,040
،
161
00:04:19,040 –> 00:04:20,079
بنابراین باید متوجه شوید که
162
00:04:20,079 –> 00:04:21,600
آن را به روشی که نصب می کنید آماده ندارید و
163
00:04:21,600 –> 00:04:23,199
می توانید از pip برای نصب آن استفاده کنید، بنابراین در این
164
00:04:23,199 –> 00:04:24,080
مورد
165
00:04:24,080 –> 00:04:27,600
53 install را
166
00:04:27,600 –> 00:04:30,320
تایپ کنید uh و سپس کتابخانه را
167
00:04:30,320 –> 00:04:32,240
pillow
168
00:04:32,240 –> 00:04:33,199
like that می نامند، بنابراین می توانید ادامه دهید و
169
00:04:33,199 –> 00:04:35,120
نصب کنید که اگر قبلاً نصب نکرده اید، من
170
00:04:35,120 –> 00:04:35,520
171
00:04:35,520 –> 00:04:38,960
دارم و آن غلط املایی نصب
172
00:04:38,960 –> 00:04:41,759
مانند آن، پس ادامه دهید و آن
173
00:04:41,759 –> 00:04:42,160
um
174
00:04:42,160 –> 00:04:43,680
را نصب کنید، نباید زیاد طول بکشد. برای انجام این کار،
175
00:04:43,680 –> 00:04:45,120
بله، می توانید آن را از قبل داشته باشید، بنابراین همانطور
176
00:04:45,120 –> 00:04:46,080
که قبلاً گفتم، می خواهیم از آن
177
00:04:46,080 –> 00:04:47,520
کتابخانه برای ادامه کار و
178
00:04:47,520 –> 00:04:48,160
پردازش تصویر استفاده کنیم،
179
00:04:48,160 –> 00:04:50,080
بنابراین بیایید با وارد کردن آن شروع کنیم به طوری که از واردات
180
00:04:50,080 –> 00:04:52,000
قرص
181
00:04:52,000 –> 00:04:53,600
و تصویر باشد، بنابراین ما می خواهیم
182
00:04:53,600 –> 00:04:55,280
با استفاده از آن قسمت تصویر آن را محدود می کند، بنابراین
183
00:04:55,280 –> 00:04:56,400
ما مانند یک شروع می کنیم هیچ برنامه دیگری را
184
00:04:56,400 –> 00:04:57,120
درست شروع می کنیم