0.本文为测试cv::waitKey()的触发条件
1.程序准备
mkdir -p opencv_test/src
cv opencv_test/src
catkin_create_pkg commandlineparse std_msgs rospy roscpp cv_bridge
# meng @ meng in ~/my_learning/opencv_test [16:13:15]
$ tree
.
└── src
├── CMakeLists.txt -> /opt/ros/kinetic/share/catkin/cmake/toplevel.cmake
└── commandlineparse
├── CMakeLists.txt
├── include
│ └── commandlineparse
├── package.xml
└── src
├── commandlineparse_node.cpp
└── tulip.jpg
5 directories, 5 files
如上所述,添加文件commandlineparse_node.cpp(上面倒数第三行),修改CMakeLists.txt(上面commandlineparse文件夹内的)
commandlineparse_node.cpp,main函数内第二行为本地图片的绝对路径
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/core.hpp"
#include "opencv2/imgcodecs.hpp"
#include "iostream"
#include "ros/ros.h"
using namespace cv;
using namespace std;
int main(int argc,char** argv){
Mat src;
src=imread("/home/meng/my_learning/opencv/opencv_ws1/src/commandLineParse/src/tulip.jpg",1);
namedWindow("my_window",WINDOW_NORMAL);
imshow("my_window",src);
waitKey(0);
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.0.2)
project(commandlineparse)
find_package(catkin REQUIRED COMPONENTS
cv_bridge
roscpp
rospy
std_msgs
)
find_package(OpenCV REQUIRED)
catkin_package()
include_directories(
${catkin_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS} )
add_executable(commandlineparse_node src/commandlineparse_node.cpp)
target_link_libraries(commandlineparse_node
${catkin_LIBRARIES} ${OpenCV_LIBS} )
2.程序运行
回到opencv_test目录下,打开终端,运行效果如下图所示
catkin_make
source devel/setup.zsh
######或source devel/setup.bash
rosrun commandlineparse commandlineparse_node
此时将鼠标放置于打开的窗口图片上,点击鼠标左键,按下键盘上的"ESC"键即可触发"cv::waitKey()"函数,使程序结束
附图片,来源与网络,仅供学习使用啦