• 0

كيف أتعامل مع الصور باستخدام سي شارب وماتلاب؟

أريد دروس ومصادر للتعامل مع الصور باستخدام لغات سي شارب وماتلاب، حيث أريد معالجة هذه الصور والتعرف على الوجوه، فكيف أستطيع فعل ذلك؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يمكنك معالجة الصور بسهولة عبر استخدام المكتبات القياسية للغة سي شارب كما في هذا المثال الذي سيغيّر ألوان الصورة إلى الأبيض والأسود:

public void SetGrayscale()
{
    	Bitmap temp = (Bitmap)_currentBitmap;
         Bitmap bmap = (Bitmap)temp.Clone();
         Color c;
         for (int i = 0; i < bmap.Width; i++)
         {
                 for (int j = 0; j < bmap.Height; j++)
                    {
                          c = bmap.GetPixel(i, j);
                          byte gray = (byte)(.299 * c.R + .587 * c.G + .114 * c.B);

                        bmap.SetPixel(i, j, Color.FromArgb(gray, gray, gray));
                    }
         }
         _currentBitmap = (Bitmap)bmap.Clone();
}

لمزيد من الدروس حول معالجة الصور باستخدام لغة سي شارب فأنصحك بهذا الدرس.

أما للغة ماتلاب فأنصحك بهذه الدروس حول معالجة الصورة.

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

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

تقينة التعرف على الوجه أو Face Detection، هي من التقنيات التي لا نتمكن منها  بالاعتماد على لغة برمجة واحدة، بل تستلزم توفّر مكتبات متخصصة في هذا المجال، لتقوم بوظيفة مقارنة صورتين لوجهين مثلا والعودة بنتيجة التشابه أو عدم ذلك، من بين المكتبات  المتصدرة لهذا المجال، مكتبةOpenCV، حيث يتم مقارنة العديد من الخصائص قبل تحديد هل الصورتين متشابهتين أم لا.

Screenshot from 2016-06-07 18:41:08.png

مثال لشفرة تعمل على التعرف على الوجه ب#C:

using System;
using System.Windows.Forms;
using System.Drawing;
using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure;
using Emgu.CV.CvEnum;

namespace opencvtut
{
    public partial class Form1 : Form
    {
                private Capture cap;
                private HaarCascade haar;

        public Form1()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
                using (Image<Bgr, byte> nextFrame = cap.QueryFrame())
                {
                        if (nextFrame != null)
                        {
                                // there's only one channel (greyscale), hence the zero index
                                //var faces = nextFrame.DetectHaarCascade(haar)[0];
                                Image<Gray, byte> grayframe = nextFrame.Convert<Gray, byte>();
                                var faces =
                                        grayframe.DetectHaarCascade(
                                                haar, 1.4, 4,
                                                HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,
                                                new Size(nextFrame.Width/8, nextFrame.Height/8)
                                                )[0];

                                foreach (var face in faces)
                                {
                                        nextFrame.Draw(face.rect, new Bgr(0,double.MaxValue,0), 3);
                                }
                                pictureBox1.Image = nextFrame.ToBitmap();
                        }
                }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // passing 0 gets zeroth webcam
                        cap = new Capture(0);
            // adjust path to find your xml
                        haar = new HaarCascade(
                "..\\..\\..\\..\\lib\\haarcascade_frontalface_alt2.xml");
        }
    }
}

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن