OpenCV官方文档学习记录(7)
2014-12-06 00:59
567 查看
从今天开始进入官方的图像处理部分。
图像滤波:
主要介绍了四种滤波函数的使用方式
示例代码:
可以使用如下方式显示变换程度:
函数说明:
Box Filter:
Size(i,i)是滤波器的kernel,Point(-1,-1)是滤波锚点位置,为负数时代表跟随滤波器的kernel(可以防止图像变换过程中偏移)。
Gaussian Filter:
Size同样是kernel,后面两个参数是sigma x,y的值,若为0表示跟随kernel,(因为作为分母其不可为0)。
Median Filter:
参数i代表的是kernel值,因为是方形(二维)图像,所以只用一个数字就好,并且需要使用奇数。
Bilateral Filter:
后面三个参数分别表示:
d,变换需要使用的直径范围,就是每个像素点会根据周围几个像素点进行运算;
color,颜色域标准差;
space,坐标空间的标准差。
虽然网速不好,还是上传变换后的结果图片吧:
原图就自己去opencv的安装文件夹下找了。
以上。
图像滤波:
主要介绍了四种滤波函数的使用方式
示例代码:
#include <opencv2\opencv.hpp> #include <iostream> #include <string> #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) int MAX_KERNEL_LENGTH = 31; using namespace std; using namespace cv; void Show(std::string name,Mat img) { namedWindow(name, CV_WINDOW_AUTOSIZE); imshow(name, img); } int main(void) { Mat src = imread("lena.jpg"); if (src.empty()) return -1; Show("Src", src); Mat dst = src.clone(); for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2) { blur(src, dst, Size(i, i), Point(-1, -1)); } Show("Blur", dst); for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2) { GaussianBlur(src, dst, Size(i, i), 0, 0); } Show("GaussianBlur", dst); for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2) { medianBlur(src, dst, i); } Show("MedianBlur", dst); for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2) { bilateralFilter(src, dst, i, i * 2, i / 2); } Show("BilateralFilter", dst); waitKey(); return 0; }
可以使用如下方式显示变换程度:
#include <opencv2\opencv.hpp> #include <iostream> #include <string> #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) int MAX_KERNEL_LENGTH = 31; using namespace std; using namespace cv; void Show(std::string name,Mat img) { namedWindow(name, CV_WINDOW_AUTOSIZE); imshow(name, img); } int main(void) { Mat src = imread("lena.jpg"); if (src.empty()) return -1; Show("Src", src); Mat dst = src.clone(); for (int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2) { blur(src, dst, Size(i, i), Point(-1, -1)); Show("Blur", dst); waitKey(100); } waitKey(); return 0; }
函数说明:
Box Filter:
blur(src, dst, Size(i, i), Point(-1, -1));
Size(i,i)是滤波器的kernel,Point(-1,-1)是滤波锚点位置,为负数时代表跟随滤波器的kernel(可以防止图像变换过程中偏移)。
Gaussian Filter:
GaussianBlur(src, dst, Size(i, i), 0, 0);
Size同样是kernel,后面两个参数是sigma x,y的值,若为0表示跟随kernel,(因为作为分母其不可为0)。
Median Filter:
medianBlur(src, dst, i);
参数i代表的是kernel值,因为是方形(二维)图像,所以只用一个数字就好,并且需要使用奇数。
Bilateral Filter:
bilateralFilter(src, dst, i, i * 2, i / 2);
后面三个参数分别表示:
d,变换需要使用的直径范围,就是每个像素点会根据周围几个像素点进行运算;
color,颜色域标准差;
space,坐标空间的标准差。
虽然网速不好,还是上传变换后的结果图片吧:
原图就自己去opencv的安装文件夹下找了。
以上。
相关文章推荐
- OpenCV官方文档学习记录(2)
- OpenCV官方文档学习记录(8)
- OpenCV官方文档学习记录(20)
- OpenCV官方文档学习记录(3)
- OpenCV官方文档学习记录(15)
- OpenCV官方文档学习记录(17)
- OpenCV官方文档学习记录(5)
- OpenCV官方文档学习记录(14)
- OpenCV官方文档学习记录(10)
- OpenCV官方文档学习记录(6)
- OpenCV官方文档学习记录(12)
- OpenCV官方文档学习记录(13)
- OpenCV官方文档学习记录(19)
- OpenCV官方文档学习记录(16)
- OpenCV官方文档学习记录(11)
- OpenCV官方文档学习记录(18)
- OpenCV官方文档学习记录(9)
- OpenCV官方文档学习记录(4)
- OpenCV官方文档学习记录(1)
- OpenCV基础入门 基于官方文档解读(4)--core模块学习