zoukankan      html  css  js  c++  java
  • 【练习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位浮点图像。

  • 相关阅读:
    java及前端请求跨域问题
    Node.js初级
    Oracle学习过程(随时更新)
    记录一下工作中犯的低级错误
    Maven管理项目架包
    使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
    position 定位属性
    一般处理程序 ashx 无法获取Session 值
    删除SQL SERVER 登录记录
    web.config 连接字符串 加密
  • 原文地址:https://www.cnblogs.com/tingshuixuan2012/p/4472335.html
Copyright © 2011-2022 走看看