前面已经介绍过灰度图像的平滑和锐化,下面使用均值平滑和拉普拉斯锐化处理彩色图像。
平滑结果:
平滑差异和锐化结果
代码实现:
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
int main() {
Mat src = imread("lena.jpg");
imshow("src", src);
std::vector<Mat> yuv;
Mat split_img;
cvtColor(src, split_img, COLOR_BGR2YCrCb);
split(split_img, yuv );
blur(yuv[0], yuv[0], Size(5, 5));
merge( yuv, split_img);
cvtColor(split_img, split_img, COLOR_YCrCb2BGR);
imshow( "split_img", split_img);
Mat dst;
blur(src, dst, Size(5, 5));
namedWindow("box");
imshow("box", dst);
Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, -1, 4, -1, 0, -1, 0);
Mat laplace_dst;
filter2D(src, laplace_dst, CV_8UC3, kernel);