تحقیقات نشان می دهد که 5 برابر علوم کامپیوتر در مدارس در برنامه Code.org شرکت می کنند

تحقیقات نشان می دهد که 5 برابر علوم کامپیوتر در مدارس در برنامه Code.org شرکت می کنند

توجه: از سپتامبر 2020 ، این پست حاوی زبان یا گرافیک قدیمی "ارجاع" به "اقلیت های کم نماینده" است. برای مشاهده خط مشی فعلی ما در مورد نژاد ، قومیت و جنسیت ، این مقاله پشتیبانی را ببینید.

از زمان راه اندازی Code.org ، از ما سال شده است: "آیا مدارس دولتی ما واقعاً علوم کامپیوتر را آموزش می دهند؟" ما یک برنامه ملی را برای آماده سازی دهها هزار معلم برای افزودن علوم رایانه به برنامه درسی مدرسه آغاز کرده بودیم - موضوعی که اکثر آنها هرگز خودشان یاد نگرفته بودند! از آن زمان ، ما 80000 معلم داشتیم که در کارگاه های ما شرکت می کردند و برای نشان دادن موفقیت خود ، تعداد قابل توجهی از دانش آموزان را در کلاس های درس خود و تعدادی را که در آزمون علوم کامپیوتر AP شرکت کرده یا قبول شده اند ، به اشتراک می گذاریم.

امروز ، ما مشتاق هستیم که شواهد قوی تری را از یک مطالعه تحقیقاتی رسمی ، که توسط West Coast Analytics انجام شده ، و تأثیر برنامه یادگیری حرفه ای Code.org برای اصول CS را اندازه گیری می کنیم ، به اشتراک بگذاریم.

مدارس در کد. برنامه org افزایش 5 برابری مشارکت و موفقیت دانش آموزان در CS

در مقایسه با مدارس مشابه ، مشارکت یک مدرسه در برنامه Code.org باعث افزایش پنج برابری تعداد دانش آموزانی می شود که در آزمون اصول علوم کامپیوتر AP شرکت می کنند و نمرات واجد شرایط را کسب می کنند.

دستاوردهای بزرگتر برای زنان جوان و اقلیت های کم نماینده

در میان زنان جوان و اقلیت های کم نماینده ، نتایج حتی جذاب تر است ناراحت کننده مشارکت یک مدرسه در برنامه Code.org باعث افزایش ده برابری تعداد دانش آموزان سیاهپوست شرکت کننده در آزمون AP و افزایش تقریباً 7 برابر در تعداد دانش آموزان سیاهپوست که نمرات واجد شرایط را در مقایسه با مدارس مشابه کسب کرده اند ، می کند. < /p>

ما از نمایندگی متوازن زنان جوان و اقلیت های کم نماینده در علوم کامپیوتر فاصله زیادی داریم و این نتایج فوق العاده امیدوار کننده است. سال گذشته نشان دادیم که تنوع نژادی دانش آموزان در کلاس های درس Code.org تقریباً نشان دهنده جمعیت مدرسه آنها است. اگر هر مدرسه ای در ایالات متحده نتایج مشابهی داشت ، در این زمینه شاهد حقوق ویژه ای بودیم.

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

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

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

برنامه آموزش حرفه ای Code.org

برنامه آموزشی حرفه ای Code.org با رویکردی جامع برای رسیدگی به مسائل تنوع و برابری طراحی شده است.مدارس و معلمان را آماده می کند تا علوم رایانه را به برنامه درسی مدارس اضافه کنند و مشارکت را به ویژه در میان زنان جوان و اقلیت های کم نماینده افزایش دهند. Code.org از استراتژی های متنوعی برای بهبود تنوع استفاده می کند و ما بر مدارسی در محله های کم درآمد تمرکز می کنیم که در آن دانش آموزان از لحاظ علمی به علوم رایانه دسترسی نداشته اند. استراتژی و رویکرد Code.org در مقیاس بزرگتری ایجاد می کند. این دانش آموزان برای موفقیت در نظر گرفته شده اند ، و ما نمی توانیم منتظر بمانیم تا ببینیم آنها چه کار می کنند.

بیکر فرانکه ، مدیر تحقیق و ارزیابی Code.org

چشم انداز رایانه ای

چشم انداز رایانه ای

بهترین پروژه برای شروع در چشم انداز رایانه ای با پایتون

GrabCut - پیاده سازی دفترچه یادداشت Google Colab برای تطبیق تصویر (حذف پس زمینه)

مقاله را همراه با اجرای کامل کد در GitHub دنبال کنید. دفترچه یادداشت را در Google Colab باز کنید ، تصویر (ها) خود را وارد کنید و سلول ها را اجرا کنید! که ابتدا در louisbouchard.ai منتشر شده بود ، 2 روز قبل آن را در وبلاگ من بخوانید! عکس توسط کوین کو در Unsplash

تطبیق تصویر یک کار بسیار جالب است که در آن هدف پیدا کردن است هر شی مورد علاقه ، یا انسان ، در یک تصویر و حذف پس زمینه آن. دستیابی به این وظیفه به دلیل پیچیدگی آن ، یافتن شخص ، افراد یا اشیاء با خط کامل بسیار دشوار است. این پست یک تکنیک هیجان انگیز را با استفاده از الگوریتم های بینایی رایانه ای اساسی برای دستیابی به این کار مرور می کند. الگوریتم GrabCut سریع است اما برای اجسام پیچیده مانند انسان یا حیوانات چندان دقیق نیست. با این وجود ، می تواند در زمینه های خاص مفید باشد و اولین پروژه کاربردی کامل برای شروع در بینایی رایانه و پایتون است! همانطور که در بالا ذکر شد ، پیاده سازی از Google Colab استفاده می کند ، بنابراین هیچ الزامات یا راه اندازی لازم نیست ، و این یک پروژه هیجان انگیز برای تکرار برای یادگیری است.

یک مثال ماتینگ GrabCut. تصویر نویسنده.

پروژه - GrabCut [1]

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

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

این یک نوت بوک ساده است که الگوریتم GrabCut را نشان می دهد که در ویدئویی که در مورد ModNet تهیه کردم نشان داده می شود ، یک تکنیک جدید برای مات شدن تصویر.

چگونه کار می کند؟

هنگامی که دفترچه یادداشت را باز می کنید ، 7 سلول پایتون با کد و نظرات در آنها مشاهده خواهید کرد. این دفترچه کاملاً ساده است:

تصویر خود را بارگذاری کنید. [سلول سوم] یک مستطیل روی تصویر خود ایجاد کنید ، شامل همه اشیاء پیش زمینه خود. [سلول چهارم] پس زمینه را با استفاده از الگوریتم GrabCut حذف کنید. [سلول پنجم] در صورت نیاز به بهبود ، روی تصویر بکشید ، چپ کلیک کنید (سفید) = پیش زمینه و راست کلیک (سیاه) = پس زمینه. [سلول ششم] پس زمینه را با استفاده از الگوریتم GrabCut حذف کنید. [سلول ششم] بازگشت به مرحله 4 یا پایان. [سلول ششم] نتایج خود را ذخیره کنید. [سلول هفتم]

توجه: [سلول ها] به پیاده سازی نوت بوک اشاره دارند.

نحوه عملکرد آن در نمایشیهای ویدیویی با کد

نمونه ای با یک تکرار که تنها به اولین گذر الگوریتم نیاز دارد

این یک مثال است که الگوریتم در اولین آزمایش کار می کند و ما فقط به مراحل 1 تا 3 نیاز داریم. ما اساساً بارگذاری می کنیمتصویر ، یک مستطیل در اطراف شی مورد نظر (سگ ما) بکشید ، و تمام! می توانید تصویر را با کانال آلفا در png ذخیره کنید.

نمونه ای با تصویر چالش برانگیزتر و تکرارهای متعدد مورد نیاز

این نمونه ای است که الگوریتم در اولین آزمایش کار می کند ، و ما فقط به مراحل 1 تا 6 نیاز داریم. ما اساساً تصویر را بارگذاری می کنیم ، یک مستطیل در اطراف شی مورد نظر (سگ دوم) می کشیم و حلقه تنظیم دقیق را وارد می کنیم. در اینجا ، خطوط تصادفی را با استفاده از کلیک چپ ترسیم می کنیم تا نتایج بیشتر بهبود یابد. پس از اتمام کار ، می توانید با استفاده از بقیه کد ، تصویر را با کانال آلفا در png ذخیره کنید.

خودتان آن را پیاده سازی کنید!

اجرای کامل کد در GitHub در دسترس است! به راحتی می توانید آن را در دستگاه Google Colab باز کرده و بلافاصله بدون هیچ پیش نیاز یا راه اندازی مورد نیاز اجرا کنید. فقط تصاویر خود را در Google Colab وارد کنید و کد را اجرا کنید!

louisfb01/iterative-grabcut این الگوریتم از مستطیل ساخته شده توسط کاربر برای شناسایی مورد پیش زمینه استفاده می کند. سپس ، کاربر می تواند برای افزودن یا… github.com

نتایج مشخص

src = "https://cdn-images-1.medium.com/max/426/1*WOHtQZpchV3WrM9yuj7xVQ.png"> نمونه های ماتینگ GrabCut.

نتیجه گیری

اگر در حال حاضر به طور کلی پایتون یا بینایی رایانه را یاد می گیرید ، با خیال راحت این کد را پیاده کنید و سعی کنید آن را بهبود بخشید! این بسیار سرگرم کننده است و راهی عالی برای یادگیری عملکردهای مهم و مکرر هنگام کار در بینایی رایانه است! لطفاً با هرگونه به روزرسانی کد با من تماس بگیرید یا آنها را در مخزن GitHub برای به روزرسانی ارسال کنید!

اگر از کار من خوشتان می آید و می خواهید با هوش مصنوعی به روز باشید ، قطعاً باید از من در سایر موارد من پیروی کنید حساب های رسانه های اجتماعی (LinkedIn ، Twitter) و مشترک خبرنامه هوش مصنوعی هفتگی من شوید!

برای حمایت از من:

بهترین راه حمایت از من این است که من را اینجا در Medium دنبال کنید یا مشترک شوید اگر از قالب ویدئویی خوشتان آمد کانال من در YouTube. از کارهای من در Patreon حمایت کنید به انجمن Discord ما بپیوندید: با هم AI را بیاموزید و پروژه ها ، مقالات ، بهترین دوره های خود را به اشتراک بگذارید ، Kaggle را بیابید هم تیمی ها ، و خیلی بیشتر!

مراجع

[1] استخراج پیش زمینه تعاملی با استفاده از الگوریتم GrabCut ، OpenCV ، (2013) ، https://opencv-python-tutroals.readthedocs.io /en/latest/py_tutorials/py_imgproc/py_grabcut/py_grabcut.html

ایالات متحده برای علوم رایانه

ایالات متحده برای علوم رایانه

سیاست های 44 ایالت CS را به کلاس درس می آورد

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

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

علوم رایانه یکی از معدود موضوعات سیاستی است که می تواند هم نیازهای آموزشی اساسی و هم نیازهای توسعه نیروی کار را برای نیروی کار آینده دولت برطرف کند. از روز اول ، ماموریت Code.org این بود که چگونه می توانیم به همه دانش آموزان سراسر کشور برای یادگیری این موضوع اساسی دسترسی دهیم. و هنگامی که ائتلاف حمایت از Code.org در سال 2013 کار خود را آغاز کرد ، فقط 14 ایالت به علاوه واشنگتن دی سی حداقل یکی از نه سیاست را برای اهمیت آموزش علوم کامپیوتر در نظر گرفته بودند. این سیاست ها شامل بودجه دولتی برای یادگیری حرفه ای معلمان علوم کامپیوتر ، ملزم شدن همه مدارس به ارائه علوم کامپیوتر و ایجاد استانداردهای علوم رایانه K-12 می شود.

از طریق کار فوق العاده شرکای سراسر کشور و حمایت گسترده دو حزبی رهبران ایالتی و ملی ، 44 ایالت یک یا چند مورد را تصویب کرده اند این سیاست ها و از آخرین گزارش در سال 2017 ، 33 ایالت قوانین و مقررات جدیدی را برای گسترش دسترسی به علوم رایانه K-12 تصویب کرده اند.

اما ما دریافتیم که در 24 ایالت ، تنها 35٪ از دبیرستان های آمریکا علوم کامپیوتر ارائه می دهند. دانش آموزان سیاه پوست و اسپانیایی زبان ، دانش آموزانی که از ناهار رایگان و کم هزینه استفاده می کنند و دانش آموزان مناطق روستایی کمتر به مدرسه ای می روند که به این موضوع مهم دسترسی داشته باشد.

س bigال بزرگی که پرسیده ایم این است که آیا این کارها را انجام دهید سیاست ها به این معنی است که دانش آموزان بیشتری به علوم رایانه K-12 دسترسی دارند؟ در ایالت هایی که بیشتر از این 9 سیاست را تصویب کرده اند ، درصد بیشتری از مدارس به دانش آموزان امکان دسترسی به علوم رایانه K-12 را می دهند!

دولتها باید هر نه این سیاستهای آموزشی را تصویب یا گسترش دهند تا برای همه دانش آموزان فرصت ایجاد کند و دولتهایی که برخی یا بسیاری از این ایده ها را اتخاذ کرده اند باید ادامه دهند تمرکز بر اجرا ما باید به هر دانش آموزی ابزارها و منابع لازم را برای موفقیت بدون توجه به محل زندگی ، نژاد/قومیت ، جنسیت یا وضعیت اقتصادی اجتماعی ارائه دهیم.

"کلاس های علوم رایانه مهارتهای اساسی را که در اقتصاد دیجیتال مورد نیاز است ، فراهم می کند. برد اسمیت ، رئیس مایکروسافت ، گفت: از تولید تا بازاریابی و فراتر از آن. "پیشرفت امروز ارزش تجلیل دارد اما این کار هنوز به پایان نرسیده است. ما امیدواریم که هر ایالت تا پایان سال قوانینی را تصویب کند تا اطمینان حاصل شود که همه دانش آموزان ، فارغ از سابقه وی ، می توانند کد نویسی را بیاموزند. باید به آمادگی دانش آموزان خود کمک کنندبرای آینده! برای سومین سال پیاپی ، انجمن سیاست گذاری دولتی که توسط Code.org و انجمن معلمان علوم رایانه (CSTA) میزبانی می شود ، رهبران ایالتی و ملی متعهد به آموزش علوم کامپیوتر K-12 را گرد هم آورده است تا بیاموزد که چگونه می توانند این 9 جک باسکین ، مدیر اجرایی CSTA.

"ائتلاف حمایتی Code.org یکی از بزرگترین جنبش های دو حزبی را برای تغییر در کل سیستم آموزشی ما رهبری می کند و 44 ایالت سیاست هایی را برای حمایت از گسترش دسترسی به علوم رایانه K-12 اتخاذ کرده اند. این گزارش نشان می دهد که دستور کار سیاست ما در حال تحقق چشم انداز ائتلاف است مبنی بر اینکه هر دانش آموز باید فرصتی برای تحصیل در رشته کامپیوتر رایانه K-12 با کیفیت بالا در مدارس محلی خود داشته باشد. " کامرون ویلسون ، رئیس ائتلاف حمایت از Code.org.

بازکردن درها برای آموزش علوم رایانه K-12 برای پرداختن به مساوات ، نیروی کار و مسائل آموزشی به صورت دو حزبی بسیار مهم است. بیایید حمایت و شتابی را که برای این موضوع مهم دیده ایم ادامه دهیم!

نحوه گزارش وضعیت شما در گزارش کامل ما را مشاهده کنید.

پت یونگ پرادیت - مدیر ارشد علمی ، Code.org < /p>

جیک بسکین - مدیر اجرایی ، CSTA

معرفی رایانه: اولین گام های خود را با OpenCV برای پایتون بردارید

معرفی رایانه: اولین گام های خود را با OpenCV برای پایتون بردارید

درک کتابخانه اصلی برای دستکاری تصویر و بینایی رایانه ای برای پایتون

عکس توسط زولتان تاسی در Unsplash

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

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

شروع به کار با OpenCV می تواند چالش برانگیز باشد ، به خصوص اگر به اسناد رسمی آن متکی باشید - معروف به دست و پا گیر و درک آن سخت است.

امروز ما نحوه کار با OpenCV را یاد می گیریم و تمام تلاش خود را برای ساده نگه داشتن آن می کنم.

OpenCV را نصب کنید

اکنون زمان نصب OpenCV با استفاده از یک فرمان ساده است:

 pip3 install opencv-python 

وارد کردن یک تصویر ساده

اولین چیزی که باید انجام دهید نحوه وارد کردن یک تصویر ساده و نمایش آن با استفاده از OpenCV را بیاموزید.

کد ساده است:

 وارد کردن cv2 
# خواندن تصویر
img = cv2.imread ("image.jpg") 
# نمایش تصویر
cv2.imshow ("Image"، img) 
# منتظر فشردن کلید باشید
cv2.waitKey (0) 
# پاکسازی
cv2.destroyAllWindows () 
خواندن اولین تصویر ما

پس از خواندن کد ، اگر فکر می کنید ما بیش از بارگذاری تصویر کار می کنیم ، حق با شماست. پس از همه ، بارگذاری یک تصویر با OpenCV تنها به یک خط کد پایتون خلاصه می شود:

 img = cv2.imread ("image.jpg") 

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

در نهایت ، ما پایتون را تا زمانی که یک کلید را فشار ندهیم یا پنجره را نبندیم ، از برنامه خارج نمی کنیم. سپس همه چیز را با از بین بردن همه پنجره هایی که باز کرده ایم تمیز می کنیم.

بارگذاری فیلم ها

OpenCV نه تنها با تصاویر بلکه با فیلم ها نیز برخورد می کند. جریانهای ویدئویی را می توان از یک فایل ویدئویی یا مستقیماً از یک منبع ویدیویی مانند وب کم بارگیری کرد.

در مثال بعدی ، ما یک ویدیو را از وب کم بارگذاری کرده و در یک پنجره جدید ارائه می دهیم:

 وارد کردن cv2 
# بارگیری جریان ویدیو
video = cv2.VideoCapture (0) 
 while (True):
   # هر فریم را به عنوان تصویر ضبط کنید
   ret، frame = video.read () 
 # تصویر را روی صفحه نمایش دهید
   cv2.imshow ("قاب" ، قاب)
     
   # هنگام فشار دادن 'q' پخش را متوقف کنید
   اگر cv2.waitKey (1) == ord ('q'):
       Break 
# ویدیو را از حافظه خارج کنید
video.release () 
# تمیز کردن
cv2.destroyAllWindows () 

کد قابل توضیح است ، اما اجازه دهید آن را با جزئیات مرور کنیم. ما از روش VideoCapture برای بارگذاری منبع ویدیو استفاده می کنیم. اولین استدلال مشخص می کند که چه ورودی را می خوانیم. با عبور از 0 ،ما به وب کم اصلی (در صورت وجود) اشاره می کنیم. در صورتی که چندین وب کم به هم متصل هستید ، می توانید از 1 ، 2 و غیره استفاده کنید. اگر ویدیوی شما ضبط شده و در یک فایل ذخیره شده است ، می توانید یک رشته را با مسیر فایل ارسال کنید.

در مرحله بعد ، ما حلقه ای را شروع کنید که فقط با فرمان کاربر تمام می شود ، اما بعداً در مورد آن. آنچه در اینجا مهم است این است که در داخل حلقه چه اتفاقی می افتد. اولین کاری که ما انجام می دهیم این است که از VideoCapture خود بخواهیم فریمی از ویدیو را بخواند. در مورد دوربین ، آن عکس فوری از دوربین در آن زمان و در مورد یک فایل ویدیویی ، فریم ویدیویی فعلی خواهد بود.

هر فریمی را که از آن می خوانیم بارگذاری ویدئو همانند تصویر بسیار مهم است زیرا به این معنی است که هنگام برخورد با فیلم ها کل زرادخانه عملکردهای OpenCV را در اختیار داریم.

به عنوان مثال ، خروجی فریم ضبط شده با خواندن می تواند منتقل شود به متد imshow دقیقاً همانطور که در مثال قبلی کار با تصاویر نشان دادیم.

زیبا!

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

یک مرحله اضافی برای پاکسازی داریم که دوربین یا فایل ویدیویی را آزاد می کند ، زیرا حتی اگر دیگر فریم نمی خوانیم ، ما هنوز اشیاء در حافظه باز هستند. ما می توانیم با استفاده از روش انتشار از شی VideoCapture این کار را انجام دهیم.

تغییر اندازه تصاویر

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

بیایید نمونه ای از نحوه تغییر اندازه تصویر را مشاهده کنیم:

 وارد کردن cv2
img = cv2.imread ("image.jpg")
مقیاس = 60
width = int (img.shape [1] * scale /100)
ارتفاع = int (img.shape [0] * scale /100)
dim = (عرض ، ارتفاع)
resized_img = cv2.resize (img، dim، cv2.INTER_AREA)
cv2.imshow ("Resized_Image"، resized_img)
cv2.waitKey (0)
cv2.destroyAllWindows () 
تغییر اندازه تصاویر

بسیار زیباست ساده است ، بنابراین ما طعم خاصی به آن اضافه کردیم و به جای تغییر اندازه تصویر در یک اندازه خاص ، تصویر را با ضریب x (در مثال ما 60) کوچک می کنیم. توجه داشته باشید که اگر ابعاد خاصی را هدف قرار دهیم ، کد ساده تر می شود.

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

تعویض فضاهای رنگی

وقتی تصویری را با OpenCV می خوانیم ، رنگ ها را در نظر می گیریم کانال ها یا عمق آرایه تصویر که در آن هر کانال یا بعد مربوط به یک رنگ است. رایج ترین فضای رنگی ، و آنچه احتمالاً از قبل می شناسید ، RGB است که از سه کانال قرمز ، سبز و آبی تشکیل شده است. YCrCb ، HLS و HSV و سایر موارد. هر یک از آنها دارای ویژگی های متفاوتی است که ارزش مطالعه و یادگیری را دارد.

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

 وارد کردن cv2
img = cv2.imread ("image.jpg")
خاکستری = cv2.cvtColor (img ، cv2.COLOR_BGR2GRAY)
cv2.imshow ("خاکستری" ، خاکستری)
cv2.waitKey (0)
cv2.destroyAllWindows () 
تصویر مقیاس خاکستری

تابع جایی که همه چیز جادویی اتفاق می افتد cvtColor است ، که دو آرگومان را انتظار دارد ، تصویر و فضای رنگ ، و تصویر جدید را بدون تغییر در اصل باز می گرداند. خوشبختانه ، OpenCV برای هر تغییر رنگ-فضای شناخته شده مقادیری تعریف کرده است. در مورد ما ، ما از COLOR_BGR2GRAY استفاده می کنیم که BGR را به خاکستری تبدیل می کند.

بنابراین BGR چیست؟ این روش پیش فرض بارگذاری تصاویر OpenCV است.

ذخیره تصاویر

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

کد زیر نحوه ذخیره تصویر پس از تغییر رنگ آن به مقیاس خاکستری را به شما نشان می دهد:

 وارد کردن cv2
img = cv2.imread ("image.jpg")
خاکستری = cv2.cvtColor (img ، cv2.COLOR_BGR2GRAY)
cv2.imshow ("خاکستری" ، خاکستری)
cv2.imwrite ("image_gray.jpg" ، خاکستری)
cv2.waitKey (0)
cv2.destroyAllWindows () 

می بینید که ما از تابعی به نام imwrite استفاده کرده ایم که وظیفه ذخیره تصویر خاکستری در رایانه ما پس از تعیین مسیر برای تصویر تازه ذخیره شده را بر عهده دارد. تصویر واقعی که ما باید ذخیره کنیم متغیر خاکستری در این مورد است. این فرایند کاملاً خودکار است و همه پیچیدگی های نحوه عملکرد برای ما در یک عملکرد ساده و ساده برای استفاده قرار گرفته است.

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

در اینجا مثالی از نحوه استفاده از هموارسازی بر روی یک تصویر آمده است:

 وارد کردن cv2 به عنوان رزومه
img = cv2.imread ("early_1800.jpg")
blur = cv2.blur (img، (5، 5))
cv2.imshow ("Blur"، blur)
cv2.waitKey (0)
cv2.destroyAllWindows () 
تصویر اصلی تصویر صاف شده

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

اندازه هسته با گرفتن یک ناحیه کوچک پیکسل (5x5 در تصویر ما) کار می کند. مورد) ، گرفتن مقدار متوسط ​​آن پیکسل ها ، و جایگزین کردن پیکسل واقعی (پیکسل) برای به دست آوردن تصویر کوچک پر سر و صدا. یا medianBlur - هر دو به طور یکسان کار می کنند.

طراحی بر روی تصاویر

تا کنون ، ما با تصاویر بدون افزودن چیز جدیدی به آنها بازی می کنیم. وقت آن است که آن را تغییر دهیم OpenCV به ما این امکان را می دهد که نه تنها تغییرات و جلوه های تصاویر را انجام دهیم ، بلکه آنها را تغییر داده یا روی آنها ترسیم کنیم. برنامه یا برنامه تشخیص چهره که در آن می خواهید یک مربع یا شکل بکشید تا اشیاء مشخص شده برجسته شوند.

بیایید چند شکل هندسی روی تصاویر بکشیم تا نحوه عملکرد آن نشان داده شود.

طراحی a Line

ما سعی می کنیم با استفاده از یک خط روی تصویر رسم کنیمتابع خط:

 وارد کردن cv2
img = cv2.imread ("image.jpg")
line = cv2.line (img، (20، 20)، (150، 150)، (255، 0، 0)، 5)
cv2.imshow ("خط" ، خط)
cv2.waitKey (0)
cv2.destroyAllWindows () 
ترسیم خط

عملکرد خط انتظار تصویر و چهار آرگومان دیگر را دارد: شروع خط در (x1 ، y1) ، انتهای خط در (x2 ، y2) ، رنگ خط (در BGR برای تصویر ما) و ضخامت آن در پیکسل .

رسم مستطیل

من فکر می کنم مستطیل ها بیشترین شکل را دارند ، حداقل در دنیای AI ، زیرا معمولاً برای ردیابی اشیا مانند چهره ، ماشین یا ترافیک استفاده می شود. علائم روی تصاویر همچنین استفاده از آنها بسیار آسان است. در اینجا مثالی آورده شده است:

 وارد کردن cv2
img = cv2.imread ("image.jpg")
مستطیل = cv2. مستطیل (img، (200، 200)، (450، 450)، (255، 0، 0)، 5)
cv2.imshow ("مستطیل" ، مستطیل)
cv2.waitKey (0)
cv2.destroyAllWindows () 
ترسیم مستطیل

تابع مستطیل بسیار شبیه به تابع خط است. تصویر و چهار آرگومان دیگر را انتظار دارد: گوشه سمت چپ بالای مستطیل در (x1 ، y1) ، پایین سمت راست آن در (x2 ، y2) ، رنگ خط (در تصویر BGR برای تصویر ما) ، و آن ضخامت در پیکسل.

ترسیم یک دایره

آخرین چیزی که ترسیم می کنیم یک دایره کوچک روی تصویر است که گاهی اوقات هنگام ردیابی یک شیء دایره مانند توپ.

 وارد کردن cv2
img = cv2.imread ("image.jpg")
دایره = cv2.circle (img، (300، 300)، 50، (255، 0، 0)، 5)
cv2.imshow ("دایره" ، دایره)
cv2.waitKey (0)
cv2.destroyAllWindows () 
ترسیم یک دایره

دوباره ، همه این توابع تقریباً مشابه هستند. برای ارائه یک دایره بر روی یک تصویر ، ما از تابع دایره استفاده می کنیم که تصویر و چهار آرگومان دیگر را انتظار می رود: نقطه مرکزی دایره در (x ، y) ، شعاع در پیکسل ، رنگ آن و ضخامت خط .

نتیجه گیری

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

امروز ما تنها درصد کمی از توانایی این کتابخانه را پوشش دادیم از. اگر از این کار لذت بردید ، توصیه می کنم مقاله من را در مورد عملکردهای ضروری OpenCV نیز مطالعه کنید ، که اطلاعات شما را از کتابخانه کمی بیشتر می کند.

بینایی موضوعی است که من را مجذوب خود می کند ، و من بیشتر خواهم نوشت. در مورد OpenCV در آینده - بنابراین با ما همراه باشید.

از خواندن شما متشکرم!

آینده طراحی تعامل انسان و کامپیوتر

آینده طراحی تعامل انسان و کامپیوتر

https: //www .pinterest.com/pin/826340231602661141/

چند سال پیش ، کلمات "دستگاه ورودی" فقط دو مورد خاص را در ذهن ما برانگیخت: صفحه کلید و ماوس - ابزارهای اصلی مورد استفاده برای ارائه داده به یک کامپیوتر شخصی صفحه کلید و ماوس در واقع دو دستگاه اولیه ورودی در تاریخ کامپیوتر هستند. امروزه ، با تکامل رایانه ها ، ما مجموعه وسیعی از دستگاه های ورودی داریم که نحوه تعامل با رایانه را تغییر داده است. به عنوان مثال ، ما تلفن های هوشمند داریم که به کاربران اجازه می دهد فقط با وب کم و میکروفون دست خود با رایانه ارتباط برقرار کنند ، که برای برقراری تماس های ویدئویی و بسیاری دیگر استفاده می شود.

در مورد زمانی که دستگاه تلفن همراه شما در جدول. احساس راحتی می کنید. وقتی آن گوشی در جیب شما قرار گرفت. در کل ، احساس ناراحتی می شود. چرا اینقدر عجیب است که رابطه ما با فناوری در اطراف ما در حال تغییر است؟ به اولین کامپیوتر خود فکر کنید. برای اولین بار که از آن استفاده می کنید چقدر بیشتر با کامپیوتر وقت می گذرانید. شاید یک ساعت یا دو ساعت در روز باشد. اما به این فکر کنید که چگونه جهان در حال حاضر برای اکثر ما تغییر کرده است ، شاید 85 درصد از ما بیش از 8 ساعت از آن استفاده می کنیم. مسئله این است که ما به عنوان اولین کاری که صبح انجام می دهیم با دستگاه خود تعامل داریم.

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

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

ابزارهای مراحل اولیه

در طول تاریخ ، در هر یک از این سنین ، یک رابطه جدید با ابزارهای ما تجربه انسان را کاملاً تغییر می دهد و هر یک از آن مراحل این پیشرفت در ابزارهای ایجاد شده ما ، ما را نیز تغییر داد.

تولد دوست شما کی است؟ گاهی فراموشش می کنی اما باید به یادآوری فیس بوک نگاه می کردید. این چیزها در حال تبدیل شدن به حافظه ما هستند. خطوط بین ما محو می شود وفناوری ما و این از بین رفته به این معنی است که بسیاری از ما این چیزها در حال توسعه ما هستند ، بیشتر در شیوه تعامل ما با فناوری و ابزارمان در 20 سال آینده یا ده سال آینده تغییر خواهد کرد ، و در در 200 سال گذشته.

نظر شما در مورد آن افزایش و گسترش آن گسترش تکنولوژیکی چه چیزی ما را می سازد؟

امروزه بشر معمولاً می گوید که به 3 قسمت تقسیم شده است. یعنی ،

ذهن حس زبان

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

الکسا فقط می تواند کارهایی را که از قبل برنامه ریزی کرده است انجام دهد ، اگر دفعه بعد بپرسید "الکسا ، فکر کن از مهندس بیچاره؟ ، هوا چطوره؟" و به پاسخ او پی ببرید.

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

منظور از برنامه های کاربردی API این است؟ ابزار ما کاملاً منفعل است تا بتوانیم از طرف خود عمل کنیم و فکر کنیم چرا شرکت ها مانند Google و Facebook هستند. و همچنین سامسونگ که بسیاری از آنها با آنها کار می کنند در حال حاضر با اشتیاق زیادی روی این کارکنان کار می کنند. آنها واقعاً اولین کسانی بودند که این محصول را به بازار عرضه کردند و اولین کسانی بودند که آن را در دسترس عموم قرار دادند. از آنجا که برخی از کارهای شگفت انگیز را انجام می دهد ، دو مانع واقعاً مهم در زندگی ما انسان ها را از بین می برد ، زیرا برای انجام هر کاری ابتدا باید این کار را انجام دهید.

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

فناوری به این معناست که این دو مانع برای ورود حذف می شوند و هنگامی که آنها جهان امکان است.

این امر برای ما به عنوان یک انسان چیست؟

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

ارتباط

به عنوان اولین بخش ارتباط خوب با دستگاه ، واقعاً مهم است. از آنجا که اکثر ما تعامل روزانه با فناوری چیزی شبیه به این ویدئو داریم.

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

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

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

آگاهی از زمینه

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

این دو مورد نوعی از اصول آنها خواهد بود که در صورت رفتن به چپ باید به آنها فکر کنیم. ماشین و فناوری شروع به چرخاندن از ما می کنند و شروع به انجام کارها برای ما می کنند.

همکاری مشترک

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

من فکر می کنم شگفت انگیزترین چیز انسان است این فرصتی است برای راه اندازی این ماشین ها و آموزش کار با آنها.

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

و من فکر می کنم طراحان این مسئولیت شگفت انگیز را بر عهده گرفته اند ، در واقع ما قبلاً این کار را انجام داده ایم زیرا این ماشین ها در حال حاضر به توسعه ما تبدیل شده اند. و همچنین طراحان دارای یک قابلیت شگفت انگیز هستند زیرا ما یا می توانیم فناوری هایی ایجاد کنیم که ما را در دستگاه هایمان قفل می کند یا قدرت عظیمی از این فناوری را که در آینده نزدیک در دسترس ما است آزاد کنیم ...