《学习OpenCV》练习题第四章第六题
来源:互联网 发布:python 小脚本实例 编辑:程序博客网 时间:2024/06/04 17:55
#include <highgui.h>#include "opencv_libs.h"#include <cv.h> #define IMG_WIDTH 512#define IMG_HEIGHT 512/* *《学习OpenCV》第四章第六题 * 完成时间:9:32 4/5 星期五 2013 */ CvFont font; char *display_text = "|"; // 是否在编辑标签bool isEditLabel = false;// 当前标签的起始点CvPoint point; IplImage* image;/* * 鼠标事件回调函数 */ void my_mouse_callback(int event, int x, int y, int flags, void* param) { // 得到图像 IplImage* image = (IplImage*) param; switch(event) { // 鼠标左键点击事件 case CV_EVENT_LBUTTONDOWN: isEditLabel = true;point = cvPoint(x, y);cvPutText( image, display_text, point, &font, cvScalarAll(255)); break; // 鼠标右击事件case CV_EVENT_RBUTTONDOWN:printf("图像清零.\n");// 所有像素置零 cvZero( image );break; } } int main() { // 创建一幅图像image = cvCreateImage( cvSize(IMG_WIDTH, IMG_HEIGHT), IPL_DEPTH_8U, 3 );// 所有像素置零cvZero( image );IplImage* temp = cvCloneImage( image ); cvInitFont(&font, CV_FONT_HERSHEY_PLAIN, 1.5f, 1.5f, 0, 1, 8); cvNamedWindow("image"); cvSetMouseCallback( "image", my_mouse_callback, (void*)temp ); while(1) { cvCopyImage( image, temp);if(isEditLabel == true){puts(display_text);cvPutText( temp, display_text, point, &font, cvScalarAll(255)); } cvShowImage("image", temp); char c = cvWaitKey(15);// 32 -- 126 可显示字符if(isEditLabel == true && c < 126 && c > 32){char tempstr[2] = {c};if(display_text == "|"){display_text = (char*)malloc(sizeof(char)*2);strcpy( display_text, tempstr );}else{strcat( display_text, tempstr );}}// 13 -- Enter键else if(c == 13){isEditLabel = false;cvPutText( image, display_text, point, &font, cvScalarAll(255)); display_text = "|";}// 8 -- 退格键else if(c == 8){int len = strlen(display_text);printf("<--\t%d\n", len);display_text[len - 1] = '\0';} else if(c == 27) break; } cvReleaseImage( &image );cvReleaseImage( &temp ); cvDestroyAllWindows(); return 0; }
运行结果:
实现了能用键盘编辑当前标签,可退格删除字符,Enter表示确定。我不是很清楚我这样的做法是不是合乎题意,望众位能指出。
- 《学习OpenCV》练习题第四章第六题
- 《学习OpenCV》练习题第四章第四题
- 《学习OpenCV》练习题第三章第六题
- 《学习OpenCV》练习题第二章第四题
- 《学习OpenCV》练习题第三章第四题
- 《学习OpenCV》练习题第四章第二题
- 《学习OpenCV》练习题第三章第四题
- 学习opencv ,第六章第四题
- 《学习opencv》第四章第六题
- 《学习OpenCV》练习题第四章第一题a
- 《学习OpenCV》练习题第四章第一题b&c
- 《学习OpenCV》练习题第四章第三题a
- 《学习OpenCV》练习题第四章第三题b
- 《学习OpenCV》练习题第四章第五题a
- 《学习OpenCV》练习题第四章第七题abc
- 《学习OpenCV》练习题第四章第八题ab
- 《学习openCV》第四章练习题4-6
- 《学习OpenCV》第四章练习题4
- 《程序员的第一年》---------- 复习一下C#的【封装 多态 继承 -----简单计算器源码实例】
- vitrualbox共享文件夹
- FeaturesFinder
- ubuntu下svn服务器的安装配置
- Java的引用WeakReference与SoftReference
- 《学习OpenCV》练习题第四章第六题
- Blender
- getSession() , getSession(false) ,getSession(true) 区别
- 动机的寓言
- base64
- Python正则表达式指南
- c++最新资料大全
- VC中二维字符串数组使用总结()
- html文字滚动代码