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("green_screen.jpg");
// 转换颜色空间为HSV
Mat hsv_image;
cvtColor(image, hsv_image, COLOR_BGR2HSV);
// 定义绿色区间的范围
Scalar lower_green = Scalar(45, 100, 50);
Scalar upper_green = Scalar(75, 255, 255);
// 检测绿色区域
Mat mask;
inRange(hsv_image, lower_green, upper_green, mask);
// 去除绿色区域
Mat result;
bitwise_not(mask, mask);
bitwise_and(image, image, result, mask);
// 显示结果
imshow("Original Image", image);
imshow("Green Screen Mask", mask);
imshow("Result", result);
waitKey(0);
return 0;
}
该代码中,我们首先读取一张包含绿屏的图片,然后将其转换为HSV颜色空间。接着,我们定义了绿色区间的范围,并使用inRange函数检测出绿色区域。最后,我们使用bitwise_and函数将原图和掩膜做与运算,去除绿色区域,得到最终的结果。
在运行代码时,我们可以看到三个窗口,分别显示原图、绿屏掩膜和去除绿屏后的结果。可以通过调整绿色区间的范围来适应不同的绿屏拍摄环境
原文地址: https://www.cveoy.top/t/topic/efI4 著作权归作者所有。请勿转载和采集!