opencv 进行图像的花屏检测(模糊检测)

参考:

Blur detection with OpenCV

https://www.cnblogs.com/arkenstone/p/7900978.html

先对图像用拉普拉斯算子进行滤波,然后求取得到的结果图像的方差,如果方差小于一定值则图片视为模糊。利用python很好实现:

img2gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # 将图片压缩为单通道的灰度图
score = cv2.Laplacian(img2gray, cv2.CV_64F).var()

C++实现如下:

bool isImageBlurry(cv::Mat& img)
{
    cv::Mat matImageGray;
    // converting image's color space (RGB) to grayscale
    cv::cvtColor(img, matImageGray, CV_BGR2GRAY);
    cv::Mat dst, abs_dst;
        cv::Laplacian(matImageGray, dst, CV_16S, 3);
        cv::convertScaleAbs( dst, abs_dst );
    cv::Mat tmp_m, tmp_sd;  
    double m = 0, sd = 0;  
    int threshold = 1000;
    cv::meanStdDev(dst, tmp_m, tmp_sd);  
    m = tmp_m.at<double>(0,0);  
    sd = tmp_sd.at<double>(0,0);  
    std::cout << "StdDev: " << sd * sd << std::endl; 
    return ((sd * sd) <= threshold);
}

原文链接: https://www.cnblogs.com/rainsoul/p/8650779.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/271193

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 下午9:46
下一篇 2023年2月14日 下午9:47

相关推荐