// // Created by 阳坤 on 2022/2/23. // #include "image_blur_detection.h" int image_blur_detection(const char *filename) { const char *temp_image_url = filename; cv::Mat cvImage = cv::imread(temp_image_url); return doDetection(cvImage); } int bytes_blur_detection(uint8_t *pData, int len) { cv::Mat img; std::vector data; for (int i = 0; i < len; ++i) { data.push_back(pData[i]); } img = cv::imdecode(data, cv::IMREAD_COLOR); cv::flip(img, img, -1); img.channels(); return doDetection(img); } int doDetection(cv::Mat cvImage) { //如果读入图像失败 if (cvImage.empty()) { return -1; } else { cv::Mat grayCVImage; cv::cvtColor(cvImage, grayCVImage, cv::COLOR_BGR2GRAY); if (!grayCVImage.empty()) { cv::Mat laplacianImage; cv::Laplacian(grayCVImage, laplacianImage, CV_64F); cv::Scalar mu, sigma; cv::meanStdDev(laplacianImage, mu, sigma); cvImage.release(); grayCVImage.release(); return sigma.val[0] * sigma.val[0]; } } return -1; }