Laplacian图像变换(拉普拉斯算子)
视频讲解如下:
当前系列所有demo下载地址:
https://github.com/GaoRenBao/OpenCv4-Demo
不同编程语言对应的OpenCv版本以及开发环境信息如下:
语言 | OpenCv版本 | IDE |
C# | OpenCvSharp4.4.8.0.20230708 | Visual Studio 2022 |
C++ | OpenCv-4.5.5-vc14_vc15 | Visual Studio 2022 |
Python | OpenCv-Python (4.6.0.66) | PyCharm Community Edition 2022.1.3 |
本章节给大家讲讲如何对图像进行拉普拉斯图像变换操作。当前代码主体还是使用毛星云的demo,C#和Python都是在C++版本的基础上转换过来的,三个版本的效果基本一致。
演示效果如下:

C#版本代码
C#版本需要安装“OpenCvSharp4”、“OpenCvSharp4.runtime.win”两个库才行。不然会报错。
如果需要使用“ BitmapConverter.ToBitmap”操作,则需要追加安装“OpenCvSharp4.Extensions”库。
using OpenCvSharp;
namespace demo
{
internal class Program
{
static void Main(string[] args)
{
//【0】变量的定义
Mat src = new Mat();
Mat src_gray = new Mat();
Mat dst = new Mat();
Mat abs_dst = new Mat();
//【1】载入原始图
src = Cv2.ImRead("../../../images/girl5.jpg");
//【2】显示原始图
Cv2.ImShow("【原始图】图像Laplace变换", src);
//【3】使用高斯滤波消除噪声
Cv2.GaussianBlur(src, src, new Size(3, 3), 0, 0, BorderTypes.Default);
//【4】转换为灰度图
Cv2.CvtColor(src, src_gray, ColorConversionCodes.RGB2GRAY);
//【5】使用Laplace函数
Cv2.Laplacian(src_gray, dst, MatType.CV_16S, 3, 1, 0, BorderTypes.Default);
//【6】计算绝对值,并将结果转换成8位
Cv2.ConvertScaleAbs(dst, abs_dst);
//【7】显示效果图
Cv2.ImShow("【效果图】图像Laplace变换", abs_dst);
Cv2.WaitKey(0);
}
}
}
C++版本代码
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
//【0】变量的定义
Mat src, src_gray, dst, abs_dst;
//【1】载入原始图
src = imread("../images/girl5.jpg");
//【2】显示原始图
imshow("【原始图】图像Laplace变换", src);
//【3】使用高斯滤波消除噪声
GaussianBlur(src, src, Size(3, 3), 0, 0, BORDER_DEFAULT);
//【4】转换为灰度图
// opencv3:CV_RGB2GRAY
// opencv4:COLOR_RGB2GRAY
cvtColor(src, src_gray, COLOR_RGB2GRAY);
//【5】使用Laplace函数
Laplacian(src_gray, dst, CV_16S, 3, 1, 0, BORDER_DEFAULT);
//【6】计算绝对值,并将结果转换成8位
convertScaleAbs(dst, abs_dst);
//【7】显示效果图
imshow("【效果图】图像Laplace变换", abs_dst);
waitKey(0);
return 0;
}
Python版本代码
import cv2
import numpy as np
# 【1】载入原始图
src=cv2.imread('../images/girl5.jpg')
# 显示原始图
cv2.imshow('src',src)
#【3】使用高斯滤波消除噪声
src = cv2.GaussianBlur(src,(3,3), 0)
#【4】转换为灰度图
src_gray = cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
#【5】使用Laplace函数
dst = cv2.Laplacian(src_gray, cv2.CV_16S, ksize = 3)
#【6】计算绝对值,并将结果转换成8位
abs_dst = cv2.convertScaleAbs(dst)
#【7】显示效果图
cv2.imshow("abs_dst", abs_dst);
cv2.waitKey(0);