- 浏览: 986581 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
1. #include <cv.h> int main(int argc, char **argv) CvCapture * capture = cvCreateFileCapture("video2.avi"); int frames = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT); IplImage *frame = NULL; IplImage *gray = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1); IplImage *dst = cvCreateImage(cvSize(width*3, height), frame->depth,frame->nChannels); IplImage *img1 = cvCreateImageHeader(cvSize(width, height), frame->depth, 3); img1->origin = frame->origin; img2->origin = frame->origin; img3->origin = frame->origin; cvCvtColor(frame, gray, CV_RGB2GRAY); // CV_RGB2GRAY cvCanny( gray, canny, 50, 79); //文字标签 cvReleaseImage(&gray); return 0; 2. 第二题第一小题 #include "stdio.h" //Define our callback which we will install for mouse events CvPoint point; cvNamedWindow("Image", 1); while (1) cvShowImage("Image", temp); if (cvWaitKey(15) == 27) } cvDestroyWindow("Image"); return 0; switch(event) CvScalar p; printf("B:%.0f G:%.0f R:%.0f\n",b,g,r); cvInitFont(&textfont, CV_FONT_HERSHEY_SIMPLEX, 0.5f, 0.5f, 0, 1); } 2.a. #include <cv.h> //Define our callback which we will install for mouse events CvPoint point; int main(int argc, char **argv) CvCapture * capture = cvCreateFileCapture("video2.avi"); int frames = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT); IplImage *frame = NULL; IplImage *gray = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1); IplImage *dst = cvCreateImage(cvSize(width*3, height), frame->depth,frame->nChannels); IplImage *temp = cvCloneImage(dst); cvSetMouseCallback("dst", my_mouse_callback, (void *)dst); img1->origin = frame->origin; img2->origin = frame->origin; img3->origin = frame->origin; cvCvtColor(frame, gray, CV_RGB2GRAY); // CV_RGB2GRAY cvCanny( gray, canny, 50, 79); //文字标签 cvCopyImage(dst, temp); if (cvWaitKey(25) == 27) return 0; switch(event) CvScalar p; printf("B:%.0f G:%.0f R:%.0f\n",b,g,r); point = cvPoint(x,y); cvInitFont(&textfont, CV_FONT_HERSHEY_SIMPLEX, 0.5f, 0.5f, 0, 1); } 3.a. #include "stdio.h" //Define our callback which we will install for mouse events CvRect box; //A litte subroutine to draw a box onto an image void draw_box(IplImage *img, CvRect rect) int main(int argc, char **argv) cvNamedWindow("Image", 1); while (1) cvShowImage("Image", temp); if (cvWaitKey(15) == 27) } return 0; switch(event) } 4. 步长问题没有解决,没有找到相关函数,可能是再加一个鼠标或键盘单击事件,每次点击往前递增10帧? 先把初始源码贴出来,有时间再改。 #include "cv.h" CvCapture *capture; void slider_callback(int position) int main(int argc, char **argv) int frames = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT); IplImage *frame = NULL; int width = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH); while (1) cvShowImage("Image", frame); cvReleaseImage(&frame); 7. 透视变换,网上别人写的,蛮不错,贴出来大家一起学习 //透视变换 int main(int argc,char** argv) srcQuad[0].x = 0; dstQuad[0].x = src->width*delta*abs(df1%101); cvGetPerspectiveTransform(srcQuad,dstQuad,warp_matrix); memset(buf,'\0',sizeof(buf)); strcat(dspStr2,"|"); cvPutText(dst,dspStr1,cvPoint(dst->width-120,20),&font,cvScalar(0,0xff)); 反射变换 //仿射变换 if(!(src=cvLoadImage("Lena.jpg",1)) ) while(1) cvGetAffineTransform(srcTri,dstTri,warp_mat); memset(buf,'\0',sizeof(buf)); strcat(dspStr2,"|angle="); cvReleaseImage(&dst);
#include <highgui.h>
{
cvNamedWindow("dst", 1);
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, 40);
printf("%d\n", frames);
frame = cvQueryFrame(capture);
int width = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);
int height = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);
IplImage *imggray = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);
IplImage *canny = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1);
IplImage *imgcanny = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);
cvZero(dst);
IplImage *img2 = cvCreateImageHeader(cvSize(width, height), frame->depth, 3);
IplImage *img3 = cvCreateImageHeader(cvSize(width, height), frame->depth, 3);
//设置图像头属性值
img1->depth = frame->depth;
img1->nChannels = 3;
/* img1->widthStep = frame->widthStep;*/
img2->depth = frame->depth;
img2->nChannels = 3;
/* img2->widthStep = frame->widthStep;*/
img3->depth = frame->depth;
img3->nChannels = 3;
img1->widthStep = img2->widthStep = img3->widthStep = dst->widthStep;
while (1)
{
frame = cvQueryFrame(capture);
if (!frame)
return 1;
cvCvtColor(gray, imggray, CV_GRAY2BGR);
//cvConvertImage(frame, gray);
cvCvtColor(canny, imgcanny, CV_GRAY2BGR);
//确定ImageData位置
img3->imageData = dst->imageData ;
cvCopy(frame,img3);
img1->imageData = dst->imageData + frame->widthStep;
cvCopy(imggray, img1);
img2->imageData = dst->imageData + frame->widthStep*2;
cvCopy(imgcanny, img2);
CvFont textfont = cvFont(10.0,1);
cvInitFont(&textfont, CV_FONT_HERSHEY_SIMPLEX, 0.5f, 0.5f, 0, 1);
cvPutText(dst, "Source Image", cvPoint(10,20), &textfont, cvScalar(0,0,255));
cvPutText(dst, "Gray Image", cvPoint(width+10,20), &textfont, cvScalar(255,0,0));
cvPutText(dst, "Canny Image", cvPoint(width*2+10, 20), &textfont, cvScalar(0,255,0));
cvShowImage("dst", dst);
if (cvWaitKey(23) == 27)
return 0;
}
cvReleaseImage(&imggray);
cvReleaseImage(&canny);
cvReleaseImage(&imgcanny);
cvReleaseImage(&dst);
cvReleaseImage(&img1);
cvReleaseImage(&img2);
cvReleaseImage(&img3);
cvDestroyWindow("dst");
}
#include "cv.h"
#include "highgui.h"
void my_mouse_callback(int event, int x, int y, int flags, void *param);
bool drawing_text = false;
CvFont textfont = cvFont(5.0, 1);
char *s = (char*)malloc(50*sizeof(char*));
int main(int argc, char **argv)
{
IplImage *img = cvLoadImage("Lena.jpg", 1);
IplImage *temp = cvCloneImage(img);
cvSetMouseCallback("Image", my_mouse_callback, (void *)img);
{
cvCopyImage(img, temp);
if (drawing_text)
cvPutText(temp,s,point,&textfont,cvScalar(0,0,255));
break;
cvReleaseImage(&img);
cvReleaseImage(&temp);
}
void my_mouse_callback(int event, int x, int y, int flags, void *param)
{
IplImage *img = (IplImage *) param;
{
case CV_EVENT_MOUSEMOVE:
{
}
break;
case CV_EVENT_LBUTTONDOWN:
{
drawing_text = true;
p = cvGet2D(img, y, x);
double b = p.val[0];
double g = p.val[1];
double r = p.val[2];
memset(s,0,50);
sprintf(s,"B:%.0f G:%.0f R:%.0f",b,g,r);
point = cvPoint(x,y);
}
break;
case CV_EVENT_LBUTTONUP:
{
drawing_text = false;
}
break;
}
#include <highgui.h>
void my_mouse_callback(int event, int x, int y, int flags, void *param);
bool drawing_text = false;
CvFont textfont = cvFont(5.0, 1);
char *s = (char*)malloc(50*sizeof(char*));
{
cvNamedWindow("dst", 1);
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, 40);
printf("%d\n", frames);
frame = cvQueryFrame(capture);
int width = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);
int height = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);
IplImage *imggray = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);
IplImage *canny = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1);
IplImage *imgcanny = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);
cvZero(dst);
IplImage *img1 = cvCreateImageHeader(cvSize(width, height), frame->depth, 3);
IplImage *img2 = cvCreateImageHeader(cvSize(width, height), frame->depth, 3);
IplImage *img3 = cvCreateImageHeader(cvSize(width, height), frame->depth, 3);
//设置图像头属性值
img1->depth = frame->depth;
img1->nChannels = 3;
/* img1->widthStep = frame->widthStep;*/
img2->depth = frame->depth;
img2->nChannels = 3;
/* img2->widthStep = frame->widthStep;*/
img3->depth = frame->depth;
img3->nChannels = 3;
img1->widthStep = img2->widthStep = img3->widthStep = dst->widthStep;
while (1)
{
frame = cvQueryFrame(capture);
if (!frame)
return 1;
cvCvtColor(gray, imggray, CV_GRAY2BGR);
//cvConvertImage(frame, gray);
cvCvtColor(canny, imgcanny, CV_GRAY2BGR);
//确定ImageData位置
img3->imageData = dst->imageData ;
cvCopy(frame,img3);
img1->imageData = dst->imageData + frame->widthStep;
cvCopy(imggray, img1);
img2->imageData = dst->imageData + frame->widthStep*2;
cvCopy(imgcanny, img2);
CvFont textfont = cvFont(10.0,1);
cvInitFont(&textfont, CV_FONT_HERSHEY_SIMPLEX, 0.5f, 0.5f, 0, 1);
cvPutText(dst, "Source Image", cvPoint(10,20), &textfont, cvScalar(0,0,255));
cvPutText(dst, "Gray Image", cvPoint(width+10,20), &textfont, cvScalar(255,0,0));
cvPutText(dst, "Canny Image", cvPoint(width*2+10, 20), &textfont, cvScalar(0,255,0));
if (drawing_text)
cvPutText(temp,s,point,&textfont,cvScalar(0,255,0));
cvShowImage("dst", temp);
return 0;
}
cvReleaseImage(&temp);
cvReleaseImage(&gray);
cvReleaseImage(&imggray);
cvReleaseImage(&canny);
cvReleaseImage(&imgcanny);
cvReleaseImage(&dst);
cvReleaseImage(&img1);
cvReleaseImage(&img2);
cvReleaseImage(&img3);
cvDestroyWindow("dst");
}
void my_mouse_callback(int event, int x, int y, int flags, void *param)
{
IplImage *img = (IplImage *) param;
{
case CV_EVENT_MOUSEMOVE:
{
}
break;
case CV_EVENT_LBUTTONDOWN:
{
drawing_text = true;
p = cvGet2D(img, y, x);
double b = p.val[0];
double g = p.val[1];
double r = p.val[2];
memset(s,0,50);
sprintf(s,"B:%.0f G:%.0f R:%.0f",b,g,r);
}
break;
case CV_EVENT_LBUTTONUP:
{
drawing_text = false;
}
break;
}
#include "cv.h"
#include "highgui.h"
void my_mouse_callback(int event, int x, int y, int flags, void *param);
bool drawing_box = false;
{
cvRectangle(img, cvPoint(box.x, box.y), cvPoint(box.x+box.width, box.y+box.height), cvScalar(0x00, 0xff, 0x00) /*green*/); //BGR
}
{
IplImage *img = cvLoadImage("Lena.jpg", 1);
IplImage *temp = cvCloneImage(img);
cvSetMouseCallback("Image", my_mouse_callback, (void *)img);
{
cvCopyImage(img, temp);
if (drawing_box)
draw_box(temp, box);
break;
cvDestroyWindow("Image");
}
void my_mouse_callback(int event, int x, int y, int flags, void *param)
{
IplImage *image = (IplImage *) param;
{
case CV_EVENT_MOUSEMOVE:
{
if (drawing_box)
{
box.width = x - box.x;
box.height = y-box.y;
}
}
break;
case CV_EVENT_LBUTTONDOWN:
{
drawing_box = true;
box = cvRect(x, y, 0, 0);
}
break;
case CV_EVENT_LBUTTONUP:
{
drawing_box = false;
if (box.width < 0)
{
box.x += box.width;
box.width *= -1;
}
if (box.height < 0)
{
box.y += box.height;
box.height *= -1;
}
}
break;
}
#include "highgui.h"
{
//int pos = cvGetTrackbarPos("slider", "Image");
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, position);
}
{
capture = cvCreateFileCapture("video2.avi");
cvNamedWindow("Image", 1);
printf("%d\n", frames);
frame = cvQueryFrame(capture);
int height = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);
cvCreateTrackbar("slider", "Image", NULL, frames, slider_callback);
//cvSetTra
{
frame = cvQueryFrame(capture);
if (!frame)
return 1;
int pos = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES);
printf("%d\n", pos);
//cvSetTrackbarPos("slider","Image",pos);
if (cvWaitKey(25) == 27)
return 0;
}
cvDestroyWindow("Image");
return 0;
}
/*
这个程序的运行效果,是比较容易分析的,就是变换一张图片的四个角的位置后,引起图像的相应变化,
而每个角就是二维平面的一个点具有x和y属性,4个点的x,y间接保存到df1到df8变量中。
注意cvCloneImage函数和cvCopyImage函数的区别,前来可用来分配内存,后者不负责内存分配,只负责值的传递。
这个代码不包含图像的放大、缩小、旋转功能,不过如果愿意的话,完全可以用例子中的函数自己写这些功能,
因为放大、缩小、旋转图像不过是任意变换图像四个角的特例。
*/
#include <cv.h>
#include <highgui.h>
#include <math.h>
{
CvPoint2D32f srcQuad[4],dstQuad[4];
CvMat* warp_matrix = cvCreateMat(3,3,CV_32FC1);
IplImage *src,*dst;
src=cvLoadImage("Lena.jpg",1);
if(!src)
return -1;
cvNamedWindow("Perspective_warp",1);
int pressKey;
int df1(1),df2(1),df3(1),df4(1),df5(1),df6(1),df7(1),df8(1);
df1 = 5;df2 = 33;df3 = 90;df4 = 25;df5 = 20;df6 = 70;df7 = 80;df8 = 90;
//df1 = df2 = df3 = df4 = df5 = df6 = df7 = df8 = 0;
dst = cvCloneImage(src);
dst->origin = src->origin;
cvZero(dst);
srcQuad[0].y = 0;
srcQuad[1].x = src->width - 1;
srcQuad[1].y = 0;
srcQuad[2].x = 0;
srcQuad[2].y = src->height - 1;
srcQuad[3].x = src->width - 1;
srcQuad[3].y = src->height - 1;
float delta=0.01;
while(1)
{
//dstQuad[0].x = src->width*delta*(df1%101);
//dstQuad[0].y = src->height*delta*(df2%101);
//dstQuad[1].x = src->width - 1+src->width*delta*(df3%101);
//dstQuad[1].y = src->height*delta*(df4%101);
//dstQuad[2].x = src->width*delta*(df5%101);
//dstQuad[2].y = src->height - 1+src->height*delta*(df6%101);
//dstQuad[3].x = src->width - 1+src->width*delta*(df7%101);
//dstQuad[3].y = src->height - 1+src->height*delta*(df8%101);
dstQuad[0].y = src->height*delta*abs(df2%101);
dstQuad[1].x = src->width*delta*abs(df3%101);
dstQuad[1].y = src->height*delta*abs(df4%101);
dstQuad[2].x = src->width*delta*abs(df5%101);
dstQuad[2].y = src->height*delta*abs(df6%101);
dstQuad[3].x = src->width*delta*abs(df7%101);
dstQuad[3].y = src->height*delta*abs(df8%101);
cvWarpPerspective(src,dst,warp_matrix);
//--------------------------字符显示-----------------------------------------
CvFont font = cvFont(1,1);
char buf[8];
char dspStr1[32] = {'\0'}; //
char dspStr2[32] = {'\0'}; //
char dspStr3[32] = {'\0'}; //
strcat(dspStr1,"|");
strcat(dspStr1,itoa(abs(df6%101),buf,10));
strcat(dspStr1,",");
strcat(dspStr1,itoa(abs(df7%101),buf,10));
strcat(dspStr1,",");
strcat(dspStr1,itoa(abs(df8%101),buf,10));
strcat(dspStr1,"|");
strcat(dspStr2,itoa(abs(df4%101),buf,10));
strcat(dspStr2,",00,");
strcat(dspStr2,itoa(abs(df5%101),buf,10));
strcat(dspStr2,"|");
//「」┌└┘┐|
strcat(dspStr3,"|");
strcat(dspStr3,itoa(abs(df1%101),buf,10));
strcat(dspStr3,",");
strcat(dspStr3,itoa(abs(df2%101),buf,10));
strcat(dspStr3,",");
strcat(dspStr3,itoa(abs(df3%101),buf,10));
strcat(dspStr3,"|");
cvPutText(dst,dspStr2,cvPoint(dst->width-120,40),&font,cvScalar(0,0xff));
cvPutText(dst,dspStr3,cvPoint(dst->width-120,60),&font,cvScalar(0,0xff));
//-------------------------------------------------------------------
cvShowImage("Perspective_warp",dst);
pressKey = cvWaitKey();
printf("%x pressed\n",pressKey);
switch(pressKey)
{
case '1':
df1++;
break;
case 0x230000:
df1--;
break;
case '2':
df2++;
break;
case 0x280000:
df2--;
break;
case '3':
df3++;
break;
case 0x220000:
df3--;
break;
case '4':
df4++;
break;
case 0x250000:
df4--;
break;
case '6':
df5++;
break;
case 0x270000:
df5--;
break;
case '7':
df6++;
break;
case 0x240000:
df6--;
break;
case '8':
df7++;
break;
case 0x260000:
df7--;
break;
case '9':
df8++;
break;
case 0x210000:
df8--;
break;
case 27:
cvReleaseImage(&dst);
cvDestroyWindow("Perspective_warp");
cvReleaseMat(&warp_matrix);
return 0;
default:break;
}
}
return 0;
}
#include <cv.h>
#include <highgui.h>
/*
这个程序中加入图片的放大、缩小、旋转功能,另外仿射变换也是透视变换的一个特例,
因为仿射变换过程中图像始终是平行四边形的。所以要确定仿射变换的目标图像,
只需要三个点的坐标,因为三个点可以确定一个平行四边形,比透视变换少一个点的坐标。
*/
int main(int argc,char** argv)
{
CvPoint2D32f srcTri[3],dstTri[3];
CvMat* rot_mat = cvCreateMat(2,3,CV_32FC1);
CvMat* warp_mat = cvCreateMat(2,3,CV_32FC1);
IplImage *src,*dst, *srcBak;
//int df1(0),df2(33),df3(85),df4(25),df5(15),df6(70);
int df1(0),df2(0),df3(0),df4(0),df5(0),df6(0);
double angle(-50.0),scale(0.6);
float delta = 0.01;
int pressKey;
{
return -1;
}
srcTri[0].x = 0;
srcTri[0].y = 0;
srcTri[1].x = src->width-1;
srcTri[1].y = 0;
srcTri[2].x = 0;
srcTri[2].y = src->height-1;
dst = cvCloneImage(src);
srcBak = cvCloneImage(src);
cvCopy(src,srcBak);
dst->origin = src->origin;
cvZero(dst);
cvNamedWindow("at",1);
CvFont font = cvFont(1,1);
{
dstTri[0].x = srcBak->width*delta*(df1%101);
dstTri[0].y = srcBak->height*delta*(df2%101);
dstTri[1].x = src->width-1 + srcBak->width*delta*(df3%101);
dstTri[1].y = srcBak->height*delta*(df4%101);
dstTri[2].x = srcBak->width*delta*(df5%101);
dstTri[2].y = src->height-1 + srcBak->height*delta*(df6%101);
cvWarpAffine(srcBak,dst,warp_mat);
cvCopy(dst,src);
//compute rotation matrix
CvPoint2D32f center = cvPoint2D32f(src->width/2,src->height/2);
cv2DRotationMatrix(center,angle,scale,rot_mat);
//do the transformation
cvWarpAffine(src,dst,rot_mat);
//--------------------------字符显示-----------------------------------------
char buf[8];
char dspStr1[32] = {'\0'}; //
char dspStr2[32] = {'\0'}; //
char dspStr3[32] = {'\0'}; //
strcat(dspStr1,"|");
strcat(dspStr1,itoa(df4%101,buf,10));
strcat(dspStr1,",");
strcat(dspStr1,itoa(df5%101,buf,10));
strcat(dspStr1,",");
strcat(dspStr1,itoa(df6%101,buf,10));
strcat(dspStr1,"|");
strcat(dspStr2,itoa(int(angle),buf,10));
strcat(dspStr2,",scale=");
strcat(dspStr2,itoa(int(scale*100),buf,10));
strcat(dspStr2,"%|");
//「」┌└┘┐|
strcat(dspStr3,"|");
strcat(dspStr3,itoa(df1%101,buf,10));
strcat(dspStr3,",");
strcat(dspStr3,itoa(df2%101,buf,10));
strcat(dspStr3,",");
strcat(dspStr3,itoa(df3%101,buf,10));
strcat(dspStr3,"|");
cvPutText(dst,dspStr1,cvPoint(dst->width-120,20),&font,cvScalar(0,0xff));
cvPutText(dst,dspStr2,cvPoint(dst->width-210,40),&font,cvScalar(0,0xff));
cvPutText(dst,dspStr3,cvPoint(dst->width-120,60),&font,cvScalar(0,0xff));
//-------------------------------------------------------------------------------------
cvShowImage("at",dst);
pressKey = cvWaitKey();
// printf("src->width:%d\n",src->width);
printf("%c pressed\n",pressKey);
switch(pressKey)
{
case '1':
df1++;
break;
case 0x230000:
df1--;
break;
case '2':
df2++;
break;
case 0x280000:
df2--;
break;
case '3':
df3++;
break;
case 0x220000:
df3--;
break;
case '4': //旋转角度
angle++;
break;
case 0x250000:
angle--;
break;
case '6': //缩放
scale+=0.01;
break;
case 0x270000:
scale-=0.01;
break;
case '7':
df4++;
break;
case 0x240000:
df4--;
break;
case '8':
df5++;
break;
case 0x260000:
df5--;
break;
case '9':
df6++;
break;
case 0x210000:
df6--;
break;
case 27:
cvReleaseImage(&dst);
cvDestroyWindow("at");
cvReleaseMat(&rot_mat);
cvReleaseMat(&warp_mat);
return 0;
default:break;
}
}
cvReleaseMat(&rot_mat);
cvReleaseMat(&warp_mat);
return 0;
}
发表评论
-
NotePad++ - 安装和配置C/C++开发插件
2011-11-15 23:00 1769NotePad++ - 安装和配置C/C+ ... -
VC中使用ATL编写控件 【转】
2011-10-21 15:23 2110VC中使用ATL编写控件 作者:邵盛松 2010 ... -
在Windows环境下MongoDB搭建和简单操作【转】
2011-10-21 12:37 944一,安装mongoDB 1,解 ... -
Mongodb在Windows下安装及配置【转】
2011-10-21 12:35 5531.下载mongodb的windows版本,有32位和64位版 ... -
一篇介绍VC开发OCX的文章[转]
2011-10-20 17:57 1838转自“http://www.cnblogs.com/genga ... -
使你的ActiveX控件执行时不弹出安全性提示 (转载)
2011-10-20 17:56 1170使你的ActiveX控件执行时不弹出安全性提示 2010-0 ... -
VC++ 的MFC 和ATL 及COM 是什么?
2011-10-20 01:12 993一、什么是MFC 微软基础类(Micro ... -
使用ATL编写一个简单的COM服务器【转】
2011-10-20 01:10 866下载例子代码 本文的对象是COM编程 ... -
使用VC++6.0制作ASP服务器控件简介[转]
2011-10-20 01:10 672用ASP写网页的程序 员,一定对VBSript语句“Set ... -
基于CentOS 5.4搭建nginx+php+spawn-fcgi+mysql
2011-09-01 13:49 1527基于CentOS 5.4搭建nginx+php+sp ... -
解决mrtg的Use of uninitialized value in hash element at /usr/bin/indexmaker line 35
2011-09-01 13:41 2311mrtg的安装过程这里就不再阐述,随便搜索一下。使用ind ... -
用MRTG检测Linux网络性能
2011-09-01 10:49 873随着Linux应用的日益广泛,有大量的网络服务器使用Linux ... -
Linux安装配置maven3.0以及搭建nexus私服
2011-08-30 23:45 1630一、软件准备 1、apache-maven-3.0-b ... -
GraphicsMagick介绍及安装
2011-08-30 23:16 1538作者:Cocowool 来源:博客园 发布时 ... -
Makefile
2011-08-30 22:10 872CC = g++ CFLAG = -Wall -g -w ... -
高位字节优先 低位字节优先
2011-08-24 17:30 1168自第一台计算机诞生, ... -
C++方式的文件操作
2011-08-24 16:05 1821本文主要讨论C++标准I/O库,主要内容为控制台输入输出流 ... -
【JAVA实用工具】JNA-通过它调用C++的方法,比JNI方便很多访问网站需要代理,所以把它COPY出来备忘
2011-08-24 00:33 3112How To Get Started Using JN ... -
Jni中C++和Java的参数传递
2011-08-24 00:04 5125如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对 ... -
aaaaa
2011-08-24 00:04 998如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对 ...
相关推荐
学习opencv第五章的课后习题答案,有比较详细的注释!
Learning OpenCV中文版 第3章练习题2-8的工程文件 里面含有后面习题的工程文件 内容都亲自测过,可行 大部分来源于网页相关资源 在VS2010环境下,亲自测试可正确运行的工程文件。自己使用只需要正确配置Opencv即可
学习opencv的课后习题答案,对于opencv的学习很有帮肋
学习Opencv 课后习题答案 1-9章 比较完整的一份课后习题答案,最初学者的学习很不错。
Learning OpenCV中文版 第3章练习题2-8的工程文件 里面含有后面习题的工程文件 内容都亲自测过,可行 大部分来源于网页
经过VS2008调试的程序,学习OpenCV的习题答案
已经做成了C++代码,可以给你一个参考。里面一个包括书上第四章九个大题,都齐了。一个积分送人。
学习opencv第六章课后习题,代码都是自己敲得,完整的,跟网上的不一样,都是经过测试可以编译通过
学习opencv的课后答案,便于理解学习opencv的用法。
学习opencv中文版(于仕琪)1~9章课后部分习题答案详解
opencv 3.0.0 第4部分
学习Opencv 第四章 细说HighGUI 练习4-8 Opencv人脸检测与Alpha融合源代码
Learning OpenCV中文版 第3章练习题2-8的工程文件 里面含有后面习题的工程文件 内容都亲自测过,可行 大部分来源于网页相关资源
java调用opencv利用霍夫圆定位查找印章,并返回质心坐标和半径以达到截取印章的目的
OpenCV计算机视觉基础教程(Python版)试题及答案 一、单项选择题(本大题共20小题,每小题1分,共20分) 1、OpenCV从( )版本开始使用Apache 2许可。 A、4.2.0 B、4.3.0 C、4.4.0 D、4.5.0 2、OpenCV提供机器学习...
第四章——细说HighGUI 第五章——图像处理 第六章——图像变换 第七章——直方图与匹配 第八章——轮廓 第九章——图像局部与分割 第十章——跟踪与运动 第十一章——摄像机模型与标定 第十二章——投影与三维视觉 ...
Learning OpenCV 第10章跟踪与运动 个人整理代码
《学习OpenCv3》课后习题 第六章 绘图和注释参考代码
▪ 第4章 细说HighGUI ▪ 第5章 图像处理 ▪ 第6章 图像变换 ▪ 第7章 直方图与匹配 ▪ 第8章 轮廓 ▪ 第9章 图像局部与分割 ▪ 第10章 跟踪与运动 ▪ 第11章 摄像机模型与标定 ▪ 第12章 投影与三维视觉 ▪ 第13章 ...
Opencv_4567课后答案,先说明,只有4567章的答案!