opencv3学习之边缘检测(Canny/Sobel/Laplacian算子)
2017-08-19 10:09
447 查看
//30.canny边缘检测
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace
cv;
int main(){
Mat src=imread("/Users/oumoemoe/Downloads/girl.png");
Mat dst,gray,edge;
Mat src1=src.clone();
dst.create(src1.size(), src1.type());
//灰度处理
cvtColor(src1, gray,
COLOR_BGR2GRAY);
//降噪,因为用于边缘检测的导数对于噪声很敏感
blur(gray, edge,
Size(3,3));
//canny算子
Canny(edge, edge,
3,
9,3);//第三个和第四个参数为滞后阈值,它们中的较小值用于边缘连接,较大值用于控制较强边缘的初始段。第五个参数为Soble算子孔径大小,默认值为3
dst=Scalar::all(0);
src1.copyTo(dst, edge);
imshow("2", dst);
waitKey(0);
return
0;
}
//31.Sobel算子
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace
cv;
int main(){
Mat grad_x,grad_y;
Mat abs_grad_x,abs_grad_y,dst;
Mat src=imread("/Users/oumoemoe/Downloads/girl.png");
imshow("1", src);
//求x方向上的梯度
Sobel(src, grad_x,
CV_16S,
1, 0,3,1,1,BORDER_DEFAULT);//x方向上的导数默认为【xorder=1,yorder=0,ksize=3】
convertScaleAbs(grad_x, abs_grad_x);
<
b4ba
span style="color:#3e1e81;">imshow("x", abs_grad_x);
//求y方向上的梯度
Sobel(src, grad_y,
CV_16S,
0, 1,3,1,1,BORDER_DEFAULT);//y方向上的导数默认为【xorder=0,yorder=1,ksize=3】,第七个参数是缩放因子,默认值是1
convertScaleAbs(grad_y, abs_grad_y);
imshow("y", abs_grad_y);
//合并梯度
addWeighted(abs_grad_x,
0.5, abs_grad_y,
0.5, 0, dst);
imshow("final", dst);
waitKey(0);
return
0;
}
//32.拉普拉斯
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace
cv;
int main(){
Mat src,src_gray,dst,abs_dst;
src=imread("/Users/oumoemoe/Downloads/girl.png");
imshow("1", src);
GaussianBlur(src, src,
Size(3,3),
0,0,BORDER_DEFAULT);
cvtColor(src, src_gray,
COLOR_RGB2GRAY);
Laplacian(src_gray, dst,
CV_16S,3,1,0,BORDER_DEFAULT);
convertScaleAbs(dst, abs_dst);
imshow("final", abs_dst);
waitKey(0);
return
0;
}
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace
cv;
int main(){
Mat src=imread("/Users/oumoemoe/Downloads/girl.png");
Mat dst,gray,edge;
Mat src1=src.clone();
dst.create(src1.size(), src1.type());
//灰度处理
cvtColor(src1, gray,
COLOR_BGR2GRAY);
//降噪,因为用于边缘检测的导数对于噪声很敏感
blur(gray, edge,
Size(3,3));
//canny算子
Canny(edge, edge,
3,
9,3);//第三个和第四个参数为滞后阈值,它们中的较小值用于边缘连接,较大值用于控制较强边缘的初始段。第五个参数为Soble算子孔径大小,默认值为3
dst=Scalar::all(0);
src1.copyTo(dst, edge);
imshow("2", dst);
waitKey(0);
return
0;
}
//31.Sobel算子
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace
cv;
int main(){
Mat grad_x,grad_y;
Mat abs_grad_x,abs_grad_y,dst;
Mat src=imread("/Users/oumoemoe/Downloads/girl.png");
imshow("1", src);
//求x方向上的梯度
Sobel(src, grad_x,
CV_16S,
1, 0,3,1,1,BORDER_DEFAULT);//x方向上的导数默认为【xorder=1,yorder=0,ksize=3】
convertScaleAbs(grad_x, abs_grad_x);
<
b4ba
span style="color:#3e1e81;">imshow("x", abs_grad_x);
//求y方向上的梯度
Sobel(src, grad_y,
CV_16S,
0, 1,3,1,1,BORDER_DEFAULT);//y方向上的导数默认为【xorder=0,yorder=1,ksize=3】,第七个参数是缩放因子,默认值是1
convertScaleAbs(grad_y, abs_grad_y);
imshow("y", abs_grad_y);
//合并梯度
addWeighted(abs_grad_x,
0.5, abs_grad_y,
0.5, 0, dst);
imshow("final", dst);
waitKey(0);
return
0;
}
//32.拉普拉斯
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace
cv;
int main(){
Mat src,src_gray,dst,abs_dst;
src=imread("/Users/oumoemoe/Downloads/girl.png");
imshow("1", src);
GaussianBlur(src, src,
Size(3,3),
0,0,BORDER_DEFAULT);
cvtColor(src, src_gray,
COLOR_RGB2GRAY);
Laplacian(src_gray, dst,
CV_16S,3,1,0,BORDER_DEFAULT);
convertScaleAbs(dst, abs_dst);
imshow("final", abs_dst);
waitKey(0);
return
0;
}
相关文章推荐
- OpenCV学习笔记(13)OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
- OpenCV学习——边缘检测
- opencv学习(三十二)之图像边缘检测Soble_Laplace_Canny
- 【OpenCV学习笔记】2.3图像的腐蚀、膨胀、模糊、边缘检测
- OpenCV入门学习之边缘检测
- OpenCV学习之旅2—边缘检测技术
- vim+python+OpenCV学习七 : Sobel算子、Laplacian算子和Canny边缘检测
- OpenCV学习 4:摄像头视频读写与边缘检测
- OpenCV学习笔记_图片边缘检测
- Opencv学习笔记(四):运用Canny算子边缘检测及Opencv中拖动条事件处理
- opencv学习(三十二)之图像边缘检测Soble_Laplace_Canny
- opencv学习(七)(opencv3.0.0+VS2012+win7)打开摄像头并且进行边缘检测加上了滑动条
- 【OpenCV学习笔记 004】 图像的缩放、Canny边缘检测和图像的二值化
- opencv学习笔记(六)二值化以及边缘检测
- OpenCV 2 学习笔记(24): 使用形态学滤波检测边缘与角点
- 【OpenCV学习】边缘检测
- opencv学习——canny边缘检测
- Opencv学习笔记(二十三) 改进边缘检测算子-----Marr-Hildresh
- Opencv学习之图像边缘检测
- opencv学习笔记(二十一) Sobel算子边缘检测