带进度条的高斯模糊
#include "highgui.h"
#include "cv.h"
typedef struct
{
char const *window_in;
char const *window_out;
IplImage* image;
IplImage* out;
}userdata;
userdata Loadpro(char const *A,char const *B,char const *C)
{
userdata p= {A,B,cvLoadImage(C)};
return p;
}
void onTrackbarSlide(int deepth,void* data)
{
cvSmooth
(
(*(userdata*)data).image,
(*(userdata*)data).out,
CV_GAUSSIAN,2*deepth+1,0
);
cvShowImage
(
(*(userdata*)data).window_out,
(*(userdata*)data).out
);
}
void example(userdata &pro)
{
cvNamedWindow(pro.window_in,CV_WINDOW_AUTOSIZE);
cvNamedWindow(pro.window_out,CV_WINDOW_AUTOSIZE);
cvShowImage(pro.window_in, pro.image);
int deepth=0;
pro.out = cvCreateImage
(
cvGetSize(pro.image),
IPL_DEPTH_8U,
3
);
cvCopy(pro.image, pro.out);
cvShowImage(pro.window_out, pro.out);
if(pro.image)
{
cvCreateTrackbar2
(
"Deep",
pro.window_out,
&deepth,
30,
onTrackbarSlide,
&pro
);
}
while(cvWaitKey(0)!=27);
cvReleaseImage(&pro.image);
cvReleaseImage(&pro.out);
cvDestroyWindow(pro.window_out);
cvDestroyWindow(pro.window_in);
}
int main(int argc, const char * argv[]) {
// insert code here...
userdata pro =Loadpro
(
"Gauss_in",
"Gauss_out",
"/Users/sean/Pictures/11.png"
);
example(pro);
return 0;
}