功能:
根据键盘输入的不同信息,终端能读取信息并对图像进行不同的处理。
代码:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
void on_lightness(int b, void* userdata)
{
Mat image = *((Mat*)userdata);
Mat dst = Mat::zeros(image.size(), image.type());
Mat m = Mat::zeros(image.size(), image.type());
m = Scalar(b, b, b);
add(image, m, dst);
imshow("key response", dst);
}
class QuickDemo
{
public:
void key_demo(Mat &image);
};
void QuickDemo::key_demo(Mat &image)
{
Mat dst= Mat::zeros(image.size(), image.type());
while (true)
{
char c = waitKey(100);
if (c == 27)
{
cout <<"you enter key #Esc" << endl;
break;
}
if (c == 49)
{
cout <<"you enter key #1" << endl;
cvtColor(image, dst, COLOR_BGR2GRAY);
imshow("key response", dst);
}
if (c == 50)
{
cout << "you enter key #2" << endl;
cvtColor(image, dst, COLOR_BGR2HSV);
imshow("key response", dst);
}
if (c == 51)
{
cout << "you enter key #3" << endl;
int lightness = 50;
createTrackbar("lightness bar:", "key response", &lightness, 100, on_lightness, (void*)(&image));
on_lightness(50, &image);
}
cout << c << endl;
}
}
int main()
{
Mat image = imread("D:\\c++_opencv\\images\\0--Parade_0_Parade_marchingband_1_20.jpg", IMREAD_ANYCOLOR);
if (image.empty())
{
printf("could not load image");
return -1;
}
imshow("input image", image);
QuickDemo qd;
qd.key_demo(image);
waitKey(0);
destroyAllWindows();
return 0;
}
结果:
#1:

#2:

#3:
