|
Tài trợ cho PIC Vietnam |
Xử lý ảnh Các thuật toán xử lý ảnh dùng trong robot |
|
Ðiều Chỉnh | Xếp Bài |
|
07-06-2013, 05:49 PM | #1 |
Đệ tử 1 túi
Tham gia ngày: Jan 2013
Bài gửi: 21
: |
cầu cứu nhận diện biển số xe
các pro giải thích giùm em với.càng kỹ càng tốt.Em đang rất rất cần.cảm ơn rất nhiều
Image<Bgr, Byte> img = new Image<Bgr, Byte>(image); // Ảnh đầu vào đưa về dạng Image; Image<Gray, Byte> image_gray = img.Convert<Gray, Byte>();// Hàm chuyển ảnh xám; image_gray = image_gray.SmoothGaussian(5); image_gray = image_gray.SmoothMedian(5); Image<Gray, Byte> blur = image_gray.SmoothBlur(5, 5);// Tiến hành giảm nhiễu; CvInvoke.cvSobel(blur, blur, 1, 0, 3);//Phát hiện biên dọc; CvInvoke.cvThreshold(blur, blur, 0, 255, Emgu.CV.CvEnum.THRESH.CV_THRESH_OTSU);//Phân ngưỡng Otsu CvInvoke.cvErode(blur, blur, IntPtr.Zero, 1); CvInvoke.cvDilate(blur, blur, IntPtr.Zero, 2);// Erode và dilate ảnh sau phân ngưỡng StructuringElementEx element = new StructuringElementEx(17, 3, 8, 2, Emgu.CV.CvEnum.CV_ELEMENT_SHAPE.CV_SHAPE_RECT); CvInvoke.cvMorphologyEx(blur, blur, IntPtr.Zero, element, Emgu.CV.CvEnum.CV_MORPH_OP.CV_MOP_CLOSE, 1);// Thuật toán Closing. |
29-08-2014, 11:53 AM | #2 |
Nhập môn đệ tử
Tham gia ngày: Nov 2013
Bài gửi: 4
: |
Giải thích cái thuật toán của OpenCV trong code bạn đưa hả? Thấy có cmt giải thích trong đó rồi mà, giải thích gì nữa bạn?
|
29-08-2014, 12:14 PM | #3 |
Nhập môn đệ tử
Tham gia ngày: Nov 2013
Bài gửi: 4
: |
Cho bạn cái hàm để bạn tham khảo
int FindPlate() { Mat src1 = imread("images\\BienSo.jpg", CV_LOAD_IMAGE_COLOR); if(!src1.data) return 0; Mat src2 = src1.clone(); // copy anh Mat gray, binary; cvtColor(src1, gray, CV_BGR2GRAY); threshold(gray, binary, 100, 255, CV_THRESH_BINARY); imshow("Anh nhi phan goc", binary); Mat morpho; Mat element = getStructuringElement(MORPH_CROSS, Size(3,3), Point(1,1)); erode(binary, morpho, element, Point(-1,-1), 3); imshow("Anh sau khi thuc hien phep gian no", morpho); vector<vector<Point> > contours1; findContours(binary, contours1, CV_RETR_LIST, CV_CHAIN_APPROX_NONE ); for(size_t i = 0; i < contours1.size(); i++) { Rect r = boundingRect(contours1[i]); if(r.width/(double)r.height > 3.5f && r.width/(double)r.height < 4.5f) rectangle(src1, r, Scalar(0, 0, 255), 2, 8, 0); else rectangle(src1, r, Scalar(0, 255, 0), 1, 8, 0); } imshow("Ket qua phat hien truoc phep gian no", src1); vector<vector<Point> > contours2; findContours(morpho, contours2, CV_RETR_LIST, CV_CHAIN_APPROX_NONE ); for(size_t i = 0; i < contours2.size(); i++) { Rect r = boundingRect(contours2[i]); if(r.width/(double)r.height > 3.5f && r.width/(double)r.height < 4.5f) rectangle(src2, r, Scalar(0, 0, 255), 2, 8, 0); else rectangle(src2, r, Scalar(0, 255, 0), 1, 8, 0); } imshow("Ket qua phat hien sau khi phep gian no", src2); } |
07-06-2019, 03:48 PM | #4 |
Nhập môn đệ tử
Tham gia ngày: Jun 2014
Bài gửi: 4
: |
bạn có thể hướng dẫn cụ thể hơn một chút được không mình là người mới, cảm ơn bạn
__________________
https://nhacdj.com.vn/ Nghe Nhạc DJ Với Hàng Triệu Bản Nhạc DJ , Nonstop Việt Mix và MV Bản Quyền Chất Lượng Cao, Tương Thích Tốt Trên Các Thiết Bị Di Động Nghe & Download Nhạc DJ, Nonstop Dù Bạn Ở Bất Cứ Đâu. |
|
|