Şub
26
2012

OpenGl Örnekleri

opengl

opengl

OpenGL ile resmi blurlaştırma ve  resmin histogramını ve ortalamasını bulmak  için yapılmış bir örnektir.

Kodlar , Ekran Çıktıları ve Proje

Kodlar:

#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <opencv\cvaux.h>
#include<iostream>

// harun balta  yapımıdır ...
// kopyalamakve kullanmak yasaktır...

#pragma comment(lib,"opencv_core220d.lib")
#pragma comment(lib,"opencv_highgui220d.lib")
#pragma comment(lib,"opencv_video220d.lib")
#pragma comment(lib,"opencv_ml220d.lib")
#pragma comment(lib,"opencv_legacy220d.lib")
#pragma comment(lib,"opencv_imgproc220d.lib")
using namespace cv;

int main()
{

	IplImage* img1 = cvLoadImage( "sivassporResim.jpg");
	cvNamedWindow( "Resim İlk Hali", CV_WINDOW_AUTOSIZE);   // resmin windows penceresinde açılması
	cvShowImage("Resim İlk Hali", img1);

	cvWaitKey(0);
	cvReleaseImage( &img1 ); // resimin adresi
	cvDestroyWindow( "Resim İlk Hali" );

	IplImage* img1Threshold;
	IplImage* gray1;
	IplImage* gray1Threshold;
	int threshold = 100, maxValue = 260;
	int thresholdType = CV_THRESH_BINARY;
	img1 = cvLoadImage("sivassporResim.jpg", 1);

	img1Threshold = cvCloneImage( img1 );

	gray1 = cvCreateImage( cvSize(img1->width, img1->height), IPL_DEPTH_8U, 1 );   // resmin yüksekliğini ve genişiliğini ayarlama

	cvCvtColor( img1, gray1, CV_BGR2GRAY );

	gray1Threshold = cvCloneImage( gray1 );

	cvNamedWindow( "Resim", 1 );
	cvShowImage( "Resim", img1 );
	cvNamedWindow( "Resim Griye Çevrilmiş Hali  ", 1 );
	cvShowImage( "Resim Griye Çevrilmiş Hali ", gray1 );

	cvThreshold(img1, img1Threshold, threshold, maxValue, thresholdType);
	cvThreshold(gray1, gray1Threshold, threshold, maxValue, thresholdType);

	cvWaitKey(0);

	IplImage* img  = cvLoadImage("sivassporResim.jpg");

		if( !img )			// dosyanın bulunup bulunmadığını kontrol et!
	return -1;

	IplImage* gray = cvCreateImage( cvGetSize(img), 8, 1 );
	IplImage* eq_gray = cvCreateImage( cvGetSize(img), 8, 1 );
	IplImage *hist_img = cvCreateImage(cvSize(300,240), 8, 1);
	cvSet( hist_img, cvScalarAll(255), 0 );
	IplImage *eq_hist_img = cvCreateImage(cvSize(300,240), 8, 1);
	cvSet( eq_hist_img, cvScalarAll(255), 0 );

	CvHistogram *hist;
        int hist_size = 256;
        float range[]={0,256};
        float* ranges[] = { range };

        float max_value = 0.0;
        float w_scale = 0.0;

	cvCvtColor(img,gray,CV_RGB2GRAY);			//gri hali

	hist = cvCreateHist(1, &hist_size, CV_HIST_ARRAY, ranges, 1);		//dizi oluşturdum histogram bulma için

	cvCalcHist( &gray, hist, 0, NULL );			//histogramı hesapla  diziye ata

	cvGetMinMaxHistValue( hist, 0, &max_value, 0, 0 );		//histogramın minimum ve maksimum değerlerini bulur.

    cvScale( hist->bins, hist->bins, ((float)hist_img->height)/max_value, 0 );
	printf(" REsmin orta noktasını bulunması:\n", max_value*100/((float)hist_img->height));
                                                  //A scale to estimate the number of pixels

	w_scale = ((float)hist_img->width)/hist_size;

        for( int i = 0; i < hist_size; i++ )
          cvRectangle( hist_img, cvPoint((int)i*w_scale , hist_img->height),
             cvPoint((int)(i+1)*w_scale, hist_img->height - cvRound(cvGetReal1D(hist->bins,i))),
             cvScalar(0), -1, 8, 0 );

 /* Parca histogram eşitleme */
	cvEqualizeHist(gray,eq_gray);

 /* aynı şekilde hesaplama ve parca eşitlenmiş histograma */
	 cvCalcHist( &eq_gray, hist, 0, NULL );

	cvGetMinMaxHistValue( hist, 0, &max_value, 0, 0 );
	cvScale( hist->bins, hist->bins, ((float)eq_hist_img->height)/max_value, 0 );
	printf("Resmin orta noktası bulunması \n",
                                    max_value*100/((float)eq_hist_img->height));

        w_scale = ((float)eq_hist_img->width)/hist_size;

	for( int i = 0; i < hist_size; i++ )
		cvRectangle( eq_hist_img, cvPoint((int)i*w_scale , eq_hist_img->height),
          cvPoint((int)(i+1)*w_scale, eq_hist_img->height - cvRound(cvGetReal1D(hist->bins,i))),
          cvScalar(0), -1, 8, 0 );

    cvNamedWindow( "Image", 1 );
    cvShowImage( "Image",gray);

    cvNamedWindow( "Eşit Resim", 1 );
    cvShowImage( "Eşit Resim",eq_gray);

    //histogramı görmek için
    cvNamedWindow("Histogram", 1);
    cvShowImage( "Histogram", hist_img);

    //histogramı gör
    cvNamedWindow(" Histogram", 1);
    cvShowImage( " Histogram", eq_hist_img );

    cvWaitKey(0);

    cvDestroyWindow( "Resim" );
    cvDestroyWindow( "Histogram" );
    cvDestroyWindow( " Histogram" );
    cvReleaseImage( &img );

    return 0;

}

Ekran Çıktıları:

OpenGL Blur halindeki resim

OpenGL Blur halindeki resim

OpenGL histogram ve ortalama

OpenGL histogram ve ortalama

Herkeze Kolay Gelsin  :)

Yazar Hakkında

Harun Balta 63 adet yazısı bulunuyor..

Bilgisayar Mühendisliği Üzerine çalıştığım konular: C# , .Net , Silverlight , WPF , Entity Framework ,MVVM, Oracle ,Pl/Sql

Print Friendly