滑动条调节hsv的c++程序
时间: 2023-08-04 14:07:11 浏览: 186
以下是一个基于OpenCV库实现的HSV滑动条调节程序的示例代码:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat src = imread("image.jpg"); // 读取图像
cvtColor(src, src, COLOR_BGR2HSV); // 转换为HSV颜色空间
namedWindow("Trackbars", WINDOW_NORMAL); // 创建窗口
resizeWindow("Trackbars", 400, 300); // 调整窗口大小
int hmin = 0, smin = 0, vmin = 0;
int hmax = 179, smax = 255, vmax = 255;
createTrackbar("Hue Min", "Trackbars", &hmin, 179); // 创建Hue最小值滑动条
createTrackbar("Sat Min", "Trackbars", &smin, 255); // 创建Saturation最小值滑动条
createTrackbar("Val Min", "Trackbars", &vmin, 255); // 创建Value最小值滑动条
createTrackbar("Hue Max", "Trackbars", &hmax, 179); // 创建Hue最大值滑动条
createTrackbar("Sat Max", "Trackbars", &smax, 255); // 创建Saturation最大值滑动条
createTrackbar("Val Max", "Trackbars", &vmax, 255); // 创建Value最大值滑动条
while (true)
{
Mat hsv;
cvtColor(src, hsv, COLOR_BGR2HSV); // 转换为HSV颜色空间
// 根据滑动条上的值创建阈值范围
Scalar lower(hmin, smin, vmin);
Scalar upper(hmax, smax, vmax);
// 应用阈值范围来获取掩码
Mat mask;
inRange(hsv, lower, upper, mask);
// 将掩码应用到原始图像中
Mat result;
bitwise_and(src, src, result, mask);
imshow("Original", src);
imshow("Mask", mask);
imshow("Result", result);
if (waitKey(1) == 27) // 按下ESC键退出
break;
}
return 0;
}
```
在这个程序中,我们首先读取了一张图像并将其转换为HSV颜色空间。然后我们创建了6个滑动条,用于调节HSV颜色空间中的最小值和最大值。通过这些滑动条,我们可以创建一个阈值范围,并将其应用到原始图像中,从而得到一个掩码图像。最后,我们将掩码图像应用到原始图像中,得到只包含所选颜色的图像。
阅读全文