http://www.cnblogs.com/sytu/p/4192652.html

在秒针模型的基础上添加了分针和时针,并且添加了暂停控件和设置时间的功能。

 #include"cv.h"
#include"highgui.h"
int run = ;
void Stop_Run_onclick(int event,int x,int y,int flags,void* param)
{
switch (event)
{
case CV_EVENT_LBUTTONDOWN:{
if (x< && x> && y< && y>)
{
run = !run;
}
}
default:
break;
}
}
void Drwan_button(IplImage* plane)
{
//画按钮
cvRectangle(plane, cvPoint(, ), cvPoint(, ), cvScalar(, , ), );
cvSetImageROI(plane, cvRect(, , , ));
cvZero(plane);
cvFloodFill(plane,cvPoint(,),cvScalarAll(),cvScalarAll());
cvResetImageROI(plane);
if (run)
cvPutText(plane, "StopTime", cvPoint(, ), &cvFont(, ), cvScalar(, , ));
else
{
cvPutText(plane, "RunTime", cvPoint(, ), &cvFont(, ), cvScalar(, , ));
}
}
double PIZHI(int count)
{
return *(1.0*count / 60.0 * 3.1415926);
}
int main()
{
IplImage* Plane = cvCreateImage(cvSize(,),,);
cvAddS(Plane,cvScalar(,,),Plane);
cvCircle(Plane,cvPoint(,),,cvScalar(,,),);
cvPutText(Plane,"",cvPoint(,),&cvFont(,),cvScalar(,,));
cvPutText(Plane, "", cvPoint(, ), &cvFont(, ), cvScalar(, , ));
cvPutText(Plane, "", cvPoint(, ), &cvFont(, ), cvScalar(, , ));
cvPutText(Plane, "", cvPoint(, ), &cvFont(, ), cvScalar(, , ));
cvPutText(Plane, "", cvPoint(, ), &cvFont(, ), cvScalar(, , ));
cvPutText(Plane, "", cvPoint(, ), &cvFont(, ), cvScalar(, , ));
cvPutText(Plane, "", cvPoint(, ), &cvFont(, ), cvScalar(, , )); cvPutText(Plane, "", cvPoint(, ), &cvFont(, ), cvScalar(, , ));
cvPutText(Plane, "", cvPoint(, ), &cvFont(, ), cvScalar(, , ));
cvPutText(Plane, "", cvPoint(, ), &cvFont(, ), cvScalar(, , ));
cvPutText(Plane, "", cvPoint(, ), &cvFont(, ), cvScalar(, , ));
cvPutText(Plane, "", cvPoint(, ), &cvFont(, ), cvScalar(, , ));
cvCircle(Plane,cvPoint(,),,cvScalarAll(),);
cvNamedWindow("Clock");
cvSetMouseCallback("Clock",Stop_Run_onclick,);
Drwan_button(Plane);
cvShowImage("Clock",Plane);
IplImage* img = cvCreateImage(cvGetSize(Plane),,);
double dangle = 0.1036;
int r = ;
int x = , y = ;//圆心
int count_s = ;
int count_m = ;
int x1, x2;
//for seconds
double angle = ;
int dx = ;
int dy = ;
//for minutes
double angle_m = ;
int mx = ;
int my = ;
//for hours
double angle_h = ;
int hx=, hy = ;
int count_h = ;
//设置时钟输入调节
//angle;
//angle_m;
//angle_h;
//count_m;
//count_s;
printf("\t\t\t选项\n\t\t\t从零点开始走针(1)\n\t\t\t从历史记录的时间走针(2)\n\t\t\t输入选项:");
int judge;
scanf("%d", &judge);
if (judge == ){
FILE *file = fopen("TimeRecord.dat", "r");
fscanf(file, "%lf %lf %lf %d %d %d", &angle_h, &angle_m, &angle, &count_h, &count_m, &count_s);
fclose(file);
}
system("cls");
printf("按下ESC键可以退出!\n");
printf("Enter键或者屏幕按键可以暂停钟表转动\n");
printf("按下空格键可以设置时间:(输入格式为00:00:00)\n"); while (true)
{
if (run){
cvCopy(Plane, img);
dy = r * cos(angle);
dx = r * sin(angle);
//for seconds
my = r * cos(angle_m);
mx = r * sin(angle_m);
//for hours
hx = r * sin(angle_h);
hy = r * cos(angle_h);
count_s++;
angle=PIZHI(count_s);
cvLine(img, cvPoint(x, y), cvPoint(x + hx / , x - hy / ), cvScalar(, , ), );
cvLine(img, cvPoint(x, y), cvPoint(x + mx / 1.5, y - my / 1.5), cvScalar(, , ), );
cvLine(img, cvPoint(x, y), cvPoint(x + dx, y - dy), cvScalar(, , ), ); if (count_s == ||judge==)
{
if (judge!=)
count_s = ;
count_m++;
angle = ;
angle_m=PIZHI(count_m);
if (count_m % == ||judge==){
count_h++;
angle_h = PIZHI(count_h);
if (count_h == )count_h = ;
}
if (count_m == )count_m = ;
judge = ;
}
}
Drwan_button(img);
cvShowImage("Clock", img); char ch = cvWaitKey();
if (ch == )
{
FILE* write = fopen("TimeRecord.dat","w");
fprintf(write, "%lf %lf %lf %d %d %d", angle_h, angle_m, angle, count_h, count_m, count_s);
fclose(write);
break;
}
else if (ch==)
{
run = !run;
}
else if (ch == )
{
scanf("%d:%d:%d",&count_h,&count_m,&count_s);
count_h=count_h * + 1.0*count_m / 12.0;
judge = ;
}
}
cvWaitKey();
return ;
}

做着挺好玩的,就当练练手吧。

opencv函数制作的时钟模型的更多相关文章

  1. opencv函数制作的秒针模型

    曾经做过,没想到这次再次写这篇代码却用了这么久的时间.这回我要记住他. #include"cv.h" #include"highgui.h" int main( ...

  2. 使用jQuery和CSS3制作数字时钟(jQuery篇) 附源码下载

    HTML 和上一篇文章:使用jQuery和CSS3制作数字时钟(CSS3篇)一样的HTML结构,只是多了个>date用来展示日期和星期的. <div id="clock" ...

  3. csharp通过dll调用opencv函数,图片作为参数

    [blog 项目实战派]csharp通过dll调用opencv函数,图片作为参数          ​一直想做着方面的研究,但是因为这个方面的知识过于小众,也是由于自己找资料的能力比较弱,知道今天才找 ...

  4. matlab调用opencv函数的配置

    环境: VS2010 活动解决方案平台x64 WIN 8.1 Opencv 2.4.3 Matlab 2012a 1.  首先保证vs2010能正确调用opencv函数, 2.  Matlab中选择编 ...

  5. [TPYBoard-Micropython之会python就能做硬件 3] 制作电子时钟

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.TPYboard V102板  一块 2.DS3231 ...

  6. OpenCv函数学习(一)

    Intel Image Processing Library (IPL) typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; ...

  7. 一些常用的opencv函数

    分配图像空间: IplImage* cvCreateImage(CvSize size, int depth, int channels);       size:  cvSize(width,hei ...

  8. Excel中用REPT函数制作图表

    本文从以下七个方面,阐述在Excel中用REPT函数制作图表: 一. 图形效果展示 二. REPT语法解释 三. REPT制作条形图 四. REPT制作漏斗图 五. REPT制作蝴蝶图 六. REPT ...

  9. 常用的OpenCV函数速查

    常用的OpenCV函数速查 1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗口: 3.cvShowImage:在一个已创建好的窗口中显示图像: 4 ...

随机推荐

  1. Ztree结合jbox实现弹窗树结构

    点击添加分类,弹出事项选择框为jbox <a href="#" id="down{{row.id}}" style="display:none& ...

  2. libCurl 初步认识 - cur easy

    cur easy接口简洁明了,主接口4个,辅接口5个. 主接口 初始化 + 配参数 + 执行 + 销毁 初始化 CURL* curl_easy_init() 获得CURL句柄,返回值需要判空. 配参数 ...

  3. CSS 实用实例

    背景颜色 1. 颜色背景 <style type="text/css">body { font-size: 16px;">h1 { font-size: ...

  4. CS小分队第一阶段冲刺站立会议(5月12日)

    昨日成果:2048整体界面效果经组员韩雪冬美化之后档次提升了好几个,我为其添加了保存并显示最高分数的功能. 遇到困难:当我想把access数据库由accdb改成mdb时,发生未知错误 ,导致数据库无法 ...

  5. Xcode 6添加模板无效

    最近发现从Xcode 5拷贝来的模板在Xcode 6上是OK的,但是自己自定义的却不行,一直使用的是自定义的基类模板,最后发现原因是没有在 TemplateInfo.plist 中注册自定义的模板,注 ...

  6. C++ Primer Plus学习:第十五章

    第十五章 友元.异常和其他 友元 友元类 表 0-1 class Tv { public: friend class Remote; } Remote类可以使用Tv的数据成员,Remote类在Tv类后 ...

  7. Tomcat指定JDK路径

    一.应用实例 一般情况下一台服务器只跑一个业务,那么就直接配置一套环境,设置好Java环境变量即可.某些时候一台服务器上会安装多个业务,而且各个业务需要的JDK版本各不相同,或者为了使业务独立开来,需 ...

  8. php 多维数组排序

    PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重新索引. 输入数组被当成一个表的列并以 ...

  9. windows远程连接设置

    1.设置整个服务器只允许一个连接. 使用组策略管理gpedit.msc, 计算机配置>管理模板>windows组件 >终端服务>限制连接数量,设为已启动,数量设置为1. 此设置 ...

  10. 用PS做PNG格式底色是透明的logo

    有时我们需要底色为透明色的logo图片,但是一般的图片底色都是白色的,覆盖在其它图片上会显示白色. 本文介绍如何用PS CS6制作透明底色的图片. 1.首先我们确定所选图片的大小(即分辨率大小),在资 ...