基于opencv3.3获取图片某点处RGB及HSV值完整工程

本文介绍了一个使用OpenCV的简单程序,该程序通过鼠标点击事件获取图像中指定像素的RGB与HSV颜色值,并在图像上标记点击位置。代码实现了窗口创建、鼠标回调函数设置及颜色空间转换等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文献:http://blog.youkuaiyun.com/jiamuju84/article/details/52893239?locationNum=8&fps=1

完整工程:

点此下载

放代码:

#include<opencv2\opencv.hpp>
#include <ctype.h>
#include "iostream"
using namespace std;
using namespace cv;
void on_mouse(int EVENT, int x, int y, int flags, void* userdata);
int main(int argc, char** argv)
{

	Mat src, hsv;
	//此处更改图片地址
	src = imread("D:\\PLATE\\1.bmp");
	namedWindow("【display】");
	setMouseCallback("【display】", on_mouse, &src);
	while (1)
	{
		imshow("【display】", src);
		waitKey(40);
	}
}
void on_mouse(int EVENT, int x, int y, int flags, void* userdata)
{
	Mat rgb,hsv;
	rgb = *(Mat*)userdata;
	Mat temp;
	cvtColor(*(Mat*)userdata, hsv, CV_RGB2HSV);
	Point p(x, y);
	switch (EVENT)
	{
	case EVENT_LBUTTONDOWN:
	{
		
			printf("b=%d\t", rgb.at<Vec3b>(p)[0]);
			printf("g=%d\t", rgb.at<Vec3b>(p)[1]);
			printf("r=%d\n", rgb.at<Vec3b>(p)[2]);
			
			printf("H=%d\t", hsv.at<Vec3b>(p)[0]);
			printf("S=%d\t", hsv.at<Vec3b>(p)[1]);
			printf("V=%d\n", hsv.at<Vec3b>(p)[2]);
			circle(rgb, p, 2, Scalar(255), 3);
	}
	break;

	}
} 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值