5 file_name = "../c/baboon.jpg";
29 lut=cvCreateMat(256,1,CV_8U);
31 ## brightness/contrast callback function
32 function update_brightness( val )
33 global Gbrightness # global tag is required, or we get UnboundLocalError
38 function update_contrast( val )
39 global Gcontrast; # global tag is required, or we get UnboundLocalError
44 function update_brightcont()
54 global cvCalcHist; # use cv namespace for these instead
58 brightness = Gbrightness - 100;
59 contrast = Gcontrast - 100;
62 ## The algorithm is by Werner D. Streidt
63 ## (http://visca.com/ffactory/archives/5-99/msg00021.html)
65 delta = 127.*contrast/100;
66 a = 255./(255. - delta*2);
67 b = a*(brightness - delta);
69 delta = -128.*contrast/100;
70 a = (256.-delta*2)/255.;
71 b = a*brightness + delta;
85 cvLUT( src_image, dst_image, lut );
86 cvShowImage( "image", dst_image );
88 cvCalcHist( dst_image, hist, 0, [] );
90 [min_value, max_value] = cvGetMinMaxHistValue( hist );
91 cvScale( hist.bins, hist.bins, double(hist_image.height)/max_value, 0 );
92 ##cvNormalizeHist( hist, 1000 );
94 cvSet( hist_image, cvScalarAll(255));
95 bin_w = cvRound(double(hist_image.width)/hist_size);
98 cvRectangle( hist_image, cvPoint(i*bin_w, hist_image.height), cvPoint((i+1)*bin_w, hist_image.height - cvRound(cvGetReal1D(hist.bins,i))), cvScalarAll(0), -1, 8, 0 );
101 cvShowImage( "histogram", hist_image );
105 ## Load the source image. HighGUI use.
107 file_name = argv(){1}
110 src_image = cvLoadImage( file_name, 0 );
112 if (!swig_this(src_image))
113 printf("Image was not loaded.\n");
118 dst_image = cvCloneImage(src_image);
119 hist_image = cvCreateImage(cvSize(320,200), 8, 1);
120 hist = cvCreateHist({hist_size}, CV_HIST_ARRAY, ranges, 1);
122 cvNamedWindow("image", 0);
123 cvNamedWindow("histogram", 0);
125 cvCreateTrackbar("brightness", "image", _brightness, 200, @update_brightness);
126 cvCreateTrackbar("contrast", "image", _contrast, 200, @update_contrast);