辅导OpenCV Photo Booth 程序、代作OpenCV
- 首页 >> 其他For this project, you are to implement a prototype of "Photo Booth" by using
different kernels for image filter. The input image is obtained directly from the
web camera captured video. Your task is to apply different kernels triggered
by hitting different keys on the keyboard:
(1) Hit "i" shows the original video
The "identical" kernel is [0 0 0; 0 1 0; 0 0 0]. Semi-colon ";" indicates a new
row.
(2) Hit "g" shows the Gaussian blurred video
The "Gaussian" kernel is [1 2 1; 2 4 2; 1 2 1] * 1/16.
(3) Hit "m" shows the mean/average blurred video
The " mean" kernel is [1 1 1; 1 1 1; 1 1 1] * 1/9.
(4) Hit "e" shows the ordinary edge effect
The "edge" kernel is [-1 -1 -1; -1 8 -1; -1 -1 -1]
(5) Hit "v" shows the vertical edge effect by applying the Sobel filter
The vertical Sobel kernel is [-1 0 1; -2 0 2; -1 0 1]
(6) Hit "h" shows the horizontal edge effect by applying the Sobel filter
The horizontal Sobel kernel is [-1 -2 -1; 0 0 0; 1 2 1]
(7) Hit "s" shows the sharpen effect
The sharpen kernel is [0 -1 0; -1 5 -1; 0 -1 0]. If the result is not obvious, you
can change a bigger number than "5" for the center number, such as 7.
Hints:
You do not need to implement the filter from scratch. Instead, OpenCV
provides you with a convenient filter API: "filter2D()". You just need to use this
function directly and put two "Mat" variables as input with some other basic
parameters. The two "Mat" variables refer to the input original image and the
corresponding Kernel image. (please refer online document for further
details: http://docs.opencv.org/modules/imgproc/doc/filtering.html#void
filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel, Point
anchor, double delta, int borderType)"
You can start with the demo code for Gaussian blur posted as a basic
framework. What you need to do is to replace the four nested loops in the
demo code by using kernel functions. You are suggested to create a separate
function, e.g. myEffect(Mat original_frame) or myEffect(). This function is
called inside the while loop for every input video frame for effect processing.