opencv函数制作的时钟模型
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函数制作的时钟模型的更多相关文章
- opencv函数制作的秒针模型
曾经做过,没想到这次再次写这篇代码却用了这么久的时间.这回我要记住他. #include"cv.h" #include"highgui.h" int main( ...
- 使用jQuery和CSS3制作数字时钟(jQuery篇) 附源码下载
HTML 和上一篇文章:使用jQuery和CSS3制作数字时钟(CSS3篇)一样的HTML结构,只是多了个>date用来展示日期和星期的. <div id="clock" ...
- csharp通过dll调用opencv函数,图片作为参数
[blog 项目实战派]csharp通过dll调用opencv函数,图片作为参数 一直想做着方面的研究,但是因为这个方面的知识过于小众,也是由于自己找资料的能力比较弱,知道今天才找 ...
- matlab调用opencv函数的配置
环境: VS2010 活动解决方案平台x64 WIN 8.1 Opencv 2.4.3 Matlab 2012a 1. 首先保证vs2010能正确调用opencv函数, 2. Matlab中选择编 ...
- [TPYBoard-Micropython之会python就能做硬件 3] 制作电子时钟
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.TPYboard V102板 一块 2.DS3231 ...
- OpenCv函数学习(一)
Intel Image Processing Library (IPL) typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; ...
- 一些常用的opencv函数
分配图像空间: IplImage* cvCreateImage(CvSize size, int depth, int channels); size: cvSize(width,hei ...
- Excel中用REPT函数制作图表
本文从以下七个方面,阐述在Excel中用REPT函数制作图表: 一. 图形效果展示 二. REPT语法解释 三. REPT制作条形图 四. REPT制作漏斗图 五. REPT制作蝴蝶图 六. REPT ...
- 常用的OpenCV函数速查
常用的OpenCV函数速查 1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗口: 3.cvShowImage:在一个已创建好的窗口中显示图像: 4 ...
随机推荐
- Linux(Contos7.5)环境搭建之Linux远程登录(一)
1.下载<putty-0.70cn.zip>工具包 2.解压到适合的文件夹下
- AOP:spring 的Annotation配置
1.文件目录: 2.实体类 package com.wangcf.po; public class User { private int id; private String name; privat ...
- Python if后直接跟数字或字符串
(1)如果if后面的条件是数字,只要这个数字不是0,python都会把它当做True处理,见下面的例子 if 15: print 'YES' 输出YES,但是如果数字是0,就会被认为是False. ( ...
- 网页调用vlc并播放网络视频
环境:windows/android/ios windows端保存以下内容为reg文件并运行 Windows Registry Editor Version 5.00 [HKEY_CLASSES_RO ...
- lintcode-463-整数排序
463-整数排序 给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法. 样例 对于数组 [3, 2, 1, 4, 5], 排序后为:[1, 2, 3, 4, 5 ...
- 给新建的kvm虚拟机创建网络接口
(一)首先必须创建网卡连接桥接口的启动脚本和停止脚本,其中脚本中的 $1:表示为虚拟机的网卡的右边接口,这两个脚本就是讲虚拟机的网卡的右边接口接在网桥上,实现桥接模型 # 1:/etc/qem ...
- mysql的程序组成
MySQL的程序组成 1:客户端 mysql:客户端程序 mysqldump:mysql备份工具 mysqladmin:mysql管理工具 mysqlbinlog:二进制日志查询工具 2:服务端 my ...
- jQuery之元素查找
在已经匹配出的元素集合中根据选择器查找孩子/父母/兄弟标签1. children(): 子标签中找2. find() : 后代标签中找3. parent() : 父标签4. prevAll() : 前 ...
- Python——cmd调用(os.system阻塞处理)(多条命令执行)
os.system(返回值为0,1,2)方法 0:成功 1:失败 2:错误 os.system默认阻塞当前程序执行,在cmd命令前加入start可不阻塞当前程序执行. 例如: import os os ...
- 【Linux笔记】阿里云服务器被暴力破解
一.关于暴力破解 前几天新购进了一台阿里云服务器,使用过程中时常会收到“主机被暴力破解”的警告,警告信息如下: 云盾用户您好!您的主机:... 正在被暴力破解,系统已自动启动破解保护.详情请登录htt ...