我是靠谱客的博主 想人陪鞋垫,这篇文章主要介绍OpenCV图像增强算子,现在分享给大家,希望可以做个参考。

http://www.ihalcon.com/read-12670.html 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include #include //头文件 using namespace cv; //包含cv命名空间 using namespace std; int main() { //读入图片 Mat img_1 = imread("F:\图标\222222.jpg"); //Mat img_2 = imread("F:\图标\2.jpg"); if (img_1.empty()) { cout << "打开图片失败,请检查" << endl; return -1; } imshow("src_img", img_1); //图像增强算法 直方图均衡化-------------------------------------------------------------------1 Mat imageRGB[3]; split(img_1, imageRGB); for (int i = 0; i < 3; i++) { equalizeHist(imageRGB, imageRGB); } merge(imageRGB, 3, img_1); imshow("直方图均衡化图像增强效果", img_1); //拉普拉斯算子可以增强局部的图像对比度---------------------------------------------------------2 Mat imageEnhance; Mat kernel = (Mat_(3, 3) << 0, -1, 0, 0, 5, 0, 0, -1, 0); filter2D(img_1, imageEnhance, CV_8UC3, kernel);//利用内核实现对图像的卷积运算 imshow("拉普拉斯算子图像增强效果", imageEnhance); //基于对数Log变换的图像增强,达到了扩展和增强低灰度部分,压缩高灰度部分的值的功能-------------3 Mat imageLog(img_1.size(), CV_32FC3); for (int i = 0; i < img_1.rows; i++) { for (int j = 0; j < img_1.cols; j++) { imageLog.at(i, j)[0] = log(1 + img_1.at(i, j)[0]); imageLog.at(i, j)[1] = log(1 + img_1.at(i, j)[1]); imageLog.at(i, j)[2] = log(1 + img_1.at(i, j)[2]); } } //归一化到0~255 normalize(imageLog, imageLog, 0, 255, CV_MINMAX); //转换成8bit图像显示 convertScaleAbs(imageLog, imageLog); imshow("after", imageLog); //基于伽马变换的图像增强,---------------------------------------------------------------------4 //伽马变换对于图像对比度偏低,并且整体亮度值偏高(对于于相机过曝)情况下的图像增强效果明显。 Mat imageGamma(img_1.size(), CV_32FC3); for (int i = 0; i < img_1.rows; i++) { for (int j = 0; j < img_1.cols; j++) { imageGamma.at(i, j)[0] = (img_1.at(i, j)[0])*(img_1.at(i, j)[0])*(img_1.at(i, j)[0]); imageGamma.at(i, j)[1] = (img_1.at(i, j)[1])*(img_1.at(i, j)[1])*(img_1.at(i, j)[1]); imageGamma.at(i, j)[2] = (img_1.at(i, j)[2])*(img_1.at(i, j)[2])*(img_1.at(i, j)[2]); } } //归一化到0~255 normalize(imageGamma, imageGamma, 0, 255, CV_MINMAX); //转换成8bit图像显示 convertScaleAbs(imageGamma, imageGamma); imshow("伽马变换图像增强效果", imageGamma); //imshow("【图2】", img_2); cout << "图像1的长宽:" << img_1.rows <<"*"<< img_1.cols << endl; //cout << "图像2的长宽:" << img_2.rows <<"*"<< img_2.cols << endl; //转为灰度图并去燥 Mat gray_img; cvtColor(imageGamma, gray_img, CV_RGB2GRAY); blur(gray_img,gray_img,Size(5,5)); //canny边缘检测 Mat canny_img; Canny(gray_img,canny_img,10.0,60.0); vector compression_params; //向compression_params里面添加值 compression_params.push_back(CV_IMWRITE_JPEG_QUALITY); compression_params.push_back(100); imwrite("F:\图标\222222增强.jpg", imageGamma, compression_params); imwrite("F:\图标\222222素描.jpg", canny_img, compression_params); cout << "素描图像保存成功!"<<endl; cout << "增强图像保存成功!"<<endl; imshow("gray_image", gray_img); imshow("canny_img", canny_img); waitkey(0); return 0; }

最后

以上就是想人陪鞋垫最近收集整理的关于OpenCV图像增强算子的全部内容,更多相关OpenCV图像增强算子内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(106)

评论列表共有 0 条评论

立即
投稿
返回
顶部