opencv暑假培训之第一次
2014-07-07 18:25
295 查看
1.显示一张图片
运行结果
运行结果
解释:若是将cvResizeWindow("show",100,100)的注释去掉,那么就可以改变图像的大小
cvShowImage (窗口名字,被显示的图片)
cvLoadImage(要被读入的文件的文件名,指定读入图像的颜色和深度:)//从文件中读取图像
cvNamedWindow (窗口的名字,窗口属性标志)目前唯一支持的标志是CV_WINDOW_AUTOSIZE。当这个标志被设置后,用户不能手动改变窗口大小,窗口大小会自动调整以适合被显示图像(参考cvShowImage)。
函数cvNamedWindow创建一个可以放置图像和trackbar的窗口。被创建的窗口可以通过它们的名字被引用。
cvMoveWindow (将被设置的窗口的名字,窗口左上角的x坐标,窗口左上角的y坐标) 函数cvMoveWindow改变窗口的位置。
delay 延迟的毫秒数。
函数cvWaitKey无限制的等待按键事件(delay<=0时);或者延迟"delay"毫秒。返回值为被按键的值,如果超过指定时间则返回-1。
注释:这个函数是HighGUI中唯一能够获取和操作事件的函数,所以在一般的事件处理中,它需要周期地被调用,除非HighGUI被用在某些能够处理事件的环境中。
译者注:比如在MFC环境下,这个函数不起作用。
2.在图片上画直线
运行结果
解释:CvScalar
可存放在1-,2-,3-,4-TUPLE类型的捆绑数据的容器
3.自己创建一个窗口,并在窗口中画一个矩形,在画矩形之前克隆一个窗口,可以进行单步调试来查看各个函数的功能
解释:CvRect
矩形框的偏移和大小
typedef struct CvRect
{
int x; /* 方形的最左角的x-坐标 */
int y; /* 方形的最上或者最下角的y-坐标 */
int width; /* 宽 */
int height; /* 高 */
}
CvRect;
/* 构造函数*/
inline CvRect cvRect( int x, int y, int width, int height );
#include "stdafx.h" #include "highgui.h" int main(int argc, char* argv[]) { IplImage *m_img=NULL;//定义一个指针,指向空 m_img=cvLoadImage("smile.jpg", 1);//函数cvLoadImage从指定文件读入图像,返回读入图像的指针 cvNamedWindow("show",CV_WINDOW_AUTOSIZE);//创建一个窗口,前面的为窗口名字,cv代表是opencv的函数,特有的 cvShowImage("show",m_img);//显示图像 cvMoveWindow("show",300,100);//定位窗口的位置,坐标位置为x,y; // cvWaitKey(-1);//等待用户响应 // cvResizeWindow("show",100,100); cvWaitKey(); cvReleaseImage(&m_img);//释放图像占用的内存 cvDestroyWindow("show");//销毁窗口 return 0; }
运行结果
运行结果
解释:若是将cvResizeWindow("show",100,100)的注释去掉,那么就可以改变图像的大小
cvShowImage (窗口名字,被显示的图片)
cvLoadImage(要被读入的文件的文件名,指定读入图像的颜色和深度:)//从文件中读取图像
cvNamedWindow (窗口的名字,窗口属性标志)目前唯一支持的标志是CV_WINDOW_AUTOSIZE。当这个标志被设置后,用户不能手动改变窗口大小,窗口大小会自动调整以适合被显示图像(参考cvShowImage)。
函数cvNamedWindow创建一个可以放置图像和trackbar的窗口。被创建的窗口可以通过它们的名字被引用。
cvMoveWindow (将被设置的窗口的名字,窗口左上角的x坐标,窗口左上角的y坐标) 函数cvMoveWindow改变窗口的位置。
cvWaitKey( int delay=0 );
delay 延迟的毫秒数。
函数cvWaitKey无限制的等待按键事件(delay<=0时);或者延迟"delay"毫秒。返回值为被按键的值,如果超过指定时间则返回-1。
注释:这个函数是HighGUI中唯一能够获取和操作事件的函数,所以在一般的事件处理中,它需要周期地被调用,除非HighGUI被用在某些能够处理事件的环境中。
译者注:比如在MFC环境下,这个函数不起作用。
2.在图片上画直线
#include "stdafx.h" #include "highgui.h" #include<stdio.h> int main(int argc, char* argv[]) { CvPoint pt1; pt1=cvPoint(100,200); printf("x:%d,y:%d\n",pt1.x,pt1.y); CvPoint pt2; pt2=cvPoint(300,450); printf("x:%d,y:%d\n",pt2.x,pt2.y);//两个点的坐标的确定 CvScalar color;//颜色参数类型 颜色 color=cvScalar(0,225,0);//(蓝,绿,红) printf("v1:%f,v2:%f,v3:%f\n",color.val[0],color.val[1],color.val[2]); IplImage *img=NULL; img=cvLoadImage("smile.jpg"); cvLine(img,pt1,pt2,color,2);//画直线 cvNamedWindow("draw"); cvShowImage("draw",img); cvWaitKey(); return 0; }
运行结果
解释:CvScalar
可存放在1-,2-,3-,4-TUPLE类型的捆绑数据的容器
typedef struct CvScalar { double val[4] } CvScalar;
/* 构造函数:用val0初始化val[0]用val1初始化val[1], 以此类推*/ inline CvScalar cvScalar( double val0, double val1=0, double val2=0, double val3=0 );
3.自己创建一个窗口,并在窗口中画一个矩形,在画矩形之前克隆一个窗口,可以进行单步调试来查看各个函数的功能
#include "stdafx.h" #include "highgui.h" #include<stdio.h> int main(int argc, char* argv[]) { CvSize sz; sz=cvSize(640,480); printf("width:%d,height:%d\n",sz.width,sz.height); IplImage* img=NULL; img=cvCreateImage(sz,IPL_DEPTH_8U,3); //创建一个图像,大小:sz,深度:8,通道数:3; CvRect rect;//定义一个矩形 rect=cvRect(50,30,100,150); CvPoint pt1=cvPoint(rect.x,rect.y);//矩形左上角的坐标赋值给pt1; CvPoint pt2=cvPoint(rect.x+rect.width,rect.y+rect.height);//矩形rect右下角的坐标赋值给pt2 IplImage* img1=cvCloneImage(img);//将图像img复制给img1; cvRectangle(img,pt1,pt2,cvScalar(20,220,200),2);//在创建的图像上绘制一个矩形 cvNamedWindow("create"); cvShowImage("create",img); cvNamedWindow("clone"); cvShowImage("clone",img1); cvWaitKey(); cvReleaseImage(&img); cvReleaseImage(&img1); return 0; }运行结果
解释:CvRect
矩形框的偏移和大小
typedef struct CvRect
{
int x; /* 方形的最左角的x-坐标 */
int y; /* 方形的最上或者最下角的y-坐标 */
int width; /* 宽 */
int height; /* 高 */
}
CvRect;
/* 构造函数*/
inline CvRect cvRect( int x, int y, int width, int height );
相关文章推荐
- C++第一次培训
- 马哥培训的第一次作业
- citrix+netscaler配置第一次培训
- 第一次培训QTP后感
- 连载:北漂十二年祭(2)--Leo第一次面试和培训公司的惊天秘密
- java第一次培训实习感言--类的继承和方法
- 第一次培训心得体会
- 海外组09夏令营java第一次培训
- 网络工作室暑假后第一次培训资料(ADO.NET创建访问数据集)整理
- 第一次培训
- 跳槽后的第一次培训
- 第一次对客户人员进行培训来配合自己的工作感悟
- 网络工作室暑假后第一次培训资料(ADO.NET创建访问数据集)整理 分类: ASP.NET 2012-10-05 20:10 911人阅读 评论(0) 收藏
- 第一次导师制组长培训-赢在执行力
- 大型机的第一次培训
- 网络工作室暑假后第一次培训资料(ADO.NET创建访问数据集)整理
- 网络工作室暑假后第一次培训资料(ADO.NET创建访问数据集)整理
- 升华网网络部第一次培训~
- 黄淮学院CSDN高校俱乐部第一次c语言培训
- 网络工作室暑假后第一次培训资料(ADO.NET创建访问数据集)整理