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. 技本功丨请带上纸笔刷着看:解读MySQL执行计划的type列和extra列

    本萌最近被一则新闻深受鼓舞,西工大硬核“女学神”白雨桐,获6所世界顶级大学博士录取 货真价值的才貌双全,别人家的孩子 高考失利与心仪的专业失之交臂,选择了软件工程这门自己完全不懂的专业.即便全部归零, ...

  2. Action Required: Listings Deactivated for Potential Pricing Error

    Dear Seller, We are contacting you because we have detected potential pricing errors in your Amazon. ...

  3. 城联数据TSM技术方案起底

    近日,城联数据有限公司与中国电信签订了<基于NFC技术的公交业务的合作协议>.双方基于NFC技术开展互联互通城市公交卡业务合作,实现符合住房和城乡建设部城市公用事业互联互通卡系列标准的移动 ...

  4. 如何理解IPD+CMMI+Scrum一体化研发管理解决方案之CMMI篇

    如何快速响应市场的变化,如何推出更有竞争力的产品,如何在竞争中脱颖而出,是国内研发企业普遍面临的核心问题,为了解决这些问题,越来越多的企业开始重视创新与研发管理,加强研发过程的规范化,集成产品开发(I ...

  5. c# apache服务器请求得到数据(初级)

    1.代码: string data = new WebClient().DownloadString("http://localhost:81/123.txt");

  6. 马士兵老师hadoop讲解总结博客地址记录(啊啊啊啊啊,自己没有保存写好的博客...)

    http://www.cnblogs.com/yucongblog/p/6650822.html

  7. sql主表分页查询关联子表取任意一条高效方案

    有个业务场景,主表中一条数据,在子表中有多条详情数据.对数据进行展示的时候,产品希望随意拿一条子表的数据关联展示出来,用了很多方案,但是都不够好. sql查询取子表任意一条,多个字段的方案 最终找到一 ...

  8. 在pycharm中使用scrapy爬虫

    目标在Win7上建立一个Scrapy爬虫项目,以及对其进行基本操作.运行环境:电脑上已经安装了python(环境变量path已经设置好), 以及scrapy模块,IDE为Pycharm .操作如下: ...

  9. PAT 甲级 1023 Have Fun with Numbers

    https://pintia.cn/problem-sets/994805342720868352/problems/994805478658260992 Notice that the number ...

  10. 7. 由一道ctf学习变量覆盖漏洞

    0×00 背景 近期在研究学习变量覆盖漏洞的问题,于是就把之前学习的和近期看到的CTF题目中有关变量覆盖的题目结合下进一步研究. 通常将可以用自定义的参数值替换原有变量值的情况称为变量覆盖漏洞.经常导 ...