IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> [OpenCV3]显示鼠标点击处的BRG值 -> 正文阅读

[人工智能][OpenCV3]显示鼠标点击处的BRG值

问题描述:
当鼠标点击图像时,读取鼠标对应位置的像素值(BGR),并且以文本的形式在鼠标在屏幕中所在的位置显示出来。

问题分析
将任务进行分解,
1、 知道鼠标在图像上的位置。
2、 返回图像对应位置的像素值。
3、 文本显示。

主要函数:
1、OpenCV的鼠标事件在回调函数中有一个参数值有关鼠标的当前位置。
回调函数的接口协议:
Void your_mouse_callback(
int event; //鼠标事件类型
int x, //鼠标事件的x坐标
int y, //鼠标事件的y坐标
int flag;
void* param
);

2、Mat类型的图像返回(x,y)处对应的BGR值可以用:
B: img.at(x, y)[0]
G: img.at(x, y)[1]
R: img.at(x, y)[2]

3.文本显示的函数:cv::putText()(省略了函数的参数)

解答

//任务要求:读取一张照片,并在用户点击图片时,读取当前鼠标对应的位置像素值
//并且以文本的形式在鼠标在屏幕中的位置显示出来。

#include<opencv2/opencv.hpp>

using namespace cv;

void my_mouse_callback(
	int event, int x, int y, int flags, void* param
);

void help()
{
	std::cout<< "显示鼠标点击处的BGR值." << std::endl;
}

int B, G, R;
String s;

int main()
{
	help();
	Mat img, temp;
	img = imread("C:/Users/limimi/Desktop/learning/OpenCV/Learning-OpenCV-3_examples-master/fruits.jpg");
	img.copyTo(temp);

	namedWindow("fruit", CV_WINDOW_AUTOSIZE);
	
	while (1){
	
		setMouseCallback("fruit", my_mouse_callback, (void*)&temp);
		imshow("fruit", temp);

		if ((waitKey(10) ==83)|| (waitKey(10) == 115))//按下s键刷新图像,83,115分别为s,S的ASCII码
		{
			img.copyTo(temp);
		};

		if (waitKey(15) == 27) break;
	}

	return 0;
}

//鼠标的callback定义

void my_mouse_callback(int event, int x, int y, int flags, void* param)
{
	Mat& img = *(Mat*)param;

	switch (event)
	{
	case EVENT_LBUTTONDOWN:
	{
		B = img.at<Vec3b>(x, y)[0];
		G = img.at<Vec3b>(x, y)[1];
		R = img.at<Vec3b>(x, y)[2];

		s = "B:"+std::to_string(B)+ "G:" + std::to_string(G)+"R:" + std::to_string(R);

	}
	break;
	case CV_EVENT_LBUTTONUP:
	{
		putText(img, s, Point(x, y), FONT_HERSHEY_DUPLEX ,0.5, Scalar(0, 0, 0));
	}
	break;
	}
}


效果展示:

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-27 11:51:08  更:2021-08-27 11:52:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 17:51:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码