void OnCanny()
{
// TODO: Add your command handler code here
IplImage* img = cvCreateImage(cvGetSize(GetDocument()->Image),IPL_DEPTH_32F, 0);
IplImage* image1 = cvCloneImage(GetDocument()->Image);
IplImage* image2 = cvCreateImage(cvGetSize(image1),
IPL_DEPTH_8U,
1);
IplImage* pCannyImg = cvCreateImage(cvGetSize(image1),
IPL_DEPTH_8U,
1);
// convert the inoput image to gray image
cvCvtColor(image1, image2, CV_BGR2GRAY);
//cvSaveImage("gray.bmp", image2);
cvCanny(image2, pCannyImg, 5, 150, 3);
global_image = cvCloneImage(pCannyImg);
cvNamedWindow("Cannyedge", CV_WINDOW_AUTOSIZE);
cvShowImage("Cannyedge", pCannyImg);
}
void OnLaplace()
{
// TODO: Add your command handler code here
IplImage* img = cvCreateImage(cvGetSize(GetDocument()->Image),IPL_DEPTH_32F,3);
cvLaplace(GetDocument()->Image, img,3);
global_image = cvCloneImage(img);
cvNamedWindow("src1",CV_WINDOW_AUTOSIZE);
cvShowImage("src1",img);
}
OnSobel()
{
// TODO: Add your command handler code here
IplImage* img = cvCreateImage(cvGetSize(GetDocument()->Image),IPL_DEPTH_32F,3);
cvSobel(GetDocument()->Image,img,2,2,3);
global_image = cvCloneImage(img);
cvNamedWindow("src1",CV_WINDOW_AUTOSIZE);
cvShowImage("src1",img);
}
void OnCannyColor() {
// TODO: Add your command handler code here
IplImage* img = cvCreateImage(cvGetSize(GetDocument()->Image),IPL_DEPTH_32F, 0);
IplImage* image1 = cvCloneImage(GetDocument()->Image);
int channels = image1->nChannels;
IplImage *RedImg,*GreenImg,*BlueImg;
IplImage *RedCanny,*GreenCanny,*BlueCanny;
IplImage* image2 = cvCreateImage(cvGetSize(image1),
IPL_DEPTH_8U,
3);
RedImg=cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);
GreenImg=cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);
BlueImg=cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);
RedCanny=cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);
GreenCanny=cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);
BlueCanny=cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);
cvSplit(image1, BlueImg, GreenImg, RedImg, 0); // 图层分离
cvCanny(BlueImg, BlueCanny, 5, 150, 3);
cvCanny(GreenImg, GreenCanny, 5, 150, 3);
cvCanny(RedImg, RedCanny, 5, 150, 3);
cvMerge(BlueCanny, GreenCanny, RedCanny, 0, image2);
cvNamedWindow("Cannyedge", CV_WINDOW_AUTOSIZE);
cvShowImage("Cannyedge", image2);
global_image = cvCloneImage(image2);
cvReleaseImage(&BlueImg);
cvReleaseImage(&GreenImg);
cvReleaseImage(&RedImg);
cvReleaseImage(&BlueCanny);
cvReleaseImage(&GreenCanny);
cvReleaseImage(&RedCanny);
cvReleaseImage(&image1);
//cvReleaseImage(&image2);
}
void OnCannyDyn()
{
// TODO: Add your command handler code here
IplImage* img = cvCreateImage(cvGetSize(GetDocument()->Image),IPL_DEPTH_32F, 0);
IplImage* image1 = cvCloneImage(GetDocument()->Image);
global_image1 = cvCloneImage(image1);
//////////////////////////////////////////
// Create the output image
cedge = cvCreateImage(cvGetSize(image1), IPL_DEPTH_8U, 3);
// 将彩色图像转换为灰度图像
gray = cvCreateImage(cvGetSize(image1), IPL_DEPTH_8U, 1);
edge = cvCreateImage(cvGetSize(image1), IPL_DEPTH_8U, 1);
cvCvtColor(image1, gray, CV_BGR2GRAY);
// Create a window
cvNamedWindow(wndname, 1);
// create a toolbar
cvCreateTrackbar(tbarname, wndname, &edge_thresh, 128, on_trackbar);
// Show the image
on_trackbar(0);
// Wait for a key stroke; the same function arranges events processing
cvWaitKey(0);
cvReleaseImage(&image1);
cvReleaseImage(&gray);
cvReleaseImage(&edge);
cvReleaseImage(&global_image);
cvDestroyWindow(wndname);
///////////////////////////////////////////////////////////////
}