【OpenCV】图像模糊检测
来源:互联网 发布:k是什么意思网络用语 编辑:程序博客网 时间:2024/05/01 04:12
在项目中的一个环节用到了模糊检测的相关内容
主要思想是先对原图像进行灰度化,然后用3x3的拉普拉斯算子进行滤波处理
再计算处理后图像的均值和方差,将方差当做模糊检测的阈值选定标准即可。
相关的程序如下所示:
#include <iostream>#include <opencv2\core\core.hpp>#include <opencv2\highgui\highgui.hpp>#include <opencv2\imgproc\imgproc.hpp>using namespace cv;using namespace std;bool blurDetect(Mat srcImage);int main(){//读入图片Mat img1 = imread("white1_1.bmp");double time = (double)getTickCount();bool flag = blurDetect(img1);time = ((double)getTickCount() - time) / getTickFrequency();cout << "所用时间为:" << time << "s" << endl;system("pause");return 0;}//模糊检测,如果原图像是模糊图像,返回0,否则返回1bool blurDetect(Mat srcImage){Mat gray1;if (srcImage.channels() != 1){//进行灰度化cvtColor(srcImage, gray1, CV_RGB2GRAY);}else{gray1 = srcImage.clone();}Mat tmp_m1, tmp_sd1;//用来存储均值和方差double m1 = 0, sd1 = 0;//使用3x3的Laplacian算子卷积滤波Laplacian(gray1, gray1, CV_16S, 3);//归到0~255convertScaleAbs(gray1, gray1);//计算均值和方差meanStdDev(gray1, tmp_m1, tmp_sd1);m1 = tmp_m1.at<double>(0, 0);//均值sd1 = tmp_sd1.at<double>(0, 0);//标准差//cout << "原图像:" << endl;cout << "均值: " << m1 << " , 方差: " << sd1*sd1 << endl;if (sd1*sd1 < 400){cout << "原图像是模糊图像" << endl;return 0;}else{cout << "原图像是清晰图像" << endl;return 1; }}
阅读全文
1 0
- 【OpenCV】图像模糊检测
- 基于OpenCV的图像模糊与否检测
- Opencv图像模糊
- OpenCV-图像模糊
- opencv之图像模糊
- opencv:图像模糊处理
- OpenCV--模糊图像操作
- 【python 图像检测】图像模糊检测算法
- 图像腐蚀,模糊,canny边缘检测,opencv中摄像头捕捉的图像
- opencv入门学习第一章,对图像基本的操作(图像腐蚀、图像模糊、canny图像边缘检测)
- 用sift检测模糊图像
- 【opencv练习14 - 模糊图像 】
- 【OpenCV学习笔记】2.3图像的腐蚀、膨胀、模糊、边缘检测
- opencv 图像阴影检测
- opencv 图像阴影检测
- OpenCV检测图像轮廓
- opencv图像边缘检测
- opencv 图像阴影检测
- UML学习总结
- input文件选择框 springmvc实现多文件上传
- HashMap的基本用法
- lower_bound的返回值
- git 使用介绍
- 【OpenCV】图像模糊检测
- 单形体(simplex)
- opengles实现雾化效果
- Python学习—1—第一个HelloWorld
- 爱与灾难·《致我们终将逝去的青春》
- Linux学习笔记之第二周第1次课(PATH环境变量、cp命令、mv命令及查看文档的cat、more、less、head和tail命令)
- Qt 自定义槽
- c++ 成员函数 成员函数指针 委托 封装成对象
- cocos2dx HttpClient实现rapidjson格式数据传输