【练习6.6】拉普拉斯cvLaplace团块及边缘检测、图像数据类型转换cvConvertScaleAbs

 

提纲
题目要求
程序代码
结果图片
要言妙道

 

 

 

  

 

题目要求:

 找到并载入一副正面人脸图,眼睛是睁开的,并且占了图像大部分区域,写代码找出眼睛的瞳孔

一个拉普拉斯算子“像”黑暗中的一个中心亮点,瞳孔正好相反,用一个足够大的拉普拉斯算子进行转换和卷积

 

程序代码:

 

 1 // OpenCVExerciseTesting.cpp : 定义控制台应用程序的入口点。
 2 //
 3 //D:\\Work\\Work_Programming\\Source\\Image\\lena.jpg
 4 
 5 
 6 #include "stdafx.h"
 7 #include <cv.h>
 8 #include <highgui.h>
 9 #include <iostream>
10 
11 #include <opencv2/legacy/legacy.hpp>
12 //#pragma comment(lib, "opencv_legacy2411.lib")
13 
14 using namespace cv;
15 using namespace std;
16 
17 //函数声明-->--->-->--->-->--->-->--->//
18 
19 
20 //<--<--<--<--<--<--<--<--<--函数声明//
21 
22 int _tmain(int argc, _TCHAR* argv[])
23 {
24     const char * soutceFile = "D:\\Work\\Work_Programming\\Source\\Image\\OpenCVExerciseImage\\第6章\\瞳孔.jpg";
25     IplImage * image_Resource = cvLoadImage(soutceFile, CV_LOAD_IMAGE_GRAYSCALE);
26     assert(image_Resource);
27 
28     CvSize image_size = cvSize(image_Resource->width, image_Resource->height);
29 
30     cvNamedWindow("原始图像", CV_WINDOW_AUTOSIZE);
31     cvNamedWindow("题目_a", CV_WINDOW_AUTOSIZE);
32 
33     cvShowImage("原始图像", image_Resource);
34 
35     //---------------------------a:--------------------------------/:
36 
37     IplImage * image_Result_a = cvCreateImage(image_size, IPL_DEPTH_64F, image_Resource->nChannels);
38     cvZero(image_Result_a);
39 
40     cvLaplace(image_Resource, image_Result_a, 21);
41 
42     cvSave("image_Result_a.xml", image_Result_a);
43 
44     IplImage * image_8U_ToShow = cvCreateImage(image_size, IPL_DEPTH_8U, image_Resource->nChannels);
45     cvConvertScaleAbs(image_Result_a, image_8U_ToShow);
46 
47     cvShowImage("题目_a", image_8U_ToShow);
48 
49     //---------------------------a:--------------------------------/。
50 
51     cvWaitKey(0);
52 
53     cvReleaseImage(&image_Resource);
54     cvReleaseImage(&image_Result_a);
55 
56     cvDestroyWindow("原始图像");
57     cvDestroyWindow("题目_a");
58 
59     return 0;
60 }

 

 

结果图片:

如果换一张图片,使用如下代码替换,效果图如下:

    const char * soutceFile = "D:\\Work\\Work_Programming\\Source\\Image\\OpenCVExerciseImage\\第6章\\眼睛.jpg";

///.......

    cvLaplace(image_Resource, image_Result_a, 17);

 

 

要言妙道:

 ①拉普拉斯算子一个通常的应用是检测“团块”、边缘检测

②源图像可以是8位无符号图像,也可以是32浮点图像,但目标图像必须是16位(有符号)或32位浮点图像。

 

posted on 2015-05-02 18:44  毋忆典藏  阅读(626)  评论(0编辑  收藏  举报