描述
opencv利用按键完成显示中断
代码
#include <iostream>
#include <vector>
#include <opencv2/opencv.hpp>
int main (int argc, const char** argv)
{
cv::Mat image_src = cv::imread("/home/chen/Desktop/Lena.jpg");//打开一张图
if (!image_src.data == 1)//判空
return -1;
cv::namedWindow("lena", cv::WINDOW_NORMAL);//创建 WINDOW_FREERATIO窗口
cv::imshow("lena", image_src);//在创建的窗口显示
cv::Mat image_dst = cv::Mat::zeros(image_src.size(), image_src.type());
while (true) {
char c = cv::waitKey(100);
if (int(c) == 27)//键盘键入 ESC键 退出
{
break;
}
if (c == '1'){//键盘键入 1 转成灰度图像
cv::cvtColor(image_src, image_dst, cv::COLOR_BGR2GRAY);//转灰度
}
if (c == '2'){//键盘键入 2 转hsv
cv::cvtColor(image_src, image_dst, cv::COLOR_BGR2HSV);//转hsv
}
if (c == 'u'){//键盘键入 3 调整亮度
cv::Mat m = cv::Mat::zeros(image_src.size(), image_src.type());
m = cv::Scalar(50, 50, 50);
cv::add(image_src, m, image_dst);
}
cv::imshow("key", image_dst);
}
return 0;
}
注意
cv::waitKey()只能用于cv::imshow出来的窗口进行按键响应
如果你想利用它,完成一些其他窗口,例如PCL库显示出来的窗口,是会失败的