mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.5 KiB
64 lines
1.5 KiB
/** |
|
* @file Sobel_Demo.cpp |
|
* @brief Sample code using Sobel and/orScharr OpenCV functions to make a simple Edge Detector |
|
* @author OpenCV team |
|
*/ |
|
|
|
#include "opencv2/imgproc/imgproc.hpp" |
|
#include "opencv2/imgcodecs.hpp" |
|
#include "opencv2/highgui/highgui.hpp" |
|
#include <stdlib.h> |
|
#include <stdio.h> |
|
|
|
using namespace cv; |
|
|
|
/** |
|
* @function main |
|
*/ |
|
int main( int, char** argv ) |
|
{ |
|
|
|
Mat src, src_gray; |
|
Mat grad; |
|
const char* window_name = "Sobel Demo - Simple Edge Detector"; |
|
int scale = 1; |
|
int delta = 0; |
|
int ddepth = CV_16S; |
|
|
|
/// Load an image |
|
src = imread( argv[1] ); |
|
|
|
if( src.empty() ) |
|
{ return -1; } |
|
|
|
GaussianBlur( src, src, Size(3,3), 0, 0, BORDER_DEFAULT ); |
|
|
|
/// Convert it to gray |
|
cvtColor( src, src_gray, COLOR_RGB2GRAY ); |
|
|
|
/// Create window |
|
namedWindow( window_name, WINDOW_AUTOSIZE ); |
|
|
|
/// Generate grad_x and grad_y |
|
Mat grad_x, grad_y; |
|
Mat abs_grad_x, abs_grad_y; |
|
|
|
/// Gradient X |
|
//Scharr( src_gray, grad_x, ddepth, 1, 0, scale, delta, BORDER_DEFAULT ); |
|
Sobel( src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT ); |
|
convertScaleAbs( grad_x, abs_grad_x ); |
|
|
|
/// Gradient Y |
|
//Scharr( src_gray, grad_y, ddepth, 0, 1, scale, delta, BORDER_DEFAULT ); |
|
Sobel( src_gray, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT ); |
|
convertScaleAbs( grad_y, abs_grad_y ); |
|
|
|
/// Total Gradient (approximate) |
|
addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad ); |
|
|
|
imshow( window_name, grad ); |
|
|
|
waitKey(0); |
|
|
|
return 0; |
|
}
|
|
|