 |
OpenCV
4.2.0
Open Source Computer Vision
|
An example using Laplace transformations for edge detection
#include <ctype.h>
#include <stdio.h>
#include <iostream>
using namespace std;
static void help()
{
cout <<
"\nThis program demonstrates Laplace point/edge detection using OpenCV function Laplacian()\n"
"It captures from the camera of your choice: 0, 1, ... default 0\n"
"Call:\n"
"./laplace -c=<camera #, default 0> -p=<index of the frame to be decoded/captured next>\n" << endl;
}
enum {GAUSSIAN, BLUR, MEDIAN};
int sigma = 3;
int smoothType = GAUSSIAN;
int main( int argc, char** argv )
{
help();
string camera = parser.
get<
string>(
"c");
if (camera.size() == 1 && isdigit(camera[0]))
cap.
open(parser.get<
int>(
"c"));
else
{
cerr << "Can't open camera/video stream: " << camera << endl;
return 1;
}
cout << "Video " << parser.get<string>("c") <<
int pos = 0;
if (parser.has("p"))
{
pos = parser.get<int>("p");
}
if (!parser.check())
{
parser.printErrors();
return -1;
}
if (pos != 0)
{
cout << "seeking to frame #" << pos << endl;
{
cerr << "ERROR: seekeing is not supported" << endl;
}
}
Mat smoothed, laplace, result;
for(;;)
{
cap >> frame;
if( frame.empty() )
break;
int ksize = (sigma*5)|1;
if(smoothType == GAUSSIAN)
else if(smoothType == BLUR)
blur(frame, smoothed,
Size(ksize, ksize));
else
if( c == ' ' )
smoothType = smoothType == GAUSSIAN ? BLUR : smoothType == BLUR ? MEDIAN : GAUSSIAN;
if( c == 'q' || c == 'Q' || c == 27 )
break;
}
return 0;
}
@ CAP_PROP_FRAME_WIDTH
Width of the frames in the video stream.
Definition: videoio.hpp:135
@ CAP_PROP_FRAME_COUNT
Number of frames in the video file.
Definition: videoio.hpp:139
virtual double get(int propId) const
Returns the specified VideoCapture property.
Class for video capturing from video files, image sequences or cameras.
Definition: videoio.hpp:608
int waitKey(int delay=0)
Waits for a pressed key.
virtual bool set(int propId, double value)
Sets a property in the VideoCapture.
@ CAP_PROP_FRAME_HEIGHT
Height of the frames in the video stream.
Definition: videoio.hpp:136
@ CAP_PROP_POS_FRAMES
0-based index of the frame to be decoded/captured next.
Definition: videoio.hpp:133
void namedWindow(const String &winname, int flags=WINDOW_AUTOSIZE)
Creates a window.
void convertScaleAbs(InputArray src, OutputArray dst, double alpha=1, double beta=0)
Scales, calculates absolute values, and converts the result to 8-bit.
Size2i Size
Definition: types.hpp:347
void medianBlur(InputArray src, OutputArray dst, int ksize)
Blurs an image using the median filter.
virtual bool isOpened() const
Returns true if video capturing has been initialized already.
void imshow(const String &winname, InputArray mat)
Displays an image in the specified window.
void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT)
Blurs an image using a Gaussian filter.
void blur(InputArray src, OutputArray dst, Size ksize, Point anchor=Point(-1,-1), int borderType=BORDER_DEFAULT)
Blurs an image using the normalized box filter.
n-dimensional dense array class
Definition: mat.hpp:791
void Laplacian(InputArray src, OutputArray dst, int ddepth, int ksize=1, double scale=1, double delta=0, int borderType=BORDER_DEFAULT)
Calculates the Laplacian of an image.
#define CV_16S
Definition: interface.h:76
cv::String findFileOrKeep(const cv::String &relative_path, bool silentMode=false)
Definition: utility.hpp:1164
Designed for command line parsing.
Definition: utility.hpp:796
int createTrackbar(const String &trackbarname, const String &winname, int *value, int count, TrackbarCallback onChange=0, void *userdata=0)
Creates a trackbar and attaches it to the specified window.
"black box" representation of the file storage associated with a file on disk.
Definition: affine.hpp:51
@ WINDOW_AUTOSIZE
the user cannot resize the window, the size is constrainted by the image displayed.
Definition: highgui.hpp:184
virtual bool open(const String &filename, int apiPreference=CAP_ANY)
Opens a video file or a capturing device or an IP video stream for video capturing.