OpenCV
5.0.0
Open Source Computer Vision
Loading...
Searching...
No Matches
samples/cpp/snippets/phase_corr.cpp
An example using the phaseCorrelate function
#include "
opencv2/core.hpp
"
#include "
opencv2/videoio.hpp
"
#include "
opencv2/highgui.hpp
"
#include "
opencv2/imgproc.hpp
"
using namespace
cv
;
int
main
(
int
,
char
* [])
{
VideoCapture
video(0);
Mat
frame, curr, prev, curr64f, prev64f, hann;
char
key;
do
{
video >> frame;
cvtColor
(frame, curr,
COLOR_RGB2GRAY
);
if
(prev.
empty
())
{
prev = curr.
clone
();
createHanningWindow
(hann, curr.
size
(),
CV_64F
);
}
prev.
convertTo
(prev64f,
CV_64F
);
curr.
convertTo
(curr64f,
CV_64F
);
Point2d
shift =
phaseCorrelate
(prev64f, curr64f, hann);
double
radius = std::sqrt(shift.
x
*shift.
x
+ shift.
y
*shift.
y
);
if
(radius > 5)
{
// draw a circle and line indicating the shift direction...
Point
center(curr.
cols
>> 1, curr.
rows
>> 1);
circle
(frame, center, (
int
)radius,
Scalar
(0, 255, 0), 3,
LINE_AA
);
line
(frame, center,
Point
(center.
x
+ (
int
)shift.
x
, center.
y
+ (
int
)shift.
y
),
Scalar
(0, 255, 0), 3,
LINE_AA
);
}
imshow
(
"phase shift"
, frame);
key = (char)
waitKey
(2);
prev = curr.
clone
();
}
while
(key != 27);
// Esc to exit...
return
0;
}
cv::Mat
Comma-separated Matrix Initializer.
Definition
mat.hpp:964
cv::Mat::clone
CV_NODISCARD_STD Mat clone() const
Creates a full copy of the array and the underlying data.
cv::Mat::size
MatSize size
Definition
mat.hpp:2511
cv::Mat::cols
int cols
Definition
mat.hpp:2488
cv::Mat::empty
bool empty() const
Returns true if the array has no elements.
cv::Mat::rows
int rows
the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions
Definition
mat.hpp:2488
cv::Mat::convertTo
void convertTo(OutputArray m, int rtype, double alpha=1, double beta=0) const
Converts an array to another data type with optional scaling.
cv::Point_::y
_Tp y
y coordinate of the point
Definition
types.hpp:202
cv::Point_::x
_Tp x
x coordinate of the point
Definition
types.hpp:201
cv::VideoCapture
Class for video capturing from video files, image sequences or cameras.
Definition
videoio.hpp:790
cv::Point
Point2i Point
Definition
types.hpp:209
cv::Point2d
Point_< double > Point2d
Definition
types.hpp:208
cv::Scalar
Scalar_< double > Scalar
Definition
types.hpp:712
CV_64F
#define CV_64F
Definition
interface.h:60
cv::imshow
void imshow(const String &winname, InputArray mat)
Displays an image in the specified window.
cv::waitKey
int waitKey(int delay=0)
Waits for a pressed key.
cv::cvtColor
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0, AlgorithmHint hint=cv::ALGO_HINT_DEFAULT)
Converts an image from one color space to another.
cv::COLOR_RGB2GRAY
@ COLOR_RGB2GRAY
[8U/16U/32F]
Definition
imgproc.hpp:548
cv::line
void line(InputOutputArray img, Point pt1, Point pt2, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
Draws a line segment connecting two points.
cv::circle
void circle(InputOutputArray img, Point center, int radius, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
Draws a circle.
cv::LINE_AA
@ LINE_AA
antialiased line
Definition
imgproc.hpp:879
cv::phaseCorrelate
Point2d phaseCorrelate(InputArray src1, InputArray src2, InputArray window=noArray(), double *response=0)
The function is used to detect translational shifts that occur between two images.
cv::createHanningWindow
void createHanningWindow(OutputArray dst, Size winSize, int type)
This function computes a Hanning window coefficients in two dimensions.
highgui.hpp
main
int main(int argc, char *argv[])
Definition
highgui_qt.cpp:3
core.hpp
imgproc.hpp
cv
Definition
core.hpp:107
videoio.hpp
Generated on
for OpenCV by
1.15.0