تطبیق تصویر یک کار بسیار جالب است که در آن هدف پیدا کردن است هر شی مورد علاقه ، یا انسان ، در یک تصویر و حذف پس زمینه آن. دستیابی به این وظیفه به دلیل پیچیدگی آن ، یافتن شخص ، افراد یا اشیاء با خط کامل بسیار دشوار است. این پست یک تکنیک هیجان انگیز را با استفاده از الگوریتم های بینایی رایانه ای اساسی برای دستیابی به این کار مرور می کند. الگوریتم GrabCut سریع است اما برای اجسام پیچیده مانند انسان یا حیوانات چندان دقیق نیست. با این وجود ، می تواند در زمینه های خاص مفید باشد و اولین پروژه کاربردی کامل برای شروع در بینایی رایانه و پایتون است! همانطور که در بالا ذکر شد ، پیاده سازی از Google Colab استفاده می کند ، بنابراین هیچ الزامات یا راه اندازی لازم نیست ، و این یک پروژه هیجان انگیز برای تکرار برای یادگیری است.
یک مثال ماتینگ GrabCut. تصویر نویسنده. این پیاده سازی الگوریتم GrabCut اساساً توزیع رنگ مورد پیش زمینه و پس زمینه را با استفاده از مدل مخلوط گاوسی تخمین می زند. ما یک مستطیل روی شی مورد نظر (پیش زمینه) ترسیم می کنیم و به طور مکرر سعی می کنیم با ترسیم قسمت ها نتایج را بهبود ببخشیم. این الگوریتم نتوانست پیکسل ها را به پیش زمینه اضافه کند یا مجموعه ای از پیکسل ها را از پیش زمینه حذف کند. به همین دلیل است که ما اغلب از "صفحه سبز" استفاده می کنیم و به الگوریتم ها کمک می کنیم تا فقط پیکسل های سبز را حذف کرده و بقیه را به نتایج نهایی واگذار کنیم. اما وقتی به چنین صفحه سبز دسترسی نداریم ، نتایج آنقدرها عالی نیستند.
این الگوریتم از مستطیل ساخته شده توسط کاربر برای شناسایی مورد پیش زمینه استفاده می کند. سپس ، کاربر می تواند ویرایش کند تا اشیاء را به پیش زمینه اضافه یا حذف کند. پس از اتمام کار ، پس زمینه را حذف می کند ، آن را شفاف می کند (کانال آلفا را اضافه می کند) و آن را ذخیره می کند.
این یک نوت بوک ساده است که الگوریتم GrabCut را نشان می دهد که در ویدئویی که در مورد ModNet تهیه کردم نشان داده می شود ، یک تکنیک جدید برای مات شدن تصویر.
هنگامی که دفترچه یادداشت را باز می کنید ، 7 سلول پایتون با کد و نظرات در آنها مشاهده خواهید کرد. این دفترچه کاملاً ساده است:
توجه: [سلول ها] به پیاده سازی نوت بوک اشاره دارند.
این یک مثال است که الگوریتم در اولین آزمایش کار می کند و ما فقط به مراحل 1 تا 3 نیاز داریم. ما اساساً بارگذاری می کنیمتصویر ، یک مستطیل در اطراف شی مورد نظر (سگ ما) بکشید ، و تمام! می توانید تصویر را با کانال آلفا در png ذخیره کنید.
این نمونه ای است که الگوریتم در اولین آزمایش کار می کند ، و ما فقط به مراحل 1 تا 6 نیاز داریم. ما اساساً تصویر را بارگذاری می کنیم ، یک مستطیل در اطراف شی مورد نظر (سگ دوم) می کشیم و حلقه تنظیم دقیق را وارد می کنیم. در اینجا ، خطوط تصادفی را با استفاده از کلیک چپ ترسیم می کنیم تا نتایج بیشتر بهبود یابد. پس از اتمام کار ، می توانید با استفاده از بقیه کد ، تصویر را با کانال آلفا در png ذخیره کنید.
اجرای کامل کد در GitHub در دسترس است! به راحتی می توانید آن را در دستگاه Google Colab باز کرده و بلافاصله بدون هیچ پیش نیاز یا راه اندازی مورد نیاز اجرا کنید. فقط تصاویر خود را در Google Colab وارد کنید و کد را اجرا کنید!

src = "https://cdn-images-1.medium.com/max/426/1*WOHtQZpchV3WrM9yuj7xVQ.png"> 
نمونه های ماتینگ GrabCut. اگر در حال حاضر به طور کلی پایتون یا بینایی رایانه را یاد می گیرید ، با خیال راحت این کد را پیاده کنید و سعی کنید آن را بهبود بخشید! این بسیار سرگرم کننده است و راهی عالی برای یادگیری عملکردهای مهم و مکرر هنگام کار در بینایی رایانه است! لطفاً با هرگونه به روزرسانی کد با من تماس بگیرید یا آنها را در مخزن GitHub برای به روزرسانی ارسال کنید!
اگر از کار من خوشتان می آید و می خواهید با هوش مصنوعی به روز باشید ، قطعاً باید از من در سایر موارد من پیروی کنید حساب های رسانه های اجتماعی (LinkedIn ، Twitter) و مشترک خبرنامه هوش مصنوعی هفتگی من شوید!
[1] استخراج پیش زمینه تعاملی با استفاده از الگوریتم GrabCut ، OpenCV ، (2013) ، https://opencv-python-tutroals.readthedocs.io /en/latest/py_tutorials/py_imgproc/py_grabcut/py_grabcut.html

رایانه به سرعت به بخشی جدایی ناپذیر از زندگی ما تبدیل شده است و همه چیز را از نحوه زندگی ، نحوه کار و نحوه تعامل با یکدیگر تغییر می دهد. به عنوان یک کاتالیزور تغییر اجتماعی و منبع شماره یک دستمزد جدید در اقتصاد ما با بیش از 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 یک کتابخانه عظیم پردازش تصویر و فیلم است که برای کار با بسیاری از زبان ها طراحی شده است. به عنوان پایتون ، C/C ++ ، جاوا و موارد دیگر. این برنامه آنقدر محبوب و قدرتمند است که پایه و اساس بسیاری از برنامه هایی است که می شناسید و با پردازش تصویر سروکار دارند.
شروع به کار با 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 به ما این امکان را می دهد که نه تنها تغییرات و جلوه های تصاویر را انجام دهیم ، بلکه آنها را تغییر داده یا روی آنها ترسیم کنیم. برنامه یا برنامه تشخیص چهره که در آن می خواهید یک مربع یا شکل بکشید تا اشیاء مشخص شده برجسته شوند.
بیایید چند شکل هندسی روی تصاویر بکشیم تا نحوه عملکرد آن نشان داده شود.
ما سعی می کنیم با استفاده از یک خط روی تصویر رسم کنیمتابع خط:
وارد کردن 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 تماس با برادر " چرا این کار را می کنیم؟ به این دلیل است که ما تمرکز کرده ایم که به این روشهای طبیعی ارتباط برقرار کنیم. شما یا بله یا خیر صحبت می کنید یا حرف درست را بله یا خیر زده اید. همه تعامل انسان و کامپیوتر با فناوری به زور در حالت دودویی قرار می گیرد و ما اصلاً اینطور نیست. ارتباط عمیق با ما به این معنی که در لکنت زبان تردید داریم ، نمی دانیم قبل از گفتن چه می خواهیم بگوییم. اینطور انسان است در واقع می توانیم ارتباط برقرار کنیم و بنابراین ما به عنوان طراحان باید به این فکر کنیم که ارتباطات واقعی برای این دستگاه به ترتیب چگونه است. برای این که بتوانیم واقعاً اطمینان داشته باشیم که این چیزها منظور ما را درک می کنند.
پیتر دروکر ، مربی مشهور جهان گفت که مهمترین چیز این است که ارتباطی شنیدن آن چیزی است که در حال حاضر زبان ما آغشته نشده است. این میدان با معنی است. این میدان یک امکان است. این زبان تأکید و لحن دارد و اگر رایانه ها یاد نگیرند که چگونه کوچکترین تفاوت جملات را تشخیص دهند ، ممکن است در شرایط بسیار نگران کننده ای قرار بگیریم.
این زبان طراحی ارتباطات و درک واقعی انسان است چگونه یک ماشین می تواند آن را نشان دهد این از لحن و عمق و احساسات و احساسات پشت آنچه شما می گویید باید چیز بسیار مهمی باشد که ما باید به عنوان طراحان به آن فکر کنیم ، بخش دوم این فرایند را نمایان می کند و من فکر می کنم این واقعا مهم است زیرا اگر ما به این ماشینها اعتماد کنید که از بین بروند و تصمیم بگیرند که چگونه می خواهند کاری را انجام دهند. وقتی ماشین مورد علاقه خود را انتخاب می کنیدشما تصمیم می گیرید وارد شوید و بنشینید. پس از آن ، شما با ماشین رانندگی می کنید.
دو نکته بسیار مهم وجود دارد. اولین مورد آگاهی از زمینه و دوم بازخورد فعال است بنابراین آگاهی از زمینه یا ارتباط با زمینه این است که وسیله نقلیه به شما نشان می دهد که می داند در حال انجام چه کاری است. این به شما نشان می دهد که شیر را در جاده می بیند. این به شما نشان می دهد که خطری را در مورد سایر اتومبیل ها مشاهده می کند که ممکن است جایی باشد که منحنی در حال نزدیک شدن است. دومین کاری که انجام می دهد یک فرآیند بازخورد فعال است ، در واقع می توانید احساس کنید اتومبیل های دور مشورت می کنند و با رانندگی در آن پیچ واقعاً احتیاط می کنند و واقعاً و واقعاً و با دقت.
این دو مورد نوعی از اصول آنها خواهد بود که در صورت رفتن به چپ باید به آنها فکر کنیم. ماشین و فناوری شروع به چرخاندن از ما می کنند و شروع به انجام کارها برای ما می کنند.
آخرین مورد همکاری است. آلبرت اینشتین می گوید: "تخیل مهمتر از دانش است. از آنجا که دانش محدود است ، در حالی که تخیل کل جهان را در بر می گیرد ، پیشرفت را تحریک می کند ، و تکامل را به وجود می آورد. " این یک خیال است که استفاده از فناوری فقط برای دانش عالی است. زیرا وقتی می توانستیم از این فناوری برای بدست آوردن و انجام وظیفه برده خرگوش استفاده کنیم ، دیگر نیامد و اطلاعات زیادی را برای من پیدا کرد و گزارشی از آن تهیه کرد.
من فکر می کنم شگفت انگیزترین چیز انسان است این فرصتی است برای راه اندازی این ماشین ها و آموزش کار با آنها.
وقتی ماشین در حال انجام است ما را به عنوان انسان آزاد می کند تا در واقع الگوهای جالبی را ایجاد کنیم تا تخیل ما آزاد باشد مواردی که جالب است مواردی را که ممکن است راه جالبی برای کاوش باشد جهت هدایت رایانه در ادامه ایجاد رگ ها و در نهایت ایجاد چیزی که هیچکدام از ما به طور مستقل بدون یکدیگر نمی توانیم ایجاد کنند ، جالب باشد.
و من فکر می کنم طراحان این مسئولیت شگفت انگیز را بر عهده گرفته اند ، در واقع ما قبلاً این کار را انجام داده ایم زیرا این ماشین ها در حال حاضر به توسعه ما تبدیل شده اند. و همچنین طراحان دارای یک قابلیت شگفت انگیز هستند زیرا ما یا می توانیم فناوری هایی ایجاد کنیم که ما را در دستگاه هایمان قفل می کند یا قدرت عظیمی از این فناوری را که در آینده نزدیک در دسترس ما است آزاد کنیم ...
وقتی این مقاله را شروع کردم ، بیش از یک سال از اولین بازی کامپیوتری کوانتومی ایجاد شده بود. زمان آن فرا رسیده بود که تاریخ آنها را بنویسید ، بنابراین من این کار را کردم.
تا ژوئن سال 2019 ، من به طور مداوم در حال به روز رسانی تمام اتفاقات جدید در زمینه کوانتوم و بازی بودم. تاریخچه آنها را در زیر خواهید دید. >
این بازی ای نیست که منحصراً در رایانه کوانتومی اجرا شود. مانند هر الگوریتم کوانتومی ، یک کامپیوتر معمولی باید به شدت درگیر باشد. این یک بازی است که بخشی از آن برای کامپیوتر کوانتومی اجرا می شود ، فقط برای اینکه ببینیم آیا می توان آن را انجام داد.
سخت افزار مشکلی نخواهد داشت: IBM این کار را از طریق تجربه IBM Q این نرم افزار نیز وجود داشت: Project Q ، یک SDK کوانتومی با قابلیت کار بر روی دستگاه های IBM ، اخیراً منتشر شده بود. تنها چیزی که لازم بود یک بازی بود.
بازی انتخاب شده سنگ کاغذ-قیچی بود. با توجه به قدرت کیوبیت ها سازگار شد و اولین بازی کوانتومی ساخته شد. نام آن Cat-Box-Scissors بود.
خیلی خوب نبود ، حقیقت را باید گفت. فقط یک آزمایش اول ساده. کمی بیشتر از یک تولید کننده عدد تصادفی با یک داستان. رایانه های کوانتومی مستحق چیزی بهتر بودند.
و تنها کمی بعد ، اولین بازی چندنفره با کامپیوتر کوانتومی ساخته شد. این بازی با تکنیک هایی که قبلاً برای بررسی ویژگی های اساسی جهان استفاده می شد ، Battleships است.
این اولین بازی های کامپیوتری کوانتومی نمونه های ساده ای بودند که محدود به خط فرمان بودند. آنها در زمان واقعی از پردازنده کوانتومی استفاده کردند ، که به معنی انتظار در صف کار بود. متأسفانه انتظار چند قطعه از متن افراد کمی سرگرم کننده است.
پس بازی بر اساس داده های از پیش موجود چطور؟ رایانه کوانتومی می تواند همه چیز مورد نیاز را از قبل تولید کند ، به بازی اجازه می دهد تا سریع و پاسخگو اجرا شود ، همانطور که همه ما از برنامه های مدرن انتظار داریم.
از این ایده Quantum Solitaire ، که در Fantasy Basel (سوئیس پاسخ به Comic Con).
مه دو بازی کوانتومی آورد. یکی با همان فلسفه Quantum Solitaire ساخته شده است که بر روی داده های از قبل موجود است. این الهام گرفته از Hunt the Wumpus ، یک خزنده سیاه چال اولیه بود. این Hunt the Quantpus بود.
همچنین نسخه جدیدی از Battleships را به ارمغان آورد. این بازی دیگری بود که در زمان واقعی اجرا شد. اما به جای استفاده از Project Q برای مدیریت نرم افزار ، مانند قبل ، از QISKit: SDK بومی تازه منتشر شده IBM برای سخت افزار خود استفاده کرد.
این اولین بازی کوانتومی در زمان واقعی بود که چندین دور اجرا شد. به این ترتیب ، اولین بودفراتر از یک تولید کننده عدد تصادفی فانتزی. همچنین با یک هدف عالی ایجاد شد: برای کمک به مردم برای یادگیری برنامه نویسی کوانتومی.
به دلیل پیچیدگی بیشتر آن ، تمام بازی های قبلی به عنوان یک آزمایش ساده تنزل یافت. اولین بازی کامپیوتری کوانتومی واقعی بود.
اردیبهشت 2017 نیز به عنوان ماهی که IBM پردازنده 16 کیوبیت خود را اعلام کرد ، قابل توجه است. مانند همه پردازنده های کوانتومی مبتنی بر ابر ، یک روز بازی انجام شد.
هر بازی تا کنون فقط توسط یک نفر طراحی شده است. من!
در ژوئن 2017 ، این تغییر کرد. Rigetti ، یک استارتاپ محاسبات کوانتومی ، SDK کوانتومی خود را منتشر کرد. در همان زمان ، آنها همچنین یک بازی ساده را با هدف ارائه کمی نمایش محاسبات کوانتومی ساختند. آن را در وب سایت آنها اینجا ببینید.
این بازی به عنوان یک بازی کوانتومی به حساب نمی آید ، زیرا از یک کامپیوتر کوانتومی شبیه سازی شده استفاده می کند تا یک کامپیوتر واقعی. اما Rigetti دارای سخت افزار و نرم افزار برای پیاده سازی آن بر روی یک دستگاه واقعی است ، بنابراین مطمئناً شایسته ذکر آن است.
یک نمایش ساده مشابه نیز توسط IBM در مارس 2017 ارائه شد (اینجا را ببینید). اگرچه می توان گفت که این بازی کاملاً یک بازی محسوب نمی شود و هرگز ادعا نمی کند که یک بازی است ، اما شایسته ذکر آن است.
البته من هنوز در حال توسعه بازی های کوانتومی خودم بودم. ژوئن ورود جدیدی را به فرانچایز طولانی مدت Quantum Battleships وارد کرد. به عنوان یک آموزش بیشتر در برنامه نویسی کوانتومی ، Battleships با اندازه گیری های مکمل ارائه شد.
ژوئن همچنین رویداد کوانتوم جهش BlueYard را برگزار کرد: جلسه ای از محققان ، استارتاپ ها ، سرمایه گذاران و روزنامه نگاران که همه علاقه مند به محاسبات کوانتومی هستند. من موفق شدم بلیطی را به عنوان فردی که بازی های کوانتومی می سازد کنار بگذارم. در آنجا من با ویل زنگ از ریگی در مورد Spacewar چت کردم ، یکی از اولین بازی های رایانه های معمولی. من همچنین با آلن هو از گوگل در مورد برخی از افکارم در مورد پیشنهاد آنها برای "برتری کوانتومی" و با جری چاو از IBM در مورد دستگاه 16 کیوبیت آنها صحبت کردم. این مکالمات بعضاً الهام بخش برخی از اتفاقاتی بود که در ماه آگوست رخ داد.
در ماه جولای ، بخشی برای آموزش SDK کوانتومی QISKit به آموزش اضافه شد. مدتی وعده داده شده بود ، اما در این ماه سرانجام با یک دفترچه تحت عنوان "مشکل سکه های تقلبی کوانتومی" تاسیس شد.
این در واقع یک بازی به معنای استاندارد نیست. این چیزی است که می توانید با نظریه بازی مطالعه کنید ، اما در واقع چیزی نیست که شما بازی می کنید. این مورد در مورد افزودنی اولیه دیگری که در این بخش وجود دارد نیز صادق است: Quantum Magic Squares (از آن زمان به بعد در آموزش دیگر جابجا شده است).
با این وجود ، این بخش از آموزش شامل بازی هایی بود که می توان آنها را بازی کرد همچنین. بر این اساس ، به زودی به خانه کشتی های جنگی تبدیل شد که قسمتی از آنها دروازه نداشتند. این طرحی بود برای اثبات آنچه که آنها "برتری کوانتومی" می نامند:این رایانه های کوانتومی می توانند در برخی از کارها بهتر از رایانه های معمولی باشند.
نمایش نهایی این امر به احتمال زیاد کار مفیدی نخواهد بود. این برای چیزی کاملاً انتزاعی خواهد بود ، چیزی که به شدت به نفع مدعی کوانتومی تعصب دارد. همچنین پس از ظهور اولین ادعاهای "برتری" برای ظهور رایانه های کوانتومی واقعی ، یک دهه خوب طول می کشد.
با این وجود ، هرچه این کار را جالب تر انجام دهیم ، نتیجه جالب تر خواهد بود. هرچه کار را بیشتر مرتبط کنیم ، نتیجه قابل درک تر خواهد بود. بنابراین اجازه دهید آن را به یک بازی تبدیل کنیم!
این ایده ای بود که من برای اولین بار در ابتدای سال 2017 داشتم. این امر به آرامی در نیمه اول سال توسعه یافت و تقریباً رها شد. اما گفتگوهایی که من در رویداد BlueYard در ماه ژوئن انجام دادم ، بر فکر من متمرکز شد. برتری کوانتومی در فرم بازی: هیبت کوانتومی.
مانند Spacewar! قبل از آن ، این یک طراحی بازی برای استفاده از سخت افزار در محدوده خود بود. این می تواند زمینه را برای نتیجه برتری فراهم کند. همچنین می تواند داده های محک را برای دستگاه های بسیار کوچک یا پر سر و صدا برای برتری ارائه دهد.
در این بازی ، اندازه و قابلیت اتصال یک پردازنده کوانتومی به شکل مربوط به یک پازل ارائه شده است. نواقص و سر و صدا به افزایش سختی تبدیل شد. با استفاده از این بازی ، بازیکنان از هر زمینه می توانند درک کنند که دستگاههای کنونی در واقع چگونه هستند. بنابراین اولین نتایج را در آنجا گرفتیم.
ماه اوت نیز ماه بزرگی برای کشتی های جنگی با دروازه های جزئی NOT بود. این بخشی از بخش آموزشی QISKit برای بازیها بود ، همانطور که در ماه ژوئیه ایجاد شد.
نسخه ای که کمی قابل پخش تر هم باشد ، ایجاد شد ، به طوری که بازیکنان مقداری متن برای خواندن در حالی که در صف منتظر هستند به آنها داده شد. راه حلی برای این مورد ضبط و در یوتیوب قرار داده شد. اگرچه فقط به عنوان چیزی برای نمایش به چند نفر (و بدون روایت یا موسیقی زمینه) ساخته شده است ، اما توسط چند هزار روح شجاع مشاهده شده است.
دلیل این نسخه قابل پخش بیشتر این بود که بخشی از رویدادی در Aarhus باشید. این توسط ScienceAtHome برگزار شد ، که بازیهای فوق العاده ای در مورد کامپیوترهای کوانتومی می سازد.
اوت سپس با اولین سخنرانی کنفرانسی در مورد بازی هایی که بر روی کامپیوترهای کوانتومی اجرا می شوند ، پایان یافت. این اتفاق در Gamescom در کلن افتاد ، یکی از بزرگترین نمایشگاه های تجاری جهان برای بازی.
ماه های پاییز 2017 بودزمان آرامی برای تلاش های من برای بازی های کوانتومی. می خواهم بگویم این به این دلیل بود که من مشغول کارهای جدی علمی بودم. اما این فقط تا حدی درست است. من همچنین از شکلک ها به عنوان نسخه کوانتومی Hello World یک برهم نهی کردم.
اما برای دیگران چندان آرام نبود. گروهی از افراد در دانشگاه اسنابروک یک بازی برای کلاس یادگیری ماشین مقایسه ای تهیه کردند. این فقط محاسبات کوانتومی نداشت ، بلکه محاسبات عصبی نیز داشت!
هیبت کوانتومی به گونه ای طراحی شد که بتواند پخش کن. صرف نظر از معماری ، اندازه ، یا اتصال. تا زمانی که تعداد زیادی کیوبیت دارید ، می توانید Quantum Awesomeness را روی آنها بازی کنید.
اگرچه این نظریه بود ، اما در عمل این نرم افزار فقط از دستگاه 16 کیوبیت IBM پشتیبانی می کرد. زمان گسترش شبکه فرا رسیده بود.
در پایان ماه نوامبر ، کمی تعمیرات اساسی در GitHub انجام شد. اکنون می تواند بر روی دستگاه IBM 16 کیوبیت تازه ارتقا یافته پخش شود. می تواند روی 5 دستگاه کیوبیت آنها نیز پخش شود. در هر مورد ، از QISKit SDK IBM استفاده کرد.
تغییر بزرگ دیگر شامل پشتیبانی از Project Q بود ، که چند ماه توسط توسعه بازی کوانتومی نادیده گرفته شد. پشتیبانی از Forest توسط Rigetti به زودی با الهام از اعلام پردازنده 19 کیوبیت اضافه شد. Quantum Awesomeness یکی از اولین صف هایی بود که روی این دستگاه جدید اجرا شد ، اولین داده ها قبل از کریسمس آمد
همه داده های جمع آوری شده تا کنون (از 3 دستگاه IBM و و 1 دستگاه Rigetti) در آن زمان بود در GitHub قرار دهید این به بازیکنان اجازه می دهد بدون نیاز به دسترسی مستقیم ، بازی های Quantum Awesomeness را از تمام این پردازنده های کوانتومی انجام دهند. اگر کسی می پرسید که آیا 19 کیوبیت ریگتی از 16 آی بی ام بهتر است یا نه ، می تواند خود به این موضوع پی ببرد. فقط با انجام یک بازی.
هیجان کوانتومی در سال 2018 ادامه یافت. پروژه بهبود یافت و به عنوان مبنای مقاله ها برای توضیح وضعیت فعلی محاسبات کوانتومی مورد استفاده قرار گرفت. به این شامل بازی های مبتنی بر متن "Let's Play" بر روی دستگاه های مختلف می شود.
این ماه ها همچنین اولین بازی جدید را پس از مدتی نشان داد ، هرچند از نظر فنی بیشتر یک آموزش گیمیفیکیشن است. با یافتن معماها ، بازیکن می تواند اولین تجربه محاسبات کوانتومی را بچشد.
خود این آموزش روی یک رایانه معمولی اجرا می شود. اما به همین جا ختم نمی شود! این برنامه دارای حالت های اضافی است که اجازه می دهد برنامه ها نوشته شوند و سپس بر روی یک دستگاه واقعی اجرا شوند. بنابراین تقریباً به عنوان یک بازی که بر روی کامپیوتر کوانتومی اجرا می شود حساب می شود ، حتی اگر نه "بازی" و نه "اجرا شوددر مورد کامپیوترهای کوانتومی ادعاها بسیار قوی هستند. تیم برنده به سرعت آنچه را که ممکن است چالش برانگیزترین جنبه بازی های کوانتومی باشد ، شناسایی کرد: یا (ب) با وفاداری مکانیک کوانتومی زیرین را نشان می داد. اما نه هر دو. #، SDK مایکروسافت برای ساخت برنامه های کوانتومی. مطمئناً روی سخت افزار کوانتومی واقعی اجرا نمی شود ، زیرا در حال حاضر هیچ چیزی به Q#متصل نشده است. با این وجود ، این رویداد در تاریخ بازی های کوانتومی شایسته ذکر است.
پایان ماه مارس همچنین آخرین مهلت برای دریافت جایزه IIS IIS به QISKit بود. این شرکت کنندگان برای ایجاد دفترهای جالب Jupyter ، به منظور آموزش اصول برنامه نویسی کوانتومی به دیگران ، به چالش کشید. برنده ، شبیه سازی مدل Ising ، نمونه ای عالی از استفاده از کامپیوترهای کوانتومی برای اهداف علمی بود. اما شرکت کننده دیگر یک بازی ساده بر اساس ویژگی های عجیب و غریب همبستگی کوانتومی بود.
در 6 و 7 آوریل ، ریگتی اولین هکاتون کوانتومی جهان را برگزار کرد. یا حداقل اولین کسی است که به برنامه ها اجازه می دهد روی سخت افزار کوانتومی واقعی اجرا شوند. شرکت کنندگان از طیف گسترده ای از زمینه ها و انجام انواع پروژه ها حضور داشتند. دو تیم حتی بازی ساختند. یکی توسط خودم و هم تیمی هایم ، جاناتان دوبوآس و م.صاحیب علم انجام شد. نام آن پیوند کوانتوم بود.
بخشی که توسط Sohaib ساخته شد ، اجرای بازی پنی مایر بود: نبردی بین کاپیتان پیکارد و Q که در آن یک کامپیوتر کوانتومی نتیجه را کاملاً تغییر می دهد. این بازی بعداً در اسناد مربوط به SDK کوانتومی ریگتی گنجانده شد.
همچنین از طریق بازی هکاتون یک بازی موبایل سرگرم کننده دریافت کردیم که توسط تیمی با ویل زنگ خود ریگیتی ساخته شده است.
از تابستان 2017 ، من با همکاری IBM Research روی یک بازی کار می کردم. این ایده به افراد اجازه می دهد تا مشاغل ایجاد کنند تا بر روی دستگاه های واقعی اجرا شوند و این کار را از طریق یک بازی تلفن همراه انجام دهند. در پایان ما یک بازی پازل ایجاد کردیم تا اولین کار برنامه نویسی کوانتومی را به مردم بدهیم: سلام کوانتوم. یک نسخه مخصوص گیمرهای معمولی است و در دستگاه های تلفن همراه منتشر می شود.
اگرچه روی رایانه های کوانتومی اجرا نمی شود ، اما هدف آن ایجاد بازیکنان برای ایجاد برنامه های خود در IBM Q Experience است. و همه چیز مورد نیاز برای بازتولید معماها و راه حل ها را در یک دستگاه واقعی فراهم می کند.
کوانتومAwesomeness مدتها بود که یک بازی بود که مردم می توانستند انجام دهند. اما هنوز به عنوان یک علم ارائه نشده بود. زمان نگارش مقاله در مورد آن فرا رسیده بود.
این به عنوان مطالعه ای در مورد نحوه برنامه های کوانتومی اجرا شده توسط بازی نوشته شده است که می تواند به ما در درک و مقایسه نمونه های اولیه دستگاه های کوانتومی کمک کند. اشاره چندانی به ماهیت آن به عنوان یک بازی نشده است. سپس ، درست زمانی که داشتم مراحل پایانی را تکمیل می کردم ، ریگتی رفت و دستگاه جدیدی را روانه بازار کرد. این بار یک عدد 8 کیوبیت.
خوشبختانه ، آنها به من اجازه دادند تا خیلی سریع کار خود را انجام دهم. بنابراین Quantum Awesomeness یک دستگاه جدید به فهرست خود اضافه کرد.
بهترین بستر برای انجام بازی چیست؟ کامپیوتر یا کنسول؟ پلی استیشن یا ایکس باکس؟ در مورد چیزی متفاوت: قابلیت های تست واحد SDK؟
این کاری است که مایکروسافت برای کمک به مردم در برنامه نویسی کامپیوترهای کوانتومی با زبان Q# انجام داد. چهار چالش اول ، معروف به Quantum Katas ، در این ماه آنلاین شد.
باز هم مثال این چیزی است که در واقع اجرا نمی شود یک کامپیوتر کوانتومی اما از آنجا که برنامه هایی که می نویسید مطمئناً می توانند بر روی رایانه های کوانتومی واقعی اجرا شوند (و از آنجایی که ما هیچ چیز دیگری در این ماه برای صحبت نداریم) شایسته ذکر است.
این ماه دارای دو بازی ساخته شده در بازی jam. یکی از من برای مربا Ludum Dare بود. سعی کردم از پیاده روی های کوانتومی برای ساخت بازی دیگری با الهام از Hunt the Wumpus استفاده کنم. این مقدار زیادی نداشت ، اما می توانید آن را در اینجا بیابید.
یک بازی بهتر و زیباتر Desiree Vogt-Lee ساخته شد (که همچنین فهرست خوبی از منابع برای یادگیری کوانتوم در اختیار دارد). این دستگاه Quantum Cat-sweeper نام دارد و بر اساس Minesweeper ساخته شده است (همانطور که احتمالاً حدس زده اید!). این برنامه بر روی یک شبیه ساز یا بر روی یک دستگاه 5 کیوبیت IBM اجرا می شود.
در ابتدای این ماه ، شغلی برای IBM Research پیدا کردم. یکی از هم تیمی های من از هکاتون Rigetti ، Sohaib Alam ، همزمان در Rigetti شروع به کار کرد. به نظر می رسد طراحی بازی کوانتومی شغلی با چشم اندازهای بهتر از طراحی بازی معمولی است!
نسخه خط فرمان Hello Quantum از معدود افرادی که آن را پیدا کردند ، نظرات خوبی دریافت کرد. این امر علیرغم شکل ابتدایی و زشت آن بود. وقت آن رسیده بود که آن را بهتر ، زیباتر و در پوشه بازی های آموزش Qiskit قرار دهید.
نتیجه Hello Qiskit نامیده می شود ، زیرا فرآیندساخت اولین برنامه های کوانتومی خود در Qiskit. شما می توانید کل کار را بر روی یک کامپیوتر کوانتومی واقعی اجرا کنید ، اما این احتمالاً بهترین ایده نخواهد بود. از شبیه ساز تا انتها استفاده کنید ، جایی که می توانید برای ارائه ماهیت منحصر به فرد متغیرهای کوانتومی به یک دستگاه واقعی تغییر وضعیت دهید.
این ماه فصل دیگری را در حماسه بزرگ به ارمغان آورد of Quantum Awesomeness: یک پیاده سازی مجدد صرفاً در Qiskit ، طراحی شده برای زندگی در پوشه بازی های آموزش Qiskit. همچنین ، یک پست دیگر در Medium در مورد این بازی که همه باید از آن ناراحت باشند!
یک ماه کند در تاریخ بازی های کوانتومی. اگرچه من در یک سخنرانی جالب از اورت وان نیوبرگ شرکت کردم. او در مورد کار خود در مورد استفاده از یادگیری تقویتی برای آموزش نحوه تصحیح خطاها در رایانه کوانتومی صحبت کرد. اساساً تصحیح خطای کوانتومی به عنوان یک بازی و آموزش نحوه اجرای آن به رایانه. تصحیح خطاهای توپولوژیکی و به ویژه کد سطح ، در حال حاضر امکان پذیرترین نقشه راه را ارائه می دهد… scirate.com
او همچنین Quantum TicTacToe را ساخته است. یکی دیگر از بازی های الهام گرفته از کوانتوم ، به جای بازی با رایانه کوانتومی. اما یکی که می تواند در آینده منتقل شود.
در اواسط فوریه 2019 اولین بازی با استفاده از رایانه های کوانتومی ایجاد شد.
< mixtape_embed> چرخ کوانتومی - هلسینکی ، 15-17 فوریه 2019 چرخ کوانتومی - پنجمین بازی جام جم کوانتومی موفقیت آمیز بود! ما بیش از 50 شرکت کننده در سراسر جهان و 10 تیم داشتیم ... www.finnishgamejam.comاین همکاری بین دانشگاههای آلتو و تورکو و همچنین IBM Research بود. شرکت کنندگان (از جمله طراح Angry Birds) با ارائه یک بازی که از یکی از دو منبع کوانتومی ارائه شده استفاده می کرد ، به چالش کشیدند: شبیه ساز ساخته شده توسط تیم در Turku یا Qiskit از IBM.
یک در مورد این مربا چیزهای زیادی برای گفتن وجود دارد ، اما قبلاً آن را در جای دیگری گفته ام.
اولین اردوی Qiskit اتفاق افتاد.
دو بازی از این طریق به وجود آمد. یکی نسخه کوانتومی پونگ بود که در کانال Qiskit YouTube نمایش داده شد.
نسخه دیگر نسخه کوانتومی Flappy Bird بود. البته با گربه. این پروژه برنده جایزه انتخاب جامعه: Purple Qubits بود. این کار در Unity انجام شد و بنابراین تیم یک افزونه Unity برای Qiskit ایجاد کرد.
این ماه شاهد تکمیل بازی TicTacQ بودیم که از ژوئیه 2018 وجود داشت.

توسط Maddy Tod ایجاد شده است ، کسی که هنگام کار به عنوان کارآموز در IBM با کوانتوم برخورد کرد. این Tic-Tac-Toe است که در آن با الگوریتم کوانتومی بازی می کنید. این بازی یکی از اولین بازی های رایانه ای کلاسیک است که اکنون با نام OXO شناخته می شود.
همچنین در این ماه در Pyweek شرکت کردم: یک هفته بازی طولانی. من یک اسباب بازی هنری ساختم که از محاسبات کوانتومی برای دستکاری تصاویر استفاده می کرد
من یک آموزش در مورد نحوه عملکرد آن تهیه کردم ، که اکنون در اینجا زندگی می کند.
من یک پروژه ساختم که در آن می توان با استفاده از رایانه های کوانتومی زمینه بازی ها را ایجاد کرد و از تکنیک های فوق برای دستکاری ایماها استفاده کرد. توضیح کاملی در زیر یافت می شود.
نسخه کوانتومی Connect 4 نیز وجود داشت که در آن بازیکن با الگوریتم کوانتومی بازی می کند.
برنده هکاتون نیز به نوعی بازی بود: بر اساس بازی زندگی کانوی بود.
در اینجا خلاصه ای از آنچه در این رویداد اتفاق افتاده است آورده شده است.
در این ماه مقاله ای درباره ساخت بازی های کوانتومی مشاهده شد.
این اثر توسط کریس کانتول ، طراح شطرنج کوانتوم بود. اجازه می دهم استفن هاوکینگ و آنتمن درباره آن بازی بیشتر به شما بگویند.
در ماه جولای ، در کنفرانس Europython 2019 ، به هر شرکت کننده یک کنسول بازی کوچک داده شد که بر اساس آنها می توانند بازی های خود را برنامه ریزی کنند. ایده پشت این دستگاه 10 دلاری ، که به PewPew معروف است ، ارائه یک سندبند ساده برای افرادی بود که نحوه ساخت بازی را یاد می گرفتند.
بنابراین من فکر کردم: چرا این را در کوانتوم اعمال نمی کنیم؟
پاسخ این است که Qiskit هرگز روی چنین ساده و مبتنی بر میکروکنترلر کار نمی کند دستگاه اما من اجازه نمی دهم چیزهایی مانند"حقایق" یا "عقل" من را باز می دارد! در عوض ، من یک نسخه کوچک از Qiskit تهیه کردم که روی PewPew اجرا می شد.
سپس من یک بازی برای آن (یا حداقل یک شبیه ساز) ، برای بازی GMTK 2019 تهیه کردم. این بسیار پیچیده نبود ، اما شروع.
این ماه چیزهای زیادی برای گفتن وجود دارد. بیشتر به خاطر اردوی Qiskit Europe ، که در سوئیس برگزار شد.
شش بازی به عنوان بخشی از این هکاتون ساخته شد. سه نفر از آنها با استفاده از یک بازی موجود ، و سپس به مکانیک بازی یک چرخش کوانتومی دادند.
دو بازی دیگر برای PewPew با کوانتوم فعال بود.
آخرین مورد ایده ایجاد رویه را به عنوان دانه خود در نظر گرفت. در نتیجه یک سرکش
اردوگاه Qiskit همچنین اولین خروج یک ماشین بازی بود که از قبل با بازی های کوانتومی بارگیری شده بود. به طور خاص ، بازی Hello Quantum و QPong برای شرکت کنندگان در آن وجود داشت.
همزمان با اردوی Qiskit رویدادی به نام Code4Kids در سانفرانسیسکو برگزار شد. این کارگاه در زمینه محاسبات کوانتومی با استفاده از یک بازی جدید به نام Qiskit Blocks برگزار شد. این بر اساس Minetest ، جایگزین منبع باز برای Minecraft است. این بازی از Qiskit برای اجرای مدارهای کوانتومی استفاده می کند و نحوه استفاده از آنها را به بازیکنان آموزش می دهد.
همچنین در ماه سپتامبر ، مسابقه ای برای ساخت بازی کوانتومی راه اندازی شد!
در نهایت ، سپتامبر سال 2019 زمانی است که من به روز رسانی این مقاله غول پیکر را متوقف می کنم. غلط املایی را تصحیح و پیوندها را وارد می کنم ، اما نه بیشتر. فصل 1 از تاریخچه بازی های کوانتومی بسته شده است!
بازی های رایانه های کوانتومی به عنوان یک پروژه جانبی توسط یک نفر شروع شد. تا سپتامبر 2019 ، این پروژه برای بسیاری از مردم تبدیل به یک پروژه مهم و موضوعی رایج برای گیر کردن بازی ها و هک هاتون ها شده است. یک دوره جدید آغاز شده است ، و بیش از حد زیادی توسط یک پست وبلاگ نورد پوشش داده می شود. امیدوارم این مقاله را الهام بخشیده باشید تا خودتان سابقه داشته باشید.
Universe Splitter در سال 2009 آغاز شد. این یک برنامه تلنگر سکه است که منحصر به فرد بودن آن از این واقعیت ناشی می شود که از منبع کوانتومی اعداد تصادفی استفاده می کند. این به آن اجازه می دهد تا به برخی از روایت های مربوط به فیزیک کوانتوم متصل شود. به طور خاص ، هر زمان که بخواهید تصمیمی بگیرید ، خود را به عنوان راهی برای تجزیه جهان معرفی می کند.
این یک بازی نیست ، اما دارای عناصر بازی سازی شده است. و روی رایانه کوانتومی اجرا نمی شود ، اما از سخت افزار کوانتومی استفاده می کند. بنابراین این یک پیشگام قطعی بازی هایی است که روی رایانه های کوانتومی اجرا می شوند و الهام بخش است تا به ما نشان دهد که حتی با یک قطره کوانتوم چه می توان انجام داد
در سال 2016 مجموعه ای از پروژه ها با ترکیب کوانتوم و بازی ها انجام شد. یابازیگونهسازی. برای مشاهده یک لیست ناقص ، به این جلسه از گفتگوهای مربوط به آنها از اوایل سال 2017 و همچنین بازی کوانتومی با فوتون مراجعه کنید. به طور خاص Quantum Chess ، و همچنین پروژه علمی شهروند خودم: Decodoku.
اگرچه سال 2016 گیمیفیکیشن کوانتومی زیادی را به ارمغان آورد ، تنها سه پروژه شامل دستگاه های واقعی بود. یکی تجربه IBM Q بود.
با کدو نترسید. این فقط یک یادگار از پوست هالووین است. Q Experience در واقع یک روش ترسناک برای ایجاد برنامه های ساده و اجرای آنها بر روی دستگاه های واقعی است. دارای گرافیک و مکانیک کشیدن و رها کردن است که ممکن است در یک بازی پیدا کنید.
مورد دیگر آزمایش آلیس بود.
از آنجا که این پروژه توسط ScienceAtHome بود ، قطعاً شامل عناصر گیمیفیکی همراه با علم با این حال ، اگرچه سخت افزار قطعاً مربوط به محاسبه کوانتومی بود ، اما یک کامپیوتر کوانتومی نبود. همچنین ، از نظر طراحی ، بیشتر یک بازی ضد بازی بود تا یک بازی!
سومین آزمایش بزرگ بل بود.