opencv c++学习九(键盘响应 颜色表 图像像素逻辑 )

目录

1.键盘响应

2.颜色表

3.图像像素的逻辑操作


1.键盘响应

注意需要给图像dst一个初始化

否则vs会报错

waitKey的返回值是ASCII码

当对着图片输出键盘的ASCII码时

会执行操作

  

#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std;


int main() {
	string path = "resouces\\test.png";
	Mat src = imread(path);
	Mat dst;
	dst = Mat(src.size(), src.type());           //创建一个与src相同大小的Mat对象dst
	dst = Scalar(130, 130, 0);					 //颜色设置
	imshow("初始图", src);
	while (true) {
		int c = waitKey(500);
		if (c == 27) {
			break;
		}
		if (c == 49) {
			cout << "you enter number 1" << endl;
			cvtColor(src, dst, CV_BGR2GRAY);
		}
		if (c == 50) {
			cout << "you enter number 2" << endl;
			cvtColor(src, dst, CV_BGR2HSV);
		}
		if (c == 51) {
			cout << "you enter number 3" << endl;
			cvtColor(src, dst, CV_BGR2RGB);
		}
		imshow("键盘响应", dst);
	}
	return 0;
}

2.颜色表

相关函数:applyColorMap

关于index%19 可以保证index的值一直在0到18之间

注意:颜色表是整型数组

#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std;



int main() {
	int colormap[] = {
		COLORMAP_AUTUMN,
		COLORMAP_BONE,
		COLORMAP_CIVIDIS,
		COLORMAP_COOL,
		COLORMAP_HOT,
		COLORMAP_HSV,
		COLORMAP_INFERNO,
		COLORMAP_JET,
		COLORMAP_MAGMA,
		COLORMAP_OCEAN,
		COLORMAP_PARULA,
		COLORMAP_PINK,
		COLORMAP_PLASMA,
		COLORMAP_RAINBOW,
		COLORMAP_SPRING,
		COLORMAP_SUMMER,
		COLORMAP_TWILIGHT,
		COLORMAP_TWILIGHT_SHIFTED,
		COLORMAP_VIRIDIS,
		COLORMAP_WINTER
	};
	string path = "resouces\\test.png";
	Mat src = imread(path);
	Mat dst;
	int index = 0;
	while (true) {
		int c = waitKey(500);
		if (c == 49) {
			break;
		}
		applyColorMap(src, dst, colormap[index % 19]);
		index++;
		imshow("颜色显示", dst);
	}

	return 0;
}

 

3.图像像素的逻辑操作

 

#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std;

int main() {
	Mat p1;
	Mat p2;
	Mat dst;
	p1 = Mat(Size(256, 256), CV_8UC3, Scalar(0, 0, 0));
	p2 = Mat(Size(256, 256), CV_8UC3, Scalar(0, 0, 0));
	rectangle(p1, Point(100,100), Point(170,170),Scalar(255,255,0),FILLED);
	rectangle(p2, Point(120, 120), Point(200,200), Scalar(0, 255, 255), FILLED);
	bitwise_xor(p1, p2, dst);
	imshow("p1", p1);
	imshow("p2", p2);
	imshow("xor", dst);
	waitKey(0);
	return 0;
}

与:

 

 或:

 

异或:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值