C语言使用opencv检测图片是否绿屏
以下是使用OpenCV检测图片是否为绿屏的C语言代码示例:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 读取图片
Mat img = imread("test.jpg", IMREAD_COLOR);
if (img.empty()) {
cout << "Could not read the image: " << endl;
return 1;
}
// 将图片转换为HSV色彩空间
Mat hsv;
cvtColor(img, hsv, COLOR_BGR2HSV);
// 定义绿色范围
Scalar lower_green = Scalar(40, 50, 50);
Scalar upper_green = Scalar(80, 255, 255);
// 检测绿色像素
Mat mask;
inRange(hsv, lower_green, upper_green, mask);
// 计算绿色像素比例
double green_ratio = countNonZero(mask) / (double)(img.rows * img.cols);
// 判断是否为绿屏
if (green_ratio > 0.1) {
cout << "This image is a green screen." << endl;
}
else {
cout << "This image is not a green screen." << endl;
}
return 0;
}
此代码将读取名为“test.jpg”的图片,将其转换为HSV色彩空间,并检测其中的绿色像素。如果绿色像素占总像素的10%以上,则判断该图片为绿屏。可以根据需要调整颜色范围和绿色像素比例阈值
原文地址: https://www.cveoy.top/t/topic/efJd 著作权归作者所有。请勿转载和采集!