1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÀI TẬP LỚN XỬ LÝ ẢNH

11 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 356,39 KB

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LAM TPHCM KHOA CƠ KHÍ – CƠNG NGHỆ BÀI TẬP LỚN XỬ LÝ ẢNH GV hướng dẫn : Th.s Trần Thị Kim Ngà Chú ý: Các tập Sinh viên giải nên mang tính tham khảo TP.HCM ngày 28 tháng năm 2016 Bài Viết Code Load ảnh hiển thị ảnh, Thu cammera (Webcam) hiển thị a Load ảnh hiển thị ảnh //#include "stdafx.h" #include #include #include using namespace cv; int main() { Mat src = imread("Bai1.jpg"); if (!src.data) return -1; imshow("src", src); //Hien thi anh waitKey(0); return 0; } b Thu cammera (Webcam) hiển thị //#include "stdafx.h" #include "opencv2/opencv.hpp" using namespace cv; int main(int, char**) { VideoCapture cap(0); // Mở Camera mặc định if(!cap.isOpened()) // Kiểm tra không thành cơng khỏi chương trình return -1; namedWindow("Cua so Camera",1); for(;;) { Mat frame; cap >> frame; // Có khung từ Camera imshow("Cua so Camera", frame); if(waitKey(30) >= 0) break; } // Máy tính chạy tự động Camera return 0; } Bài Hiển thị dán thêm icon vào ảnh #include #include #include int main() { cv::Mat image1; cv::Mat image2; image1= cv::imread("boldt.jpg"); image2= cv::imread("rain.jpg"); if (!image1.data) return 0; if (!image2.data) return 0; cv::Mat result; // Vị trí logo [Lệnh quan trọng 2] cv::addWeighted(image1,0.7,image2,0.9,0.,result); // read images cv::Mat image= cv::imread("boldt.jpg"); cv::Mat logo= cv::imread("logo.bmp"); // Quan // define image ROI cv::Mat imageROI; imageROI= image(cv::Rect(1,1,logo.cols,logo.rows)); // Thêm logo vào, số 1.0 độ sáng tối, 0.3 độ suốt cv::addWeighted(imageROI,1.0,logo,0.3,0.,imageROI); // HIỂN THỊ ẢNH cv::namedWindow("ANH CO LOGO"); cv::imshow("ANH CO LOGO",image); cv::waitKey(); return 0; } Bài Chuyển ảnh màu xám Chuyển đổi không gian màu nhị phân //#include "stdafx.h" #include #include #include using namespace cv; int main() { Mat AnhGoc = imread("Bai3.jpg"); if (!AnhGoc.data) return -1; // Tạo ảnh nhị phân từ ảnh gốc, xám -> nhị phân Mat AnhNhiPhan; cvtColor(AnhGoc, AnhNhiPhan, CV_BGR2GRAY); //Chuyển qua ảnh xám threshold(AnhNhiPhan, AnhNhiPhan, 40, 255, CV_THRESH_BINARY); //Chuyển qua ảnh nhị phân imshow("Anh Goc", AnhGoc); imshow("Anh Nhi Phan", AnhNhiPhan); waitKey(0); return 0; } Bài Tìm lược đồ xám – cân Tinh histogram anh xam va hien thi bang thi histogram // Nếu ảnh có histogram lệch phía phải biểu đố ta nói ảnh thừ sáng, lệch phía trái thiếu sáng Với ảnh màu ta tính tốn histogram cho kênh #include #include #include #include class Histogram1D { private: int histSize[1]; float hranges[2]; const float* ranges[1]; int channels[1]; public: Histogram1D() { histSize[0]=256; hranges[0] =0.0; hranges[1] =255.0; ranges[0] =hranges; channels[0] =0; } cv::Mat getHistogram(const cv::Mat &image) { cv::MatND hist; cv::calcHist(&image, 1, channels, cv::Mat(), hist, 1, histSize, ranges); return hist; } cv::Mat getHistogramImage(const cv::Mat &image) { cv::MatND hist = getHistogram(image); double maxVal =0; double minVal =0; cv::minMaxLoc(hist, &minVal, &maxVal, 0,0); cv::Mat histImg(histSize[0], histSize[0], CV_8U, cv::Scalar(255)); int hpt =static_cast (0.9*histSize[0]); for(int h=0; h 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 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 phep gian no", src2); waitKey(0); } // Code tham khảo #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" using namespace cv; int main() { Mat AnhGoc = imread("bai5.jpg"); Mat AnhXam = imread("bai5.jpg", CV_LOAD_IMAGE_GRAYSCALE); Mat AnhGian; // Anh gian no (dilation) Mat AnhNhiPhan; //Anh nhi phan threshold(AnhXam, AnhNhiPhan, 220, 255, CV_THRESH_BINARY); cv::Mat kernel = cv::getStructuringElement(MORPH_CROSS, Size(5,5)); cv::morphologyEx(AnhNhiPhan, AnhGian, MORPH_ERODE, kernel); imshow("ANH GOC", AnhGoc); imshow("ANH XAM", AnhXam); imshow("ANH NHI PHAN", AnhNhiPhan); imshow("ANH GIAN", AnhGian); waitKey(0); return 0; } // Code tham khảo //#include "stdafx.h" #include #include #include using namespace cv; int main() { Mat src = imread("3.jpg"); Mat bw; cvtColor(src, bw, CV_BGR2GRAY); threshold(bw, bw, 40, 255, CV_THRESH_BINARY); imshow("bw", bw); Mat enrode; cv::erode(bw,enrode,cv::Mat(),cv::Point(-1,-1),3); imshow ("erode",enrode); waitKey(0); return 0; } Bài Lọc ảnh thông thấp – thông cao #include #include #include #include "stadafx.h" int main() { cv::Mat imageSrc = imread("ANH", CV_LOAD_IMAGE_COLOR); cv::Mat imageDst; cv::Mat kernel = cv::Mat::ones(Size(3, 3), CV_32F) / (float) cv::filter2D(imageSrc, imageDst, imageSrc.depth(), kernel, Point(-1, -1), 0, BORDER_DEFAULT); imshow("Image Srd", imageSrc); imshow("Image Dst", imageDst); cv::waiKey(0); return(0); } Bài Lọc Canny – Tìm Contour đối tượng a Lọc Canny //#include "stdafx.h" #include "opencv2/opencv.hpp" using namespace cv; int main(int, char**) { VideoCapture cap(0); // Mở Camera mặc định if(!cap.isOpened()) // Kiểm tra không thành cơng khỏi chương trình return -1; Mat edges; namedWindow("edges",1); for(;;) { Mat frame; cap >> frame; // Có khung từ Camera cvtColor(frame, edges, CV_BGR2GRAY); GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5); Canny(edges, edges, 0, 30, 3); imshow("edges", edges); if(waitKey(30) >= 0) break; } // the camera will be deinitialized automatically in VideoCapture destructor return 0; } b Tìm Contour đối tượng #include #include #include using namespace cv; int main() { Mat src = imread("3.jpg"); if (!src.data) return -1; //imshow("scr", src1); cvNamedWindow("scr1"); cvNamedWindow("scr2"); Size size(640,480); Mat src1; resize(src,src1,size); //imshow("scr", src); Mat imgHSV; cvtColor(src1, imgHSV, CV_BGR2HSV); Mat bw; inRange(imgHSV, Scalar(15,50,20), Scalar(35,255,255), bw); imshow("scr1", bw); std::vectorcontours; //bw=1-bw; cv::Mat dist_8u; bw.convertTo(dist_8u,CV_8U); cv::findContours(dist_8u,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE); cv::drawContours(src1,contours,-1,cv::Scalar(0,255,0),2); imshow("scr2", src1); waitKey(0); return 0; } CÁC CODE BỔ SUNG BÀI // #include "stdafx.h" #include "highgui.h" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include using namespace cv; using namespace std; int main( int argc, const char** argv ) { Mat img = imread("1.bmp"); //open and read the image if (img.empty()) { cout

Ngày đăng: 25/01/2022, 14:05

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w