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); } }