opencv HSV白色C++
时间: 2023-12-23 22:26:56 浏览: 101
```cpp
// 将BGR颜色空间转换为HSV颜色空间
cv::Mat bgrImage = cv::imread("white_image.jpg");
cv::Mat hsvImage;
cv::cvtColor(bgrImage, hsvImage, cv::COLOR_BGR2HSV);
// 定义白色的HSV范围
cv::Scalar lower_white = cv::Scalar(0, 0, 200);
cv::Scalar upper_white = cv::Scalar(180, 25, 255);
// 创建掩模
cv::Mat mask;
cv::inRange(hsvImage, lower_white, upper_white, mask);
// 将掩模应用于原始图像
cv::Mat whiteImage;
cv::bitwise_and(bgrImage, bgrImage, whiteImage, mask);
// 显示白色部分的图像
cv::imshow("White Image", whiteImage);
cv::waitKey(0);
```
相关问题
opencv颜色识别C++
以下是使用OpenCV进行颜色识别的C++示例代码:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读取图像
Mat image = imread("image.jpg");
// 检查图像是否成功加载
if (image.empty())
{
cout << "无法加载图像" << endl;
return -1;
}
// 转换图像为HSV颜色空间
Mat hsvImage;
cvtColor(image, hsvImage, COLOR_BGR2HSV);
// 定义颜色范围
Scalar lowerBound(20, 100, 100); // 最低颜色阈值
Scalar upperBound(30, 255, 255); // 最高颜色阈值
// 创建掩膜,将在指定颜色范围内的像素设置为白色,其他像素设置为黑色
Mat mask;
inRange(hsvImage, lowerBound, upperBound, mask);
// 对掩膜进行形态学去噪声处理
Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5));
morphologyEx(mask, mask, MORPH_OPEN, kernel);
// 查找轮廓
vector<vector<Point>> contours;
findContours(mask, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
// 遍历轮廓并绘制矩形框
for (size_t i = 0; i < contours.size(); i++)
{
Rect boundingRect = cv::boundingRect(contours[i]);
rectangle(image, boundingRect, Scalar(0, 255, 0), 2);
}
// 显示结果图像
imshow("Color Detection", image);
waitKey(0);
return 0;
}
```
这段代码使用OpenCV库进行颜色识别。它首先读取一张图像,然后将图像转换为HSV颜色空间。接下来,根据指定的颜色范围创建一个掩膜,将在该范围内的像素设置为白色,其他像素设置为黑色。然后,对掩膜进行形态学去噪声处理,以消除噪声。最后,通过查找轮廓并绘制矩形框来标记识别到的颜色区域。最终,显示结果图像。
opencv 寻找蓝色 C++
以下是使用OpenCV在C++中寻找蓝色的示例代码:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main() {
Mat src = imread("img.jpg");
if (src.empty()) {
cout << "Failed to read image" << endl;
return -1;
}
Mat hsv;
cvtColor(src, hsv, COLOR_BGR2HSV);
Mat mask;
inRange(hsv, Scalar(90, 70, 70), Scalar(130, 255, 255), mask);
Mat result;
bitwise_and(src, src, result, mask);
imshow("Original Image", src);
imshow("Blue Objects", result);
waitKey(0);
return 0;
}
```
这段代码首先读取图像,然后将图像从BGR颜色空间转换为HSV颜色空间。接下来,使用`inRange`函数根据设定的蓝色范围创建一个掩码(mask)。然后,使用`bitwise_and`函数将原始图像和掩码进行按位与操作,以提取出蓝色物体。最后,显示原始图像和提取出的蓝色物体。
阅读全文