数字图像处理实验用到的函数(更新中)

此贴仅用于记录数字图像处理实验中用到的函数和写过的代码,防止丢失。

一 基本操作

一,图像的读入,显示和保存

Mat img;
//文件读取
img = imread("文件路径");
//文件显示
imshow("窗口名",img);
//文件保存
imwrite("文件路径",img);

二,图像创建和灰度化

//创建图像
//1
Mat src = Mat(224, 224, CV_8UC3, Scalar(0, 0, 0));
//2
Mat src;
src.creat(224, 224, CV_8UC3, Scalar(0, 0, 0));//创建3通道的,8位,使用0填充
//灰度化图像
cvtColor(src,dst, COLOR_BGR2GRAY);
//直方图均衡化
equalizeHist(src,dst);

二 点处理

三,绘制直方图

Mat showHist(Mat img) {
	Mat hist;
	const int channels[1] = { 0 };
	float inRanges[2] = { 0,255 };
	const float* ranges[1] = { inRanges };
	const int bins[1] = { 256 };//0-255
	calcHist(&img, 1, channels, Mat(), hist, 1, bins, ranges);
	//绘制直方图
	int hist_w = 512;
	int hist_h = 400;   //直方图大小
	int width = 2;
	Mat histImage = Mat::zeros(hist_h, hist_w, CV_8UC3);
	for (int i = 1; i <= hist.rows; i++) {
		rectangle(histImage, Point(width * (i - 1), hist_h - 1),
			Point(width * i - 1, hist_h - cvRound(hist.at<float>(i - 1) / 20)),
			Scalar(255, 255, 255), -1);
	}
	return histImage;
}

四,图像滤波

//定义模板大小
#define N 5
//均值滤波(邻域平滑)
//第三个参数为核大小,注意两者区别
blur(img, dst1, Size(N, N));
//中值滤波
medianBlur(img,dst2, N);

五,图像锐化

//锐化就是原始图像和高通图像相加
//Sobel算子
void my_sobel(Mat img) {
	Mat dstx, dsty;
	Sobel(img, dstx, -1, 1, 0);
	Sobel(img, dsty, -1, 0, 1);
    //第三个值-1表示和源图像depth相同,后两个参数代表不同方向
	dstx = abs(dstx);
	dsty = abs(dsty);
	Mat out;
	//得到梯度图像
	add(dstx, dsty, out);
	//得到锐化图像
	add(out, img, out);
	imshow("原始图像", img);
	imshow("Sobel算子", out);
}
//Prewitt算子
void my_Prewitt(Mat img) {
    //定义卷积模板
	Mat k1 = (Mat_<double>(3, 3) << 1, 1,1,0,0,0,-1,-1,-1);
	Mat k2 = (Mat_<double>(3, 3) << -1,0,1,-1,0,1,-1,0,1);
	Mat dst1, dst2;
    //卷积,第三个参数意义如上
	filter2D(img, dst1, -1, k1);
	filter2D(img, dst2, -1, k2);
	Mat out;
	//得到梯度图像
	add(abs(dst1), abs(dst2), out);
	//锐化图像
	add(img, out, out);
	imshow("原始图像", img);
	imshow("Prewitt算子", out);
}
//拉普拉斯算子
void my_lap(Mat img) {
    //拉普拉斯算子会加强噪声,先滤波
	medianBlur(img, img, 3);
	Mat out;
    //第三个参数意义如上,第四个代表核大小,同中值滤波
	Laplacian(img, out, -1, 3);
	add(img, out, out);
	imshow("原始图像", img);
	imshow("拉普拉斯算子", out);
}

六,伪彩色处理

//第三个参数为颜色图模式
applyColorMap(src,dst, COLORMAP_HSV);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值