【OpenCV】笔记(4) ——自带UI显示
来源:互联网 发布:网络策略 sftp 协议 编辑:程序博客网 时间:2024/06/05 09:51
建议先配置OpenCV的Release,运行时将调试从Debug改成 Release,否则可能出错。
代码
#include <opencv2/opencv.hpp>#include <opencv2/highgui.hpp>#include <iostream>using namespace std;using namespace cv;//全局定义和变量Mat orig_img, temp_img;const char main_win[] = "main_win";char msg[50] = { 0 };//回调函数声明void cbMouse(int event, int x, int y, int flags, void*);void tb1_Callback(int value,void *);void tb2_Callback(int value,void *);void checkboxCallback(int state, void *);void radioboxCallback(int state, void *id);void pushbuttonCallback(int, void *font);int main(int, char* argv[]){ const char track1[] = "Trackbar 1"; const char track2[] = "Trackbar 2"; const char checkbox[] = "Check Box"; const char radiobox1[] = "Radio Box1"; const char radiobox2[] = "Radio Box2"; const char pushbutton[] = "Push Button"; int tb1_value = 50;//trackbar1 的初始值 int tb2_value = 25;//trackbar2 的初始值 orig_img = imread("peppers.png");//打开并读取图像 //orig_img = imread(argv[1]); if (orig_img.empty()) { cout << "出现错误,图像无法打开!" << endl; return -1; } namedWindow(main_win); //为添加到图像中的文本创建字体 //QtFont font = fontQt("Arial", 20, Scalar(255, 0, 0,0), QT_FONT_BLACK, QT_STYLE_NORMAL); //QtFont font = fontQt("Arial", 20, Scalar(255, 0, 0, 0), QT_FONT_BLACK, QT_STYLE_NORMAL,0); //回调函数的创建 setMouseCallback(main_win, cbMouse, NULL); createTrackbar(track1, main_win, &tb1_value, 100,tb1_Callback); //createButton(checkbox, checkboxCallback, 0, QT_CHECKBOX); //将值font传递给Callback //createButton(pushbutton, pushbuttonCallback, (void*)&font, QT_PUSH_BUTTON); //cvCreateTrackbar(track2, NULL, &tb2_value, 50, tb2_Callback); //将值传递给callback //createButton(radiobox1, radioboxCallback, (void*)radiobox1, QT_RADIOBOX); //createButton(radiobox2, radioboxCallback, (void*)radiobox2, QT_RADIOBOX); imshow(main_win, orig_img);//显示原始图像 cout << "Press any key to exit..." << endl; waitKey(); return 0;}//回调函数void tb1_Callback(int value,void *){ sprintf(msg, "Trackbar 1 changed. New value=%d", value); displayOverlay(main_win, msg); return;}void tb2_Callback(int value,void *){ sprintf(msg, "Trackbar 2 changed. New value=%d", value); displayStatusBar(main_win, msg,1000); return;}//鼠标交互void cbMouse(int event, int x, int y, int flags, void*){ //调用之间的静态保留值 static Point p1, p2; static bool p2set = false; //点击鼠标左键 if (event == EVENT_LBUTTONDOWN) { p1 = Point(x, y); p2set = false; } else if (EVENT_MOUSEMOVE&&flags==EVENT_FLAG_LBUTTON) { //检查鼠标移动和按下鼠标左键 //出界检查 if (x>orig_img.size().width) { x = orig_img.size().width; } else if (x<0) { x = 0; } if (y>orig_img.size().height) { y = orig_img.size().height; } else if (y<0) { y = 0; } //设置终点 p2 = Point(x, y); p2set = true; //将原始图像复制到临时图像中 orig_img.copyTo(temp_img); //绘制矩形 rectangle(temp_img, p1, p2, Scalar(0, 0, 255)); //使用rect.绘制临时图像 imshow(main_win, temp_img); } else if (event==EVENT_LBUTTONUP&&p2set) { //检查鼠标左键已经弹起 //选择一块区域 //在orig.图像上设置字数组 //使用选取的矩形 Mat submat = orig_img(Rect(p1, p2)); //此处为子矩阵的某些处理 //...... //标记所选取矩形的边界 rectangle(orig_img, p1, p2, Scalar(0, 0, 255), 2); imshow("main_win", orig_img); } return;}//按钮(只在使用QT支持时)void checkboxCallback(int state, void *){ sprintf(msg, "Check box changed. New state=%d",state); displayStatusBar(main_win, msg); return;}void radioboxCallback(int state, void *id){ //传递给回调函数的单选框id sprintf(msg, "%s changed. New state=%d",(char*)id,state); displayStatusBar(main_win, msg); return;}void pushbuttonCallback(int, void *font){ //向图像中添加文本 //addText(orig_img, "Push button clicked", Point(50, 50), *((QtFont*)font)); imshow(main_win, orig_img); return;}
0 0
- 【OpenCV】笔记(4) ——自带UI显示
- Android中使用Opencv自带JavaCameraView实现高帧率竖屏显示
- opencv 2.4.4自带例子总结
- Opencv自带的SVM
- OpenCV 自带例程总结
- 【行人检测】opencv自带
- OpenCV 自带例程总结
- OpenCV 自带例程总结
- opencv自带的训练器
- 编译opencv自带例子
- 【OpenCV学习笔记】3:OpenCV自带的Haar特征人脸检测
- Android 手机获取短信验证码—自带UI界面
- opencv 2.4.4中自带的demo总结
- 图像分割学习笔记_1(opencv自带meanshift分割例子)
- EM算法学习笔记_2(opencv自带EM sample学习)
- 图像分割学习笔记_1(opencv自带meanshift分割例子)
- OpenCV学习笔记(三十八)——显示当前FPS
- learing opencv笔记(1)-——显示图像
- 生成对抗网络(GAN)
- 定时一秒和秒表
- storm模型
- SQL高级语句-SQL UNIQUE 约束,唯一标识数据库表中的每条记录。
- html框架之iframe和frame及frameset的相关属性介绍
- 【OpenCV】笔记(4) ——自带UI显示
- allegro 通孔焊盘制作
- K-Means
- 让机器人更安全——(2.协作机器人的兴起)
- 浅析SurfaceView使用surfaceview制作你想要的动画
- Android 检测服务是否开启的方法
- CodeForces 712 C. Memory and De-Evolution(贪心)
- 百度杯二月Reverse场Project的writeup
- 支付宝接口实现