- High-pass linear filter高通线性滤波器
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv;
class LaplacianZC{
private:
Mat img;
Mat laplace;
int aperture;
public:
LaplacianZC():aperture(3){}
void setAperture(int a){
aperture= a;
}
Mat computeLaplacian(const Mat& image){
Laplacian(image, laplace,CV_32F, aperture);
img= image.clone();
return laplace;
}
Mat getLaplacianImage(double scale=-1.0){
if(scale<0)
{
double lapmin, lapmax;
minMaxLoc(laplace, &lapmin,&lapmax);
scale= 127/max(-lapmin,lapmax);
}
Mat laplaceImage;
laplace.convertTo(laplaceImage,CV_8U,scale,128);
return laplaceImage;
}
};
int main()
{
Mat image= imread("image.jpg");
LaplacianZC laplacian;
laplacian.setAperture(7);
Mat flap= laplacian.computeLaplacian(image);
Mat laplace= laplacian.getLaplacianImage();
namedWindow("Laplacian Image",WINDOW_NORMAL);
imshow("Laplacian Image",laplace);
waitKey(0);
}