使用Scharr 算子进行边缘检测
2016-06-02 20:13
441 查看
//Program to detect edges in an image using the threshold Scharr operator #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> using namespace std; using namespace cv; int main() { Mat image=imread("E:\\图片\\lena.jpg"); Mat image_blurred; //blur image with a Gaussian kernel to remove edge noise GaussianBlur(image,image_blurred,Size(3,3),0,0); //Convert to gray Mat image_gray; cvtColor(image_blurred,image_gray,CV_RGB2GRAY); //Gradients in X and Y directions Mat grad_x,grad_y; Scharr(image_gray,grad_x,CV_32F,1,0); Scharr(image_gray,grad_x,CV_32F,0,1); //Calculate overall gradient pow(grad_x,2,grad_x); pow(grad_y,2,grad_y); Mat grad=grad_x+grad_y; sqrt(grad,grad); //Display namedWindow("Original image"); namedWindow("Scharr edges"); //Convert to 8 bit depth for display Mat edges; grad.convertTo(edges,CV_8U); imshow("Original image",image); imshow("Scharr edges",edges); while(char(waitKey(1))!='q'){} return 0; }
原始图像:
效果图:
相关文章推荐
- codevs 3332 数列 (矩阵乘法)
- Centos6.5 安装配置Tomcat7.0.9
- js禁用页面右击
- android 自定义控件学习之三 控件布局常用知识总结
- 性能测试–性能监视器
- jquery跨域请求jsonp
- vim之代码折叠
- php 中list函数笔记
- hdoj-5704-Luck Competition
- IOS动画机制
- HDU max sum(最大子序列之和)
- linux (Fedora 23)初期个性化设置
- 母女二人
- C++中常用特殊符号简介(& , * , : , :: , ->)
- 二分查找算法
- Executors.newSingleThreadExecutor的一些坑
- 网络爬虫的简单例子
- Thread类的使用
- C/C++中time.h
- android 学习笔记十二 监听键盘状态