Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <opencv2/opencv.hpp>
- using namespace cv;
- const int alpha_slider_max = 100;
- int alpha_slider;
- double alpha;
- double beta;
- /// Matrices to store images
- Mat src1;
- Mat src2;
- Mat dst;
- void show_histogram(std::string const& name, cv::Mat1b const& image)
- {
- // Set histogram bins count
- int bins = 256;
- int histSize[] = { bins };
- // Set ranges for histogram bins
- float lranges[] = { 0, 256 };
- const float* ranges[] = { lranges };
- // create matrix for histogram
- cv::Mat hist;
- int channels[] = { 0 };
- // create matrix for histogram visualization
- int const hist_height = 256;
- cv::Mat3b hist_image = cv::Mat3b::zeros(hist_height, bins);
- cv::calcHist(&image, 1, channels, cv::Mat(), hist, 1, histSize, ranges, true, false);
- double max_val = 0;
- minMaxLoc(hist, 0, &max_val);
- // visualize each bin
- for (int b = 0; b < bins; b++) {
- float const binVal = hist.at<float>(b);
- int const height = cvRound(binVal*hist_height / max_val);
- cv::line
- (hist_image
- , cv::Point(b, hist_height - height), cv::Point(b, hist_height)
- , cv::Scalar::all(255)
- );
- }
- cv::imshow(name, hist_image);
- imwrite(name+"jpg",hist_image);
- }
- void on_trackbar(int, void*)
- {
- alpha = (double)alpha_slider / alpha_slider_max;
- beta = (1.0 - alpha);
- addWeighted(src1, alpha, src2, beta, 0.0, dst);
- imshow("Linear Blend", dst);
- }
- Mat erozja(const Mat& image,int type,int size){
- Mat dst;
- Mat element = getStructuringElement(type, Size(2 * size + 1, 2 * size + 1),Point(size, size));
- erode(image, dst, element);
- return dst;
- }
- Mat dylatacja(const Mat& image, int type, int size){
- Mat dst;
- Mat element = getStructuringElement(type, Size(2 * size + 1, 2 * size + 1), Point(size, size));
- dilate(image, dst, element);
- return dst;
- }
- int main(int argc, char* argv[])
- {
- Mat img = imread("Lena.png", CV_LOAD_IMAGE_COLOR);
- src1 = imread("Lena.png", CV_LOAD_IMAGE_COLOR);
- src2 = imread("kot.jpg", CV_LOAD_IMAGE_COLOR);
- imshow("Original",img);
- Mat gray_image;
- cvtColor( img, gray_image, CV_BGR2GRAY );
- //grayscale
- imshow("Gray scale",gray_image);
- show_histogram("Histogram gray", gray_image);
- imwrite("Gray_image.jpg",gray_image);
- Mat img_clone = gray_image.clone();
- //equalized
- Mat hist_dest;
- equalizeHist( img_clone, hist_dest );
- imshow("Equalized image",hist_dest);
- show_histogram("Equalized histogram", hist_dest);
- imwrite("Equalized_image.jpg",hist_dest);
- //normalized
- Mat normalized;
- normalize(gray_image,normalized,0,255,CV_MINMAX);
- imshow("Normalized image", normalized);
- show_histogram("Normalized histogram", normalized);
- imwrite("Normalized_image.jpg", normalized);
- if( !src1.data ) { printf("Error loading src1 \n"); return -1; }
- if( !src2.data ) { printf("Error loading src2 \n"); return -1; }
- /// Initialize values
- alpha_slider = 0;
- /// Create Windows
- namedWindow("Linear Blend", 1);
- char TrackbarName[50];
- sprintf( TrackbarName, "Alpha x %d", alpha_slider_max );
- createTrackbar( TrackbarName, "Linear Blend", &alpha_slider, alpha_slider_max, on_trackbar );
- /// Show some stuff
- on_trackbar( alpha_slider, 0 );
- Mat rice = imread("rice-noise.jpg", CV_LOAD_IMAGE_COLOR);
- Mat rice_clean;
- Mat rice_grey;
- //MEDIAN
- medianBlur(rice, rice_clean, 5);
- imshow("Source", rice);
- imshow("Clean", rice_clean);
- imwrite("MedianBlur.jpg",rice_clean);
- Mat rice_clean_gaus;
- //GAUSIAN
- GaussianBlur(rice, rice_clean_gaus, Size(15, 15), 0, 0);
- imshow("Source", rice);
- imshow("Clean", rice_clean_gaus);
- imwrite("GaussianBlur.jpg",rice_clean_gaus);
- cvtColor(rice_clean_gaus, rice, CV_BGR2GRAY);
- threshold(rice, rice_clean, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
- imshow("Source", rice);
- imshow("Clean", rice_clean);
- imwrite("Otsu.jpg",rice_clean);
- Mat erode_image = erozja(gray_image, MORPH_ELLIPSE, 3);
- imshow("Erode Ellipse", erode_image);
- imwrite("Erode_ellipse.jpg",erode_image);
- erode_image = erozja(gray_image, MORPH_CROSS, 3);
- imshow("Erode Cross", erode_image);
- imwrite("Erode_cross.jpg", erode_image);
- erode_image = erozja(gray_image, MORPH_RECT, 3);
- imshow("Erode Rect", erode_image);
- imwrite("Erode_rect.jpg", erode_image);
- Mat dilate_image = dylatacja(gray_image,MORPH_CROSS,3);
- imshow("Dilate Cross", dilate_image);
- imwrite("Dilate_cross.jpg", dilate_image);
- dilate_image = dylatacja(gray_image, MORPH_ELLIPSE, 3);
- imshow("Dilate Ellipse", dilate_image);
- imwrite("Dilate_ellipse.jpg", dilate_image);
- dilate_image = dylatacja(gray_image, MORPH_RECT, 3);
- imshow("Dilate Rect", dilate_image);
- imwrite("Dilate_rect.jpg", dilate_image);
- waitKey(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement