文章目录

  • 二十六、直方图均衡化
    • 26.1 quickopencv.h
    • 26.2 QuickDemo.cpp
    • 26.3 test.cpp
  • 二十七、图像卷积操作
    • 27.1 quickopencv.h
    • 27.2 QuickDemo.cpp
    • 27.3 test.cpp
  • 二十八、高斯模糊
    • 28.1 quickopencv.h
    • 28.2 QuickDemo.cpp
    • 28.3 test.cpp
  • 二十九、高斯双边模糊
    • 29.1 quickopencv.h
    • 29.2 QuickDemo.cpp
    • 29.3 test.cpp
  • 三十、案例:实时人脸检测
    • 30.1 quickopencv.h
    • 30.2 QuickDemo.cpp
    • 30.3 test.cpp

知识来源:哔哩哔哩。以下内容仅为学习笔记,不做其他用途。

二十六、直方图均衡化

知识点:

  • equalizeHist(gray, dst);//直方图均衡化。参数包括:输入图像,输出图像。

26.1 quickopencv.h

#include<opencv2/opencv.hpp>
using namespace cv;class QuickDemo //QuickDemo对象
{public:void histogram_eq_demo(Mat &image);};

26.2 QuickDemo.cpp

#include<quickopencv.h>
#include<iostream>void QuickDemo::histogram_eq_demo(Mat &image)
{Mat gray;cvtColor(image, gray, COLOR_BGR2GRAY);//BGR转灰度图像imshow("灰度图像", gray);//直方图均衡化只支持灰度图像,不支持彩色图像。Mat dst;equalizeHist(gray, dst);imshow("直方图均衡化演示", dst);
}

26.3 test.cpp

#include<opencv2/opencv.hpp>
#include<iostream>
#include<quickopencv.h>using namespace std;
using namespace cv;int main(int argc,char **argv)
{Mat src = imread("D:/opencv/pictures/3 (4).jpeg", IMREAD_ANYCOLOR);//B,G,R蓝绿红通道图像if (src.empty()){printf("could not load image");         //如果路径不正确,则显示无法导入图片。return -1;}namedWindow("输入窗口", WINDOW_AUTOSIZE);   imshow("输入窗口", src);                  //在窗口显示图像QuickDemo qd;                              //调用之前创建的类对象    qd.histogram_eq_demo(src);waitKey(0);                                   //暂停程序,等待一个按键输入,单位msdestroyAllWindows();                      //销毁所有创建的窗口return 0;
}

二十七、图像卷积操作

知识点:

  • blur(image, dst, Size(5, 5), Point(-1, -1));//卷积操作。//参数包括:image为输入图像;dst为输出图像;Size(5, 5)为卷积核大小5*5;Point(-1, -1)为默认的中心锚点。

27.1 quickopencv.h

#include<opencv2/opencv.hpp>
using namespace cv;class QuickDemo //QuickDemo对象
{public:void blur_demo(Mat &image);
};

27.2 QuickDemo.cpp

#include<quickopencv.h>
#include<iostream>void QuickDemo::blur_demo(Mat &image)
{Mat dst;blur(image, dst, Size(5, 5), Point(-1, -1));imshow("图像卷积操作", dst);
}

27.3 test.cpp

#include<opencv2/opencv.hpp>
#include<iostream>
#include<quickopencv.h>using namespace std;
using namespace cv;int main(int argc,char **argv)
{Mat src = imread("D:/opencv/pictures/3 (1).jpeg", IMREAD_ANYCOLOR);//B,G,R蓝绿红通道图像if (src.empty()){printf("could not load image");         //如果路径不正确,则显示无法导入图片。return -1;}namedWindow("输入窗口", WINDOW_AUTOSIZE);   imshow("输入窗口", src);                  //在窗口显示图像QuickDemo qd;                              //调用之前创建的类对象    qd.blur_demo(src);waitKey(0);                                   //暂停程序,等待一个按键输入,单位msdestroyAllWindows();                      //销毁所有创建的窗口return 0;
}

二十八、高斯模糊

知识点:

  • GaussianBlur(image, dst, Size(5, 5), 15);//高斯模糊。参数包括:image为输入图像;dst为输出图像;Size(5, 5)为内核大小5*5,必须是正数和奇数;第四个参数:double类型的sigmaX,表示高斯核函数在X方向上的标准偏差;第五个参数:double类型的sigmaY,表示高斯核函数在Y方向上的标准偏差。

28.1 quickopencv.h

#include<opencv2/opencv.hpp>
using namespace cv;class QuickDemo //QuickDemo对象
{public:void gaussian_blur_demo(Mat &image);
};

28.2 QuickDemo.cpp

#include<quickopencv.h>
#include<iostream>void QuickDemo::gaussian_blur_demo(Mat &image)
{Mat dst;GaussianBlur(image, dst, Size(5, 5), 15);imshow("高斯模糊", dst);
}

28.3 test.cpp

#include<opencv2/opencv.hpp>
#include<iostream>
#include<quickopencv.h>using namespace std;
using namespace cv;int main(int argc,char **argv)
{Mat src = imread("D:/opencv/pictures/3 (1).jpeg", IMREAD_ANYCOLOR);//B,G,R蓝绿红通道图像if (src.empty()){printf("could not load image");         //如果路径不正确,则显示无法导入图片。return -1;}namedWindow("输入窗口", WINDOW_AUTOSIZE);   imshow("输入窗口", src);                  //在窗口显示图像QuickDemo qd;                              //调用之前创建的类对象    qd.gaussian_blur_demo(src);waitKey(0);                                  //暂停程序,等待一个按键输入,单位msdestroyAllWindows();                      //销毁所有创建的窗口return 0;
}

二十九、高斯双边模糊

知识点:

  • bilateralFilter(image, dst, 0, 100, 0);//高斯双边模糊。参数包括:参数包括:image为输入图像;dst为输出图像;表示在滤波过程中每个像素邻域的直径。如果这个值设为非正数,则从第五个参数sigmaSpace来计算它;第四个参数:颜色空间滤波器的sigma值,这个值越大,表示该像素邻域内有越宽广的颜色被混合到一起,会产生较大的半相等颜色区域;第五个参数:坐标空间中滤波器的sigma值,坐标空间的标准方差,它的值越大,则越远的像素会相互影响,从而使更大的区域中足够相似的颜色获取相同的颜色。

29.1 quickopencv.h

#include<opencv2/opencv.hpp>
using namespace cv;class QuickDemo //QuickDemo对象
{public:void bifilter_demo(Mat &image);
};

29.2 QuickDemo.cpp

#include<quickopencv.h>
#include<iostream>void QuickDemo::bifilter_demo(Mat &image)
{Mat dst;bilateralFilter(image, dst, 0, 100, 0);namedWindow("高斯双边模糊", WINDOW_FREERATIO);imshow("高斯双边模糊", dst);
}

29.3 test.cpp

#include<opencv2/opencv.hpp>
#include<iostream>
#include<quickopencv.h>using namespace std;
using namespace cv;int main(int argc,char **argv)
{Mat src = imread("D:/opencv/pictures/3 (1).jpeg", IMREAD_ANYCOLOR);//B,G,R蓝绿红通道图像if (src.empty()){printf("could not load image");         //如果路径不正确,则显示无法导入图片。return -1;}namedWindow("输入窗口", WINDOW_AUTOSIZE);   imshow("输入窗口", src);                  //在窗口显示图像QuickDemo qd;                              //调用之前创建的类对象    qd.bifilter_demo(src);waitKey(0);                                   //暂停程序,等待一个按键输入,单位msdestroyAllWindows();                      //销毁所有创建的窗口return 0;
}

三十、案例:实时人脸检测

30.1 quickopencv.h

#include<opencv2/opencv.hpp>
using namespace cv;class QuickDemo //QuickDemo对象
{public:void face_detecction_demo();
};

30.2 QuickDemo.cpp

#include<quickopencv.h>
#include<iostream>void QuickDemo::face_detecction_demo()
{std::string root_dir = "D:/opencv/sources/samples/dnn/face_detector/";dnn::Net net = dnn::readNetFromTensorflow(root_dir+"opencv_face_detector_uint8.pb",root_dir+"opencv_face_detector.pbtxt");VideoCapture capture("D:/opencv/pictures/1234.mp4");Mat frame;while (true){capture.read(frame);if (frame.empty()){break;}Mat blob = dnn::blobFromImage(frame,1.0,Size(300,300),Scalar(104,177,123),false,false);net.setInput(blob);Mat probs = net.forward();Mat detectionMat(probs.size[2],probs.size[3],CV_32F,probs.ptr<float>());for (int i = 0; i < detectionMat.rows; i++){float confidence = detectionMat.at<float>(i, 2);if (confidence > 0.5){int x1 = static_cast<int>(detectionMat.at<float>(i, 3)*frame.cols);int y1 = static_cast<int>(detectionMat.at<float>(i, 4)*frame.rows);int x2 = static_cast<int>(detectionMat.at<float>(i, 5)*frame.cols);int y2 = static_cast<int>(detectionMat.at<float>(i, 6)*frame.rows);Rect box(x1,y1,x2-x1,y2-y1);rectangle(frame,box,Scalar(0,0,255),2,8,0);}}imshow("人脸检测演示",frame);int c = waitKey(1);if (c == 27) {break;    }}
}

30.3 test.cpp

#include<opencv2/opencv.hpp>
#include<iostream>
#include<quickopencv.h>using namespace std;
using namespace cv;int main(int argc,char **argv)
{Mat src = imread("D:/opencv/pictures/3 (1).jpeg", IMREAD_ANYCOLOR);//B,G,R蓝绿红通道图像if (src.empty()){printf("could not load image");         //如果路径不正确,则显示无法导入图片。return -1;}namedWindow("输入窗口", WINDOW_AUTOSIZE);   imshow("输入窗口", src);                  //在窗口显示图像QuickDemo qd;                              //调用之前创建的类对象    qd.face_detecction_demo();waitKey(0);                                   //暂停程序,等待一个按键输入,单位msdestroyAllWindows();                      //销毁所有创建的窗口return 0;
}

OpenCV(C++版本)基础相关(7):直方图均衡化、图像卷积操作、高斯模糊、高斯双边模糊、实时人脸检测案例相关推荐

  1. 【OpenCV 例程200篇】46. 直方图均衡化

    [OpenCV 例程200篇]46. 直方图均衡化 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 图像直方图是反映图 ...

  2. opencv入门基础(七)基于dlib进行本地图片、实时人脸检测

    opencv入门基础(七)基于dlib进行本地图片.实时人脸检测 一.背景知识 1.Dlib是一个深度学习开源工具,基于C++开发,也支持Python开发接口. 2.由于Dlib对于人脸特征提取效果很 ...

  3. 基于MATLAB对低照度图像进行直方图均衡化和同态滤波操作

    资源下载地址:https://download.csdn.net/download/sheziqiong/85897108 资源下载地址:https://download.csdn.net/downl ...

  4. 计算机视觉OpenCv学习系列:第十部分、实时人脸检测

    第十部分.实时人脸检测 第一节.实时人脸检测 1.OpenCV人脸检测支持演化 2.OpenCV DNN检测函数 3.代码练习与测试 学习参考 第一节.实时人脸检测 1.OpenCV人脸检测支持演化 ...

  5. 使用mediapipe和OpenCV实现摄像头实时人脸检测

    # 摄像头实时人脸检测 # opencv import timeimport cv2 # mediapipe ai工具包 import mediapipe as mp # 进度条库 from tqdm ...

  6. 【OpenCV学习】第6课:图像模糊(中值滤波,高斯双边滤波)

    仅自学做笔记用,后续有错误会更改 理论 中值滤波:对核内数值先进行排序,再取中间那个值 注1:中值滤波属于统计学的排序滤波器 注2:中值滤波对椒盐噪声有很好的抑制作用 高斯双边滤波(美颜磨皮效果一般都 ...

  7. 【OpenCV 4】图像卷积操作(Blur)

    一.编程环境: OpenCV  4.1.0 IDE Visual Studio 2017 Enterprise (15.9.13) 操作系统 Windows 10 x64 中文专业版 (1903) 二 ...

  8. c语言增强图像直方图均衡化,图像直方图均衡化增强opencv与C语言版

    本文实现彩色图像的全局直方图均衡.分别对R/G/B三通道均衡,读写图片采用OpenCV.代码如下: #include //#include //#include //#include #include ...

  9. 在OpenCV里实现限制对比度的直方图均衡化

    下面将要介绍功能强大.用途广泛.影响深远的对比度有限的自适应直方图均衡(CLAHE,Contrast Limited Adaptive Histogram Equalization)算法.尽管最初它仅 ...

最新文章

  1. SQL Server 查询性能优化——覆盖索引(二)
  2. 大会剧透 | IDEA大会精彩议题全释放
  3. UML模型中的图-静态图【类图、对象图】
  4. 汉能:让人类像叶绿素一样利用太阳能
  5. 基础知识 + 面试题目 总结 索引页
  6. 关于IE的RegExp.exec
  7. 练习题︱基于今日头条开源数据(二)——两款Apriori算法实践
  8. python判断数组中是否有重复元素_python经典面试算法题4.1:如何找出数组中唯一的重复元素...
  9. BZOJ 1597 [Usaco2008 Mar]土地购买 (斜率优化dp)
  10. T100服务端接口开发步骤
  11. 深度Linux挂载盘
  12. FlashFXP中文破解 指南
  13. 模仿支付宝支付成功特效:svg圆圈转动+打钩
  14. Laravel版本更新异常4.2.8- 4.2.9 Declaration of ... CompilerEngine ... should be compa
  15. 团队作业第五次—项目系统设计与数据库设计
  16. line-height的底线、基线、中线、顶线
  17. c语言 运行结果是空白的,为什么输出是空白
  18. 我,是一个培训班出来的程序员
  19. 如何将彩色证件照调成黑白
  20. 基于区块链的学生课程成绩查询系统

热门文章

  1. 大数据分析的过程是怎样的
  2. 谷歌地图要发力:研发室内3D地图 提供虚拟现实体验
  3. 视频教程-Threejs GeoJSON离线3D地图-JavaScript
  4. 你所不知道的蓝牙适配器的好处
  5. 报未将对象引用设置到对象的示例的错误原因
  6. linux端口 fcs校验,linux – 如何接收错误的以太网帧并禁用CRC / FCS计算?
  7. CRC码计算及原理(FCS帧校验序列生成)
  8. 基于GA遗传优化的flog任务调度算法matlab仿真
  9. 利用POI 从Excel取图,自动制作PPT
  10. DEDE仿站经常用到的基本标签和变量