目的
了解和实践OpenCV在空间滤波上的应用。
方法
Source:机器视觉技术与应用_中国大学MOOC(慕课) (icourse163.org)
当图像中的边缘信息和卷积核的形状是相符合的,得到的响应值最大。
滤波和边缘提取函数
中值滤波 |
|
均值滤波 |
|
高斯均值滤波 |
|
Sobel边缘提取 |
不同函数效果展示
中值滤波 |
|
||||||
高斯均值滤波 |
|
||||||
Sobel边缘提取 |
|
简单磨皮程序的实现
原理 |
|
实验代码 |
#include<opencv2/opencv.hpp> using namespace std; using namespace cv; int main() { void Convolution_app(); Convolution_app(); return 0; } void Convolution_app() { //简单的磨皮程序 //打开摄像头 VideoCapture cap(0); //肤色h范围 double i_minH = 0; double i_maxH = 20; //肤色饱和度s范围 double i_minS = 43; double i_maxS = 255; //肤色亮度范围 double i_minV = 55; double i_maxV = 255; while (true) { //定义图像容器 Mat frame; Mat hsvMat; Mat maskMat; Mat objectMat; Mat gussMat; cap >> frame;//读取当前帧的图像 //将图像转为hsv色阈 cvtColor(frame, hsvMat, COLOR_BGR2HSV); //初始化maskMat frame.copyTo(maskMat); //利用inRange函数对图片进行hsv筛选 inRange(hsvMat, Scalar(i_minH, i_minS, i_minV), Scalar(i_maxH, i_maxS, i_maxV), maskMat); //将原图拷入输出图像中 frame.copyTo(objectMat); //对图像进行高斯滤波 GaussianBlur(frame, gussMat, Size(5, 5), 3, 0); //高斯滤波后的人脸部分送入输出图像中 gussMat.copyTo(objectMat, maskMat); //显示结果 imshow("磨皮前", frame); imshow("mask", maskMat); imshow("磨皮后", objectMat); waitKey(30); } } |
效果展示 |
文章来源:https://www.toymoban.com/news/detail-795922.html 文章来源地址https://www.toymoban.com/news/detail-795922.html |
结果
讨论
到了这里,关于OpenCV-空间滤波学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!