جعل دست خط با ترتل پایتون

دوشنبه, ۴ مهر ۱۴۰۱، ۰۲:۰۱ ب.ظ

ایده مسخره ایه ولی در حد سرگرمی خوبه .

برای این پروژه دو اسکریپت جدا وجود داره : 

۱ - capture.py

۲ - write.py

 

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

 

برای ضبط باقی حروف هم به همین ترتیب عمل میکنیم . فقط حروف انگلیسی مد نظرمون هستش فارسی روی این پروژه کار نمیکنه . 

بعد از اینکه ضبط حروف تکمیل شده و فایل مختصات ضبط شده ساخته شد اونو میدیم به اسکریپت write.py  . این اسکریپت میگه چه متنی رو برات بنویسم . مثلا میگم Hossein .بعد میاد تک تک کاراکترای Hossein رو از تو اون فایل مختصاته میبینه چجوری باید بنویسه و مینویستش توی ترتل (turtle) .

بریم تستش کنیم . میخوایم متن Ho55ein.blog.ir رو بنویسه برامون . 

پس اول capture.py رو اجرا میکنیم تا ضبط حرکات مربوط به این حروف یعنی H, o , 5 , e , i , n , . , l , b , g , r رو انجام بدیم . 

نکته : برای بررسی فشرده شدن کلیدای کیبورد از کتابخونه keyboard استفاده شده که در لینوکس برای کارکرد صحیح نیاز به اجرا با دسترسی root هست (با sudo اجرا کنید) ولی تو ویندوز فکر نمیکنم دسترسی ادمین بخواد .

اول ازم میپرسه نتیجه ضبط حرکات رو تو چه فایلی ذخیره کنم (تصویر بالا‌)

یه اسمی بهش میدم و اینتر میزنم بعد میگه چه کاراکتری رو میخوای ضبط کنی :

بعد از اینکه کاراکتر مورد نظرمو وارد کردم ، شروع به ضبط کردن میکنه . 

نوشتنش یه فوت خاصی داره . دو تا قانون باید رعایت بشه وقتی داره ضبط میشه :

۱ - همیشه اخر هر حرف رو باید جوری بکشیم که برسه روی خط (خط فرضی که روش داریم حروف رو مینویسیم)

۲ - فقط اون مختصاتی ضبط میشه که حین کشیدنشون کلیذ CTRL رو نگه داشته باشیم. دلیل این مورد اینه که بعضی از حروف پیوسته نیستن و حداقل یه بار باید اون قلم نوری از روی سطح برداشته بشه . مثل i که یه نقطه باید بالاسرش بزاریم . برای اینکار CTRL رو میگیریم و خود بدنه i رو میکشیم . بعد دستمونو از CTRL بر میداریم و میبریم به مکانی که میخوایم نقطه شو بزاریم (بالاسرش) . دوباره CTRL رو میگیریم و نقطشو میزاریم . 

نهایتا دوباره CTRL رو برمیداریم و موس یا قلم رو میبریم روی پایین خط فرضی که روش داشتیم i رو مینوشتیم (پایین حرف i) و یه بار کنترل رو میزنیم تو این نقطه تا به عنوان ته کار ضبط بشه (رعایت قانون ۱)

 

بگذریم از این قانونا . 

نهایتا من همه حروفو ضبط کردم . 

حالا write.py  رو اجرا میکنم . 

ازم فایل مختصات که در مرحله قبل ساختیمو میخواد :

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

 

و نهایتا : 

 

شروع میکنه به کشیدن و میکشه . 

اینم یه مقایسه از دست خطی که خودم نوشتم با اون چیزی که اسکریپت نوشت (نارنجیه رو دستی نوشتم اون مشکیه رو کامپیوتر کشید )

 

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

 

اره خلاصه ما جعل امضا هم انجام میدیم :)

 

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

چقد این آدمکه شبیه تامی شلبی شد ...

 

فابل زیپ پروژه :

دریافت

 

موافقین ۷ مخالفین ۰

جالب بود 😂👏

سپاس 😅 ...

قدم بعدی اینه که یه چند تا شبکه عصبی درست کنی و چند بار از کاربر بخوای که دست خط های مختلف وارد کنه و وقتی تموم شد خودش با یه فونت جدید بنویسه! یه مقدار عدم قطعیت هم باید یه جاییش اضافه بشه که تکراری نشه کلمات! :)

دقیقا اینو کپی میکنم توی todo پروژه برای وقتی که یادگیری ماشین یاد گرفتم :) ...
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">