测试

来源:互联网 发布:acr软件免费下载 编辑:程序博客网 时间:2024/05/17 23:34

图片测试:


描述测试:以上是效果图,实现功能:分别以绿色点和红色点交替为转轴,随机向左或向右转动90度,并绘制出移动轨迹。speed是移动速度,用waitkey控制。退出esc。

表情测试:再见再见再见

代码测试:以下是程序代码,vs2008+opencv2.4.2

#include "stdafx.h"#include <time.h>#include <opencv2/opencv.hpp>using namespace cv;#pragma comment(lib,"opencv_core242d.lib")#pragma comment(lib,"opencv_imgproc242d.lib")#pragma comment(lib,"opencv_highgui242d.lib")#define WIDTH 500#define HEIGHT 500#define edge_proc(pt)\if( pt.x < 0 || pt.y < 0 || pt.x > WIDTH || pt.y > HEIGHT )\{\goto EDGE_PROCESS;\}Mat DrawNet(Mat plane){Mat net;plane.copyTo(net);for(int i = 0;i<plane.rows;i+=10){line(net,Point(0,i),Point(plane.cols,i),Scalar(150,150,150));}for(int i = 0;i<plane.cols;i+=10){line(net,Point(i,0),Point(i,plane.rows),Scalar(150,150,150));}return net;}int _tmain(int argc, _TCHAR* argv[]){namedWindow("DrawRandon");int speed=100;//mscreateTrackbar("speed","DrawRandon",&speed,1000);//创建画板Mat netPlane = Mat::zeros(WIDTH,HEIGHT,CV_8UC3);netPlane.setTo(Scalar(100,100,100));//绘制画板格子Mat net = DrawNet(netPlane);//标记起始点Point start = Point(WIDTH/2,HEIGHT/2);Point start_foot = Point(WIDTH/2+10,HEIGHT/2);Point track_point = Point(WIDTH/2+5,HEIGHT/2);//实际显示用到的画板Mat drawingNetPlane;net.copyTo(drawingNetPlane);line(drawingNetPlane,start,start_foot,Scalar(255,0,0));line(drawingNetPlane,start,start,Scalar(0,0,255),3);line(drawingNetPlane,start_foot,start_foot,Scalar(0,255,0),3);//创建轨迹画板Mat trackPlane = Mat::zeros(WIDTH,HEIGHT,CV_8UC3);//准备开始imshow("DrawRandon",drawingNetPlane);waitKey();//开始srand(time(NULL));while(1){net.copyTo(drawingNetPlane);//获取随机数int r = rand()%2;//计算旋转方向switch(r){case 0://逆时针{//轴在左边if( start.x < start_foot.x ){Point tmp = Point(start_foot.x-10,start_foot.y-10);edge_proc(tmp);start_foot = tmp;}//轴在右边else if( start.x > start_foot.x ){Point tmp = Point(start_foot.x+10,start_foot.y+10);edge_proc(tmp);start_foot = tmp;}//轴在上边else if( start.y < start_foot.y ){Point tmp = Point(start_foot.x+10,start_foot.y-10);edge_proc(tmp);start_foot = tmp;}//轴在下边else{Point tmp = Point(start_foot.x-10,start_foot.y+10);edge_proc(tmp);start_foot = tmp;}}break;case 1://顺时针{//轴在左边if( start.x < start_foot.x ){Point tmp = Point(start_foot.x-10,start_foot.y+10);edge_proc(tmp);start_foot = tmp;}//轴在右边else if( start.x > start_foot.x ){Point tmp = Point(start_foot.x+10,start_foot.y-10);edge_proc(tmp);start_foot = tmp;}//轴在上边else if( start.y < start_foot.y ){Point tmp = Point(start_foot.x-10,start_foot.y-10);edge_proc(tmp);start_foot = tmp;}//轴在下边else{Point tmp = Point(start_foot.x+10,start_foot.y+10);edge_proc(tmp);start_foot = tmp;}}break;}EDGE_PROCESS://改变转轴Point tmp = start;start = start_foot;start_foot = tmp;line(drawingNetPlane,start,start_foot,Scalar(255,0,0));line(drawingNetPlane,start,start,Scalar(0,0,255),3);line(drawingNetPlane,start_foot,start_foot,Scalar(0,255,0),3);//绘制轨迹Point trackTmp = Point(start.x<start_foot.x?start.x+abs(start.x-start_foot.x)/2:start_foot.x+abs(start.x-start_foot.x)/2,start.y<start_foot.y?start.y+abs(start.y-start_foot.y)/2:start_foot.y+abs(start.y-start_foot.y)/2);line(net,trackTmp,track_point,Scalar(200,200,200));track_point = trackTmp;imshow("DrawRandon",drawingNetPlane);if( 27 == waitKey(getTrackbarPos("speed","DrawRandon")) )break;}destroyAllWindows();return 0;}

结束测试:!!!


0 0