Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "C:\Lib\opencv-release\include\opencv2\opencv.hpp"
- #include "C:\Lib\opencv-release\include\opencv2\highgui.hpp"
- #include "C:\Lib\opencv-release\include\opencv2\imgproc.hpp"
- #include "C:\Lib\opencv-release\include\opencv2\core.hpp"
- #include <iostream>
- #include <stdio.h>
- #include <stdlib.h>
- #include <vector>
- /*
- Autoren: Lennart Buchtzik, Dania Blum, Tim Schnakenberg
- */
- using namespace cv;
- using namespace std;
- int main()
- {
- //Bild einlesen, Variablen deklarieren
- Mat src = imread("C:/Users/Dania/Pictures/PetraJordan.jpg");
- Mat gray_image;
- Mat blur_image;
- Mat erode_image;
- Mat thold_image;
- Mat dil_image;
- //Bild in Grauwertbild umwandeln
- cvtColor(src, gray_image, CV_BGR2GRAY);
- //Blur-Effekt auf das Graubild anwenden
- for(int i = 1; i < 8; i++)
- {
- blur(gray_image, blur_image, Size(i,i));
- }
- //Threshold-Bild erzeugen
- threshold(gray_image, thold_image, 95.0, 255.0, CV_THRESH_BINARY);
- //Erode-Bild erzeugen
- int erosion_size = 1;
- Mat element = getStructuringElement(MORPH_ERODE, Size(2*erosion_size+1, 2*erosion_size+1), Point(erosion_size, erosion_size));
- erode(thold_image, erode_image, element);
- //Dilation-Bild erzeugen
- int dilation_size = 1;
- Mat dilElement = getStructuringElement(MORPH_DILATE, Size(2*dilation_size+1, 2*dilation_size+1), Point(dilation_size, dilation_size));
- dilate(thold_image, dil_image, dilElement);
- //---------------AUFGABE 2--------------------------------------------------------------------------------
- //Parameter
- int histSize = 256;
- float range[] = { 0, 255 }; //Grauwerte gehen von 0 bis 255
- const float *ranges[] = { range };
- // Histogram berechnen
- MatND hist;
- calcHist( &gray_image, 1, 0, Mat(), hist, 1, &histSize, ranges, true, false );
- //ausgabe des Histograms in Command und Berechnung von Schwarz und Weiß Anteilen für 2B
- double total;
- int thresh_v = 95;
- int black = 0;
- int white = 0;
- total = gray_image.rows * gray_image.cols;
- for( int h = 0; h < histSize; h++ ){
- if (h<thresh_v){
- float binVal = hist.at<float>(h);
- black = black += binVal;
- cout<<" "<<binVal;
- } else {
- float binVal = hist.at<float>(h);
- white = white += binVal;
- cout<<" "<<binVal;
- }
- }
- // Histogram ausgeben lassen
- int hist_w = 512; int hist_h = 400; //Größe des Fensters
- int bin_w = cvRound( (double) hist_w/histSize );
- Mat histImage( hist_h, hist_w, CV_8UC1, Scalar( 0,0,0) );
- normalize(hist, hist, 0, histImage.rows, NORM_MINMAX, -1, Mat() );
- for( int i = 1; i < histSize; i++ )
- {
- line( histImage, Point( bin_w*(i-1), hist_h - cvRound(hist.at<float>(i-1)) ) ,
- Point( bin_w*(i), hist_h - cvRound(hist.at<float>(i)) ),
- Scalar( 255, 0, 0), 2, 8, 0 );
- }
- //_______________Aufgabe 2b_________________________________________________________________
- double count_ges = 0;
- double black_proz = 0;
- double white_proz = 0;
- count_ges = black + white;
- black_proz = (black / count_ges) * 100;
- white_proz = (white / count_ges) * 100;
- cout<<endl;
- cout<<"Werte nach Threshold "<< thresh_v << " :" <<endl;
- cout<<"Pixel die schwarz sind: "<< black<<endl;
- cout<<"Pixel die weiss sind: "<< white<<endl;
- cout<<"Prozentuale Ausgabe: "<<endl;
- cout<<"Schwarz: " << black_proz <<endl;
- cout<<"Weiss: " << white_proz <<endl;
- //---------------ALLE AUSGABEN---------------------------------------------------------------------------
- //Ausgeben der Bilder
- namedWindow("Image", CV_WINDOW_AUTOSIZE);
- imshow("Image", src);
- namedWindow("BlurImage", CV_WINDOW_AUTOSIZE);
- imshow("BlurImage", blur_image);
- namedWindow("ThresholdImage", CV_WINDOW_AUTOSIZE);
- imshow("ThresholdImage", thold_image);
- namedWindow("ErodeImage", CV_WINDOW_AUTOSIZE);
- imshow("ErodeImage", erode_image);
- namedWindow("DilatedImage", CV_WINDOW_AUTOSIZE);
- imshow("DilatedImage", dil_image);
- namedWindow( "Result", 1 );
- imshow( "Result", histImage );
- waitKey(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement