opencv识别图像红色区域,并输出红色区域中心点坐标

适用小白,大佬勿喷

个人配置:vs2013 ; opencv 3.0 ;

直接上效果图

注意:右下角的水印把中心点挡住了,要仔细看才能看到

下面是代码:

#include <iostream>
#include<opencv2\opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#define PI 3.1415926

using namespace cv;
using namespace std;

void RGB2HSV(double red, double green, double blue, double& hue, double& saturation, double& intensity)
{
	 
	double r, g, b;
	double h, s, i;

	double sum;
	double minRGB, maxRGB;
	double theta;

	r = red / 255.0;
	g = green / 255.0;
	b = blue / 255.0;

	minRGB = ((r<g) ? (r) : (g));
	minRGB = (minRGB<b) ? (minRGB) : (b);

	maxRGB = ((r>g
  • 9
    点赞
  • 171
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
OpenCV是一个开源的计算机视觉库,它可以用于图像处理、计算机视觉和机器学习等领域。在OpenCV中,可以使用C++语言进行颜色识别。具体步骤如下: 1. 读取图像:使用OpenCV中的imread函数读取图像。 2. 转换颜色空间:将图像从BGR颜色空间转换为HSV颜色空间,可以使用cvtColor函数实现。 3. 设定颜色阈值:根据需要识别的颜色,设定颜色的上下阈值。 4. 进行颜色识别:使用inRange函数对图像进行颜色识别,得到二值图像。 5. 对二值图像进行处理:可以使用形态学操作对二值图像进行处理,例如腐蚀、膨胀等。 6. 查找轮廓:使用findContours函数查找二值图像中的轮廓。 7. 绘制轮廓:使用drawContours函数将轮廓绘制在原图像上。 下面是一个简单的示例代码,用于识别红色物体: ```cpp #include <opencv2/opencv.hpp> using namespace cv; int main() { // 读取图像 Mat src = imread("test.jpg"); // 转换颜色空间 Mat hsv; cvtColor(src, hsv, COLOR_BGR2HSV); // 设定颜色阈值 Scalar lower_red = Scalar(0, 100, 100); Scalar upper_red = Scalar(10, 255, 255); // 进行颜色识别 Mat mask; inRange(hsv, lower_red, upper_red, mask); // 对二值图像进行处理 Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3)); erode(mask, mask, kernel); dilate(mask, mask, kernel); // 查找轮廓 std::vector<std::vector<Point>> contours; findContours(mask, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE); // 绘制轮廓 drawContours(src, contours, -1, Scalar(0, 0, 255), 2); // 显示结果 imshow("result", src); waitKey(0); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值