opencv用拉普拉斯算子做锐化

    技术2026-04-12  6

    // opencv9_sharpening.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include <opencv2/highgui.hpp> #include <opencv2/imgproc.hpp> using namespace cv; using namespace std; //debug下在lib文件的名称后加d,release下不加d。 void salt(Mat& image, int n) { for (int k = 0; k < n; k++) { int i = rand() % image.cols; int j = rand() % image.rows; if (image.channels() == 1) { //判断是一个通道 image.at<uchar>(j, i) = 255; } else { image.at<cv::Vec3b>(j, i)[0] = 255; image.at<cv::Vec3b>(j, i)[1] = 255; image.at<cv::Vec3b>(j, i)[2] = 255; } } } int main() { Mat src = imread("../res/lena.jpg"); //一个点代表省略当前文件夹路径,两个点则代表回到上一个文件夹路径 if (src.empty()) { std::cout << "image read is null" << std::endl; return -10; } /*namedWindow("【原图】", WINDOW_AUTOSIZE);*/ imshow("【原图】", src); Mat dst; /*blur(src, dst, Size(3, 3)); imshow("均值滤波", dst);*/ /*GaussianBlur( src, dst, Size(3, 3), 0, 0, BORDER_DEFAULT ); imshow("【高斯降噪效果图】", dst);*/ Mat imgEnhance; Mat kernel = (Mat_<float>(3, 3) << 0, 1, 0, 1, -4, 1, 0, 1, 0); filter2D(src, imgEnhance, CV_8UC3, kernel); imshow("filter2D", imgEnhance); Mat laplace; Laplacian(src, dst, CV_16S, 1, 1, 0, BORDER_DEFAULT); //拉普拉斯算子做图像锐化 convertScaleAbs(dst, laplace); imshow("Laplacian", laplace); Mat sub; subtract(laplace,imgEnhance, sub); imshow("sub",sub); waitKey(0); return 0; }

    Processed: 0.017, SQL: 10