Пример #1
0
        private void btnSearch_Click(object sender, EventArgs e)
        {
            //Tách các Rectangle chứa đối tượng (hình dạng) ra khỏi ảnh -> lưu vào 1 mảng (rectangle)
            //Duyệt qua mảng -> xử lý với từng đối tượng cụ thể
            // - Với mỗi đối tượng cần tìm -> tìm 4 lần ứng với 4 trường hợp (xoay)
            // - Tìm trục chính, trục phụ, tâm sai
            // - Chuẩn hóa xoay
            // - Resize ảnh về kích thước sao cho trục chính luôn cố định = 192px
            // - Phủ lưới lên đối tượng này -> trích chọn -> dãy nhị phân

            //Đọc file đặc trưng (XML) --> lưu vào List
            FeatureController objCtrl = new FeatureController(mPath);

            mListFeatureDB = objCtrl.GetAll();

            //So sánh, neu do do OK --> luu vao mang
            List <FeatureInfo> listResult = new List <FeatureInfo>();

            for (int k = 0; k < 2; k++)
            {
                for (int i = 0; i < mListFeatureDB.Count; i++)
                {
                    //Neu do sai khac thoa man muc cho phep && chua co trong Result --> Add vao result
                    if (SimilitaryMeasure(mFeatureQuery[k], mListFeatureDB[i]) <= ZinImageGrid.Threshold && !listResult.Contains(mListFeatureDB[i]))
                    {
                        listResult.Add(mListFeatureDB[i]);
                    }
                }
            }
            //Sap xep listResult de uu tien SM nho len tren

            //Hien thi Ket qua
            lblResultCount.Text = listResult.Count + " (ảnh)";

            Graphics gr = CreateGraphics();// Khởi tạo đồ hoạ trên form chính
            //gr.Clear(this.BackColor);

            Bitmap bmpTemp;
            int    x = 308;
            int    y = 100;

            for (int i = 0; i < listResult.Count; i++)
            {
                //Lay tung anh ra
                bmpTemp = (Bitmap)Bitmap.FromFile(listResult[i].ImagePath);

                gr.DrawImage(bmpTemp, x + 220 * i, y);
            }
        }