- 浏览: 1010845 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 1831NotePad++ - 安装和配置C/C+ ... -
VC中使用ATL编写控件 【转】
2011-10-21 15:23 2141VC中使用ATL编写控件 作者:邵盛松 2010 ... -
在Windows环境下MongoDB搭建和简单操作【转】
2011-10-21 12:37 989一,安装mongoDB 1,解 ... -
Mongodb在Windows下安装及配置【转】
2011-10-21 12:35 5851.下载mongodb的windows版本,有32位和64位版 ... -
一篇介绍VC开发OCX的文章[转]
2011-10-20 17:57 1920转自“http://www.cnblogs.com/genga ... -
使你的ActiveX控件执行时不弹出安全性提示 (转载)
2011-10-20 17:56 1206使你的ActiveX控件执行时不弹出安全性提示 2010-0 ... -
VC++ 的MFC 和ATL 及COM 是什么?
2011-10-20 01:12 1019一、什么是MFC 微软基础类(Micro ... -
使用ATL编写一个简单的COM服务器【转】
2011-10-20 01:10 895下载例子代码 本文的对象是COM编程 ... -
使用VC++6.0制作ASP服务器控件简介[转]
2011-10-20 01:10 701用ASP写网页的程序 员,一定对VBSript语句“Set ... -
基于CentOS 5.4搭建nginx+php+spawn-fcgi+mysql
2011-09-01 13:49 1569基于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 2336mrtg的安装过程这里就不再阐述,随便搜索一下。使用ind ... -
用MRTG检测Linux网络性能
2011-09-01 10:49 907随着Linux应用的日益广泛,有大量的网络服务器使用Linux ... -
Linux安装配置maven3.0以及搭建nexus私服
2011-08-30 23:45 1660一、软件准备 1、apache-maven-3.0-b ... -
GraphicsMagick介绍及安装
2011-08-30 23:16 1561作者:Cocowool 来源:博客园 发布时 ... -
Makefile
2011-08-30 22:10 896CC = g++ CFLAG = -Wall -g -w ... -
高位字节优先 低位字节优先
2011-08-24 17:30 1203自第一台计算机诞生, ... -
C++方式的文件操作
2011-08-24 16:05 1847本文主要讨论C++标准I/O库,主要内容为控制台输入输出流 ... -
【JAVA实用工具】JNA-通过它调用C++的方法,比JNI方便很多访问网站需要代理,所以把它COPY出来备忘
2011-08-24 00:33 3199How To Get Started Using JN ... -
Jni中C++和Java的参数传递
2011-08-24 00:04 5158如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对 ... -
aaaaa
2011-08-24 00:04 1028如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对 ...
相关推荐
Learning OpenCV中文版 第3章练习题2-8的工程文件 里面含有后面习题的工程文件 内容都亲自测过,可行 大部分来源于网页相关资源 在VS2010环境下,亲自测试可正确运行的工程文件。自己使用只需要正确配置Opencv即可
本资源是学习OpenCV过程中第六章课后的习题解答,且为作者亲自编写,非网络复制,确保了代码的原创性和有效性。这些代码已经过测试,能够成功编译和运行,对于深入理解和实践OpenCV的功能非常有帮助。 1. **6_17**:...
本压缩包包含的是第4章的部分练习题的工程文件,具体包括习题4-1至4-5。以下将对这些练习题涉及的知识点进行详细解析。 1. **习题4-1**:通常涉及到OpenCV的基础图像处理操作,如读取和显示图像。这可能要求你使用`...
根据提供的文件内容,我们可以发现这些内容是关于学习OpenCV编程的习题解答和示例代码。为了便于阐述,我们将从内容中提炼相关的知识点,并尽量详细地进行解释。 ### OpenCV基础概念 1. **IplImage结构体**:在...
《OpenCV学习之旅:中文版第3章练习详解》 在深入探讨OpenCV这个强大的计算机视觉库时,实践是理解其精髓的关键。本资源集合包含了Learning OpenCV中文版第三章的多个练习题目的工程文件,涵盖了从基础操作到进阶...
OpenCV 是一个强大的开源计算机视觉库,主要用于图像处理和计算机视觉任务。...这些知识点构成了OpenCV基础教程的重要部分,涵盖了图像处理、计算机视觉的基本操作和高级技术,是学习和理解计算机视觉所必需的基础。
OpenCV计算机视觉基础教程(Python版)(慕课版)一共包含10章;...第4章 图像处理基础算法 第5章 边缘和轮廓 第6章 直方图 第7章 模板匹配与图像分割 第8章 特征检测 第9章 人脸检测与识别 第10章 机器学习与深度学习
第 4 章:图像变换 * 色彩空间变换 * 几何变换 * 图像模糊 * 阈值处理 * 形态变换 教学方法 本课程采用理论课、讨论课、实验课和习题等多种教学方法,旨在让学生掌握计算机视觉的基础知识和应用。 教学资源 * ...
第四章“数据结构及数据操作”讲解了OpenCV中的关键数据结构,如Mat矩阵、IplImage等,以及如何使用它们进行图像操作。这部分内容包括图像的创建、访问像素、拷贝和比较,以及内存管理和效率优化技巧。 第五章...
《数字图像处理习题整理版(附答案)》是一份详尽的参考资料,主要针对学习数字图像处理的学生或研究人员。这份PDF文档包含了丰富的习题集和详细的解答,旨在帮助读者深入理解和掌握数字图像处理的核心概念和技术。 ...
《OpenCV课后题》详解 在学习计算机视觉领域,OpenCV库是不可或缺的一部分,它提供了丰富的函数和工具,使得图像处理和计算机视觉算法的实现变得简单易行。本讲解将深入探讨《Learning OpenCV》一书中第五章和第七...
【描述】的简短内容表明这是一个针对"头歌"(可能是误打或者特定教材的名称)Python程序设计的解答集,可能包括了书中的练习题或项目实现的代码示例。这样的资源对于正在学习Python的学生或自学者来说是非常有价值的...
本资源包集合了该书第三版和第四版的中英文答案,以及配套的Matlab和C++代码实现,旨在为学习者提供全方位的学习支持。其中,Python案例的加入也使得这个资源库更加全面,满足不同编程背景学习者的需要。 数字图像...
【标题】"firrst.zip_firrst_opencv window"是一个关于OpenCV库入门教程的压缩文件,主要聚焦于如何在Windows操作系统中使用...教程内容可能包括详细的步骤指南、代码示例和可能的练习题,帮助用户快速上手OpenCV。
每个章节都包含了理论讲解、实践案例和练习题。 - **内容**:本书介绍了如何使用OpenCV来加载和显示图片、播放视频、执行简单的图像变换等基本操作。通过这些实践性的内容,读者可以快速上手并掌握OpenCV的核心功能...
3. **程序设计题**:练习了基本的输入输出、数学计算、条件判断、循环控制等编程技能。 例如,程序设计题中: - **习题1**:可能涉及到打印输出和文件操作,如使用IDLE创建新文件、输入输出代码并保存运行。 - **...
在实验中,我们用到了一些Python的图像处理库,比如`matplotlib.pyplot`用于图像的显示,`numpy`用于数值计算和数组操作,`cv2`(即OpenCV库)用于图像的读取和处理。此外,还使用了Python的内置模块`math`进行数学...
4. **概率论与数理统计**(04第4章 概率论与数理统计1.pptx和04第4章 概率论与数理统计2.pptx): 这两章将探讨随机变量、概率分布、假设检验、回归分析等统计方法,并使用Python进行实际计算,例如使用Scipy和...
4. **图论模型**(10第10章):图论在解决复杂网络问题中有广泛的应用,如交通网络、社交网络等。学习者会学习如何用Python实现图的构建、遍历和最优化算法,如Dijkstra算法、Floyd算法等。 5. **综合评价方法**...