图像平滑,锐化,图像金字塔,查找表,形态学运算

/*
图像平滑,锐化
图像金字塔
形态学运算
查找表
*/
#include<opencv2\opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;

int main() {
	Mat img_org = imread("D://图片//4.jpg");

	if (img_org.empty()) {
		cout << "图片加载失败!" << endl;
		return -1;
	}
	Mat img1, img2, img3, img5;                       //平滑操作
	boxFilter(img_org, img1, -1, Size(9, 9));   //盒式滤波
	GaussianBlur(img_org, img2, Size(9, 9), 0, 0);   //高斯滤波
	medianBlur(img_org, img3, 9);    //中值滤波
	//bilateralFilter(img_org, img5, 5, 8, 8);    //与高斯滤波相似

	Mat im1, im2, im3;                //锐化操作
	Sobel(img_org, im1, -1, 1, 1);
	Laplacian(img_org, im3, CV_8UC3);   

	Mat ig1, ig2, ig3;       //金字塔
	pyrDown(img_org, ig1);     //pyrUp是pyrDown的反运算,但是不能获取原始图像
	pyrDown(ig1, ig2);
	pyrUp(ig2, ig3);

	Mat tem, tem1, tem2;
	inRange(img_org, Scalar(0, 0, 0), Scalar(255, 150, 255), tem);      //保留颜色范围
	Mat element = getStructuringElement(MORPH_ELLIPSE, Size(16, 18));
	dilate(tem, tem1, element);    //膨胀
	erode(tem1, tem2, element);             //腐蚀

	uchar *M = new uchar[256];          //查找表
	for (int i = 0; i < 256; i++) {
		M[i] = i*0.5;
	}
	Mat lut(1, 256, CV_8UC3, M);
	Mat result;
	LUT(img_org, lut, result);

	imshow("img1", img1);
	imshow("img2", img2);
	imshow("img3", img3);
	//imshow("img5", img5);

	imshow("im1", im1);
	imshow("im3", im3);

	imshow("ig1", ig1);
	imshow("ig2", ig2);
	imshow("ig3", ig3);

	imshow("tem1", tem1);
	imshow("tem2", tem2);

	imshow("result", result);

	delete[]M;

	waitKey(0);
	destroyAllWindows;

	return 0;
}

运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值