Chương trình xử lý ảnh

Một phần của tài liệu ĐỒ án tốt NGHIỆP nghiên cứu, thiết kế điều khiển hệ thống phân loại sản phẩm ứng dụng xử lý ảnh (Trang 58 - 60)

- a, Chương trình chụp ảnh từ camera

- Đây là phần kết nối giữa máy tính với camera sử dụng thư viện Pylon. using (Camera camera = new Camera())

- { - Console.WriteLine("Using - camera{0}.”,camera.CameraInfo[CameraInfoKey.M - odelName]); - camera.CameraOpened += Coníiguration.AcquireContinuous; - camera.Open();

- camera.Parameters[PLCameraInstance.MaxNumBuffer].SetValue(5);. - camera. StreamGrabber. Start();

- // Wait for an image and then retrieve it. A timeout of 5000 ms is used. IGrabResult grabResult =

- camera.StreamGrabber.RetrieveResult(3000, - T imeoutHandling. ThrowException);

- byte[] buffer = grabResult.PixelData as byte[];

- ImagePersistence. S ave(ImageF ileF ormat.Bmp, "test.bmp", grabResult);

- Image<Bgr, byte> tu1 = new Image<Bgr, byte>("test.bmp"); camera. StreamGrabber. Stop();

- camera.Close();

- }

- b, Các hàm dùng để xử lý ảnh

- Dưới đây là các hàm xử lý ảnh và code được sử dụng trong đồ án:

- Hàm cắt ảnh theo vị trí và kích thước: : dx và dy là vị trí bắt đầu cắt ảnh, w và h là kích thước chiều dài và chiều rộng của ảnh muốn cắt.

- myROI(dx, dy, w, h) :

- GaussianBlur: Lọc ảnh (làm mịn ảnh, làm mờ ảnh), sử dụng lý thuyết hàm Gaussian để tính toán việc chuyển đổi mỗi Pixel của hình.

- GaussianBlur(image, image, Size2d(3, 3), 2); - Convert<color type, byte>() : Chuyển đổi hệ màu

- Image<Gray, byte> cropIn = img.Convert<Gray, byte>()

- Threshold: Phân ngưỡng ảnh. Nếu pixel có giá trị lớn hơn giá trị ngưỡng thì nó được gán một giá trị (thường là 1), ngược lại nhỏ hơn giá trị ngưỡng thì được gán một giá trị khác (thường là 0).

- CvInvoke. Thre shold(cropIn, cropOut,250,255, Emgu. CV. CvEnum. Thre shol dType.BinaryInv);

- íindContours: Xác định đường biên

- CvInvoke.FindContours(cropOut,contours,hier,Emgu.CV.CvEnum.RetrTy pe.List,Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple); - minAreaRect: Tìm hình chữ nhật nhỏ nhất bao quanh đường viền kể cả

dưới dạng xoay

- RotatedRect rect = CvInvoke.MinAreaRect(contours[i]);

- DrawContours: Vẽ đường viền xung quanh hình và hiển thị lên ảnh

- CvInvoke.DrawContours(img, contours, i, new MCvScalar(120, 0, 120), 15);

- CvInvoke.ArcLength(contours[i], true);

- Cvlnvoke.ApproxPolyDP : Hàm xấp xỉ đa giác, dùng để tìm ra 4 đỉnh của hình chữ nhật

- CvInvoke.ApproxPolyDP(contours[i], approx, 0.02 * perimeter, true);

- CHƯƠNG 6 : THIẾT KẾ CHƯƠNG TRÌNH ĐIỀU KHIỂN VÀ GIÁM SÁT TAY MÁY

Một phần của tài liệu ĐỒ án tốt NGHIỆP nghiên cứu, thiết kế điều khiển hệ thống phân loại sản phẩm ứng dụng xử lý ảnh (Trang 58 - 60)