القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة. اقرأ أكثر.

يتطلب عمل رسم جميل الكثير من الوقت والجهد. لحسن الحظ ، تطورت البرمجة بحيث يمكنك الآن بسهولة تحويل الصور وإنشاء تصميمات جميلة. إحدى التقنيات الرائعة التي يمكنك تنفيذها هي تحويل صورة إلى رسم رقمي.

في حين أن الرسم الميكانيكي لن يبدو تمامًا مثل الرسم بالقلم الرصاص الخاص بك ، إلا أن الإخراج لا يزال يستحق التجربة. تعرف على كيفية برمجة مثل هذا التطبيق باستخدام وحدة OpenCV بلغة Python فائقة الصداقة.

وحدة OpenCV

OpenCV عبارة عن مكتبة مفتوحة المصدر تم تطويرها وصيانتها بواسطة Intel لطرق رؤية الكمبيوتر المستخدمة في معالجة الصور ورؤية الكمبيوتر. يسهل على المستخدمين إنشاء تطبيقات محسّنة ، والتفاعل مع الصور ومقاطع الفيديو في الوقت الفعلي ، واختيار الخوارزمية المثالية لاحتياجاتهم.

بعض التطبيقات الشائعة لـ تتضمن OpenCV خاصية اكتشاف الوجه، تتبع تلقائي للوجه في التصوير السينمائي ، فلاتر الوسائط الاجتماعية ، التعرف على لوحة ترخيص السيارة، ومراقبة الدوائر التلفزيونية المغلقة. لاستخدام وحدة OpenCV في Python ، افتح Terminal واكتب الأمر التالي:

instagram viewer
نقطة تثبيت opencv-python

كيفية تحويل أي صورة إلى رسم باستخدام بايثون

لتحويل صورتك المفضلة إلى رسم رقمي ، ابدأ بوضعها في نفس المجلد مثل برنامج Python الجديد ، لسهولة الرجوع إليها. ثم ابدأ في بناء برنامجك باتباع الخطوات التالية.

يتوفر رمز المثال هذا في ملف مستودع جيثب وهو مجاني لك لاستخدامه بموجب ترخيص MIT.

الخطوة الأولى هي استيراد وحدة OpenCV إلى بيئتك. بمجرد توفر OpenCV ، يمكنك استخدام وظائفه لتنفيذ المهام المختلفة. قم بتمرير مسار ملف صورتك إلى ملف أنا أقرأ() وظيفة لتحميله. قم بتخزين صورتك في متغير يسمى الصورة 1 هنا - للرجوع إليها في المستقبل.

قم بتخزين عنوان النافذة في متغير مسمى window_name. سيكون هذا مفيدًا عندما تختار عرض الصورة باستخدام ملف imshow () وظيفة. تتطلب هذه الوظيفة معلمتين: العنوان والصورة التي تريد عرضها.

يستورد السيرة الذاتية 2

image1 = cv2.imread ("image.jpg")
window_name = "الصورة الفعلية"
cv2.imshow (window_name ، image1)

بمجرد حصولك على الصورة المطلوبة ، ستحتاج إلى إجراء خمس عمليات لتحويلها إلى رسم تخطيطي. أولاً ، قم بتحويل الصورة الملونة إلى درجات رمادية. يمكنك القيام بذلك باستخدام اللون () وظيفة. تأخذ هذه الوظيفة الصورة التي تريد تغيير ألوانها وكود التحويل مثل COLOR_BGR2GRAY.

grey_img = cv2.cvtColor (image1، cv2.COLOR_BGR2GRAY)

بمجرد الحصول على صورة ذات تدرج رمادي ، اقلب ألوانها. في هذه المرحلة ، تحتاج إلى فهم كيفية تكوين الكمبيوتر للصورة. تتكون الصورة من العديد من وحدات البكسل الصغيرة بكثافة متفاوتة. في صورة ملونة ، يحتوي كل بكسل على مكونات حمراء وخضراء وزرقاء ، وتتراوح كثافة كل منها من 0 إلى 255.

في الصورة ذات التدرج الرمادي ، لا يوجد سوى ظلال من اللون الرمادي ، لذلك تختلف شدة البكسل بين 0 و 1. لعكس شدة البكسل لهذه الصورة ، قم بتمرير الصورة ذات التدرج الرمادي إلى bitwise_not () وظيفة.

كما يوحي الاسم ، تقوم هذه الوظيفة بعكس قيمة كل بكسل إلى مكافئها التكميلي. يتم تعيين كل وحدات البكسل الأكبر من 0 على 0 ، ويتم تعيين كل وحدات البكسل التي تساوي 0 على 255.

عكس = cv2.bitwise_not (grey_img)

بعد قلب شدة البكسل ، يمكنك تجانس الصورة بمساعدة Gaussian Blur. تستخدم عملية Gaussian Blur مرشح Gaussian. مرشح Gaussian هو مرشح تمرير منخفض يسمح فقط للترددات المنخفضة بالمرور ، ويزيل مكون التردد العالي لإشارة أو صورة.

OpenCV's التمويه الضبابي() الدالة تقبل أربعة معلمات. هذه عبارة عن كائن مصفوفة يعمل كصورة مصدر ، و ksize (حجم النواة) ، و sigmaX (الانحراف المعياري للنواة Gaussian).

افترض أن لديك صورة مادية في يدك. إذا أردت طمسها ، يمكنك وضع قطع من الشمع أو ورق الزبدة عليها. يمكنك تخيل النواة على أنها قطعة ورق شفافة. رقميًا ، يحدث هذا بشكل مختلف قليلاً. لتعتيم ، حدة ، وتطبيق تأثيرات أخرى على صورة رقمية ، تقوم بضرب مصفوفة بكثافة وحدات البكسل في الصورة.

يكون ksize دائمًا عددًا فرديًا موجبًا. كلما قمت بزيادة حجم النواة ، يزداد التمويه. لفهم سيجماكس ، افترض أنك تقوم بوضع الشمع على ورقة. عندما تقوم بتطبيق الشمع ، يصبح الورق شفافًا بشكل موحد. وبالمثل ، يجب أن تحافظ على قيم kernel قريبة من نقطة معينة (المتوسط). تحدد قيمة sigmaX الفرق بين المتوسط ​​والقيم الأخرى للبكسل في الصورة.

قم بتمرير الصورة المعكوسة ، وحجم النواة كـ (21 ، 21) و 0 انحراف معياري لوظيفة Gaussian Blur:

طمس = cv2.GaussianBlur (معكوس ، (21, 21), 0)

مرر الصورة غير الواضحة إلى دالة bitwise_not () مرة أخرى لعكسها:

مقلوب بلور = cv2.bitwise_not (طمس)

أخيرًا ، استخدم ملف يقسم() وظيفة وتنفيذ تقسيم لكل عنصر من مصفوفة الصور ذات التدرج الرمادي ومصفوفة الصورة الضبابية المقلوبة بمقياس 256.

رسم = cv2.divide (grey_img ، مقلوب blur ، مقياس =256.0)

تؤدي الوظيفة بشكل أساسي العملية التالية:

defيقسم(grey_img، b، invertedblur =256.0):
يعود (grey_img * scale) / طمس مقلوب

قم بتخزين النتيجة في متغير يسمى الرسم. لحفظ الصورة النهائية ، مرر اسمًا لملف الإخراج وصورة التخطيط إلى ملف imwrite () وظيفة. للتحقق من ذلك ، يمكنك استخدام وظيفة imread () لتحميل صورة الرسم المحفوظة ، وإعطاء عنوان نافذة وعرضها باستخدام وظيفة imshow ().

استخدم ال مفتاح الانتظار () تعمل عن طريق تمرير 0 لعرض نافذة الصورة الأصلية ونافذة الرسم التي تم إنشاؤها حتى تضغط على أي مفتاح.

cv2.imwrite ("sketch.jpeg"، رسم)
الصورة = cv2.imread ("sketch.jpeg")
window_name ="صورة تخطيطية"
cv2.imshow (window_name ، image)
cv2.waitKey (0)

اجمع كل الشفرات معًا ، وسيكون لديك برنامجك جاهزًا.

إخراج عينة من تحويل صورة إلى رسم باستخدام برنامج Python هذا

يمكنك اختيار صورة مناظر طبيعية جميلة وتشغيلها من خلال البرنامج لإنشاء هذا الرسم الرقمي المذهل.

على صورة بورتريه ، يقوم البرنامج بإنشاء الرسم الرقمي التالي.

يمكنك تجربة معلمات الوظيفة حسب رغبتك لإنشاء الرسم الرقمي الذي تريده.

معالجة الصور والرؤية الحاسوبية

معالجة الصور ورؤية الكمبيوتر هما مجالان من مجالات التكنولوجيا وثيقة الصلة. كلاهما ينطوي على تغيير الصور الرقمية للحصول على النتائج المرجوة. تركز معالجة الصور على تحسين الصورة ، بينما تبحث رؤية الكمبيوتر في العثور على الأنماط والأشياء داخل الصورة لفهمها.

Scikit-image هي مكتبة Python أخرى توفر مجموعة متنوعة من وظائف معالجة الصور. يحتوي على العديد من الوحدات النمطية المترجمة مسبقًا والمرشحات والطبقات والتحولات والمزيد. إذا كنت تبحث عن وحدة نمطية لاستخدامها في نماذج التعلم العميق مثل CNN و RNN ، فقد ترغب في استكشاف Torchvision.