C语言使用opencv检测图片花屏
以下是使用OpenCV检测图片花屏的C语言代码示例:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 读取图片
Mat image = imread("test.jpg", CV_LOAD_IMAGE_GRAYSCALE);
// 检测花屏
Mat blurred, diff;
GaussianBlur(image, blurred, Size(9, 9), 2);
absdiff(image, blurred, diff);
threshold(diff, diff, 30, 255, CV_THRESH_BINARY);
// 显示结果
namedWindow("Original Image", WINDOW_NORMAL);
imshow("Original Image", image);
namedWindow("Blurred Image", WINDOW_NORMAL);
imshow("Blurred Image", blurred);
namedWindow("Difference Image", WINDOW_NORMAL);
imshow("Difference Image", diff);
waitKey();
return 0;
}
该代码首先使用OpenCV的imread函数读取一张灰度图片。
然后,使用高斯模糊(GaussianBlur)函数对图片进行模糊处理,生成一个模糊图像。
接着,使用absdiff函数计算原始图像和模糊图像之间的差异,并使用threshold函数将差异值超过30的像素设为255,其余设为0,生成一个二值化图像。
最后,使用namedWindow和imshow函数将原始图片、模糊图片和差异图片显示出来,并等待用户按下任意键退出程序。
如果差异图片中存在很多白色像素,说明图片存在花屏问题
原文地址: https://www.cveoy.top/t/topic/efIQ 著作权归作者所有。请勿转载和采集!