1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- //
- // 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<uchar> 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;
- }
|