C++中键盘响应结合OpenCV库进行图像灰度图、HSV图转换和亮度调整

QuickDemo.cpp

cpp 复制代码
#include<quick_opencv.h>
//键盘响应
void QuickDemo::key_demo(Mat &image)
{
	Mat dst=Mat::zeros(image.size(),image.type());
	while (true) {
		char c = waitKey(100);
		if (c == 27) {//key #esc,退出
			break;
		}
		if (c == 49) {//key #1,按键1,打印you print key #1,将原图变灰度图并展示
			std::cout << "you print key #1" << std::endl;
			cvtColor(image, dst, COLOR_BGR2GRAY);
			
		}
		if (c == 50) {//key #2,按键2,打印you print key #2,将原图变HSV图并展示
			std::cout << "you print key #2" << std::endl;
			cvtColor(image, dst, COLOR_BGR2HSV);
		}
		if (c == 51) {//key #3,按键3,打印you print key #3,将原图增加50的亮度并展示
			std::cout << "you print key #3" << std::endl;
			dst = Scalar(50, 50, 50);
			add(image, dst, dst);
		}
		imshow("键盘响应", dst);
	}
}

quick_opencv.h

cpp 复制代码
#include<opencv2\opencv.hpp>
using namespace cv;
class QuickDemo{
    public:
		void key_demo(Mat &image);//键盘响应
};

main.cpp

cpp 复制代码
#include<opencv2/opencv.hpp>
#include<quick_opencv.h>
#include<iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
	
	//读取并显示图像,如果imread返回的Mat对象(src)是空的,打印错误消息并退出程序。
	Mat src = imread("C:/Users/Desktop/opencv-0/win.png");//B G R 蓝绿红
	if (src.empty())
	{
		printf("could not find the image...\n");
		return -1;
	}
	namedWindow("原图", WINDOW_FREERATIO);//创建一个可以自由调整比例的窗口
	imshow("原图", src);

	//创建QuickDemo类的实例qd
	QuickDemo qd;
	//键盘响应
	qd.key_demo(src);
	
	//等待用户输入并清理资源
	waitKey(0);
	destroyAllWindows();
	return 0;
}


按键esc退出程序。

注意必须点击原图上再输入1或2或3才有响应。

相关推荐
蜕变的土豆13 分钟前
工业监控RTSP取流-实践指南
c++·视频
进化中的刀盾兽14 分钟前
从零实现 C++ Json-Rpc(八):补齐 detail.hpp——JSON 封装与请求 ID 生成
c++·rpc
程序人生88817 分钟前
从“把隐私文件上传到别人云端“到本地可控:DocConverter Web 立项初心与架构选型
前端·图像处理·人工智能·opencv·架构·ocr·文心一言
longlongzihan33 分钟前
LeetCode 41. 缺失的第一个正数:从基础解法到原地哈希
c++·算法·leetcode
Lhan.zzZ1 小时前
Qt/QML:业务记录单展示、签名确认与 PDF 导出开发
c++·qt·pdf
傲世仙尊1 小时前
类和对象上-class与struct实例化内存对齐与this指针
c++
C++ 老炮儿的技术栈1 小时前
C++ const 的3个核心作用
服务器·c语言·c++·算法·c
小黄人软件1 小时前
粘贴助手C++版 支持 Windows 7 / 10 / 11 不会出现缺少api-ms-win-core-path-11-1-0.dll
开发语言·c++·windows
有毒的教程1 小时前
Dev-C++ 避免爆栈(Stack Overflow)完整方案
c++·算法·深度优先
程序员老陆1 小时前
从汇编层面理解 C++ 多线程
开发语言·c++·程序设计