OpenCV入门系列 —— Laplacian边缘检测

OpenCV入门系列 —— Laplacian边缘检测


前言

随着工业自动化、智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识别、定位、抓取、测量,缺陷检测等),而针对不同作业场景进行解决方案设计时,通常会借助PCL、OpenCV、Eigen等简单方便的开源算法库进行方案的快速验证和迭代以满足作业场景下的目标需求。

为了让对工业机器视觉方向感兴趣的同学能够少走一些弯路,故推出了此一系列简易入门教程示例,让初次使用者能够最简单直观地感受到当前所用算法模块的执行效果。

后续会逐步扩增与工业机器视觉相关的一些其它内容,如:

项目案例剖析场景数据分析基础算法模块相机评测 等;

如有兴趣可加入群聊(若入群二维码被屏蔽,则可以通过Q群(1032861997)或评论、私信博主“群聊”,邀请入群),与同道同学及圈内同行一起交流讨论。

在这里插入图片描述


程序说明

展示laplacian边缘检测效果;

输出结果

在这里插入图片描述

代码示例

/*
 * @File: laplacian_edge.cpp
 * @Brief: opencv course
 * @Description: 展示laplacian边缘检测效果
 * @Version: 0.0.1
 * @Author: MuYv
 */
#include <iostream>
#include <string>
#include <opencv2/opencv.hpp>



int main(int argc, char** argv){
    
    
    if(argc != 2){
    
    
        std::cout<<"Usage: exec img_file_path"<<std::endl;
        return -1;
    }
    const std::string kImgFilePath = argv[1];   // "../imgs/women3.jpg"

    // 加载为 rgb 3通道彩色图数据
    cv::Mat img_src = cv::imread(kImgFilePath, cv::IMREAD_COLOR);

    cv::Mat img_gaussian_blur, img_gray, img_laplacian, img_dst;	//变量定义

	// 使用高斯滤波消除噪声
	cv::GaussianBlur( img_src, img_gaussian_blur, cv::Size(3,3), 0, 0, cv::BORDER_DEFAULT );

	// 转换为灰度图
	cv::cvtColor( img_gaussian_blur, img_gray, cv::COLOR_RGB2GRAY );

	// 使用Laplacian函数
	cv::Laplacian( img_gray, img_laplacian, CV_16S, 3, 1, 0, cv::BORDER_DEFAULT );

	// 计算绝对值,并将结果转换成8位
	cv::convertScaleAbs( img_laplacian, img_dst );

    cv::imshow("img_src", img_src);
    cv::imshow("img_gaussian_blur", img_gaussian_blur);
    cv::imshow("img_gray", img_gray);
    // cv::imshow("img_laplacian", img_laplacian);  // 该图像数据格式不支持可视化查看,可结合相关debug工具查看运行时数据内容
    cv::imshow("img_dst", img_dst);

    // 等待n毫秒后关闭窗口,0代表一直开启,直到任意按键触发关闭窗口
    cv::waitKey(0);

    return 0;
}

注:部分测试所用图片数据来源于网络,如有侵权,请联系博主删除,谢谢。

扫描二维码关注公众号,回复: 14401203 查看本文章

猜你喜欢

转载自blog.csdn.net/memorynode/article/details/124333436