体验vs2010+opencv2.3.1

      搞图像处理早已对opencv有所了解,一直想用opencv来进行日常编程,由于导师的缘故一直让用matlab,说来的比较快(发论文赶时间),但是师兄多次深深告诫,多用C/C++,因为很少有公司做产品用matlab,否则找工作时会比较麻烦。为了就业为了体验飞快的处理速度,和opencv新版本的可以和matlab媲美的C++接口特性,更为了今后的工作,决定开始少用matlab,多用CC++,深知自己水平有限,但要不断尝试,不断练习。此处先用opencv2.3.1+vs2010来体验一把。当然这里临模仿了牛人成果,在此致以歉意!

     我本菜鸟,在安装和调试opencv过程中遇到很多这样那样的问题,在百度中搜索一个个一步步得到了解决,谢谢前辈! 

比如:opencv路径问题,包含库问题,调试过程中的问题等等。
#include "stdafx.h"
#include "opencv2/imgproc/imgproc.hpp"


#include "opencv2/highgui/highgui.hpp"
#include "cv.h"
#include"highgui.h"


#include "iostream"


//采用cv命名空间和标准命名空间


using namespace std;


using namespace cv;


//定义全局变量


int DELAY_CAPTION=1500; //显示标题时延时至少1.5s


int DELAY_BLUR=100; //显示每次滤波时延时0.1s


int MAX_KERNEL_LENGTH=31;//最大的滤波核长度为31

Mat src,dst;


char window_name[]="Filter Demo 1:";

//函数说明


int display_caption(char *caption);


int display_dst(int delay);

//主函数

int main(int argc, _TCHAR* argv[])


{


       namedWindow(window_name,CV_WINDOW_AUTOSIZE);//建立一个窗口

       //将lena图片读写到矩阵src

       src = imread("D:\\lena.jpg",1);       
//将Origin Image单词显示在dst图片中,并在窗口中显示1.5s
  if(display_caption("origin image")!=0){return 0;}//在窗口中间位置显示单词
  dst=src.clone();//将src复制到dst中去;
  if( display_dst(DELAY_CAPTION)!=0){return 0;}//显示dst(原图)1.5s
  if(display_caption("jun zhi filter")!=0){return 0;}//显示单词
  //对图像进行滤波处理并显示,
  int i;
  for(i=1;i<MAX_KERNEL_LENGTH;i=i+2)//不断改变滤波核的大小显示观察效果
  {
  blur(src,dst,Size(i,i),Point(-1,-1));
  if(display_dst(DELAY_BLUR)){return 0;}
  }
   
  if(display_caption("GAUSS")!=0){return 0;}//显示单词
  for(i=1;i<MAX_KERNEL_LENGTH;i=i+2)
  {
  GaussianBlur(src,dst,Size(i,i),0,0);
  if(display_dst(DELAY_BLUR)){return 0;}
  }


}


//中间显示标题,没有按键触发时返回0

int display_caption(char *caption)
{
dst=Mat::zeros(src.size(),src.type());
putText(dst,caption,Point(src.cols/4,src.rows/2),CV_FONT_HERSHEY_SCRIPT_SIMPLEX,1,(0,0,255));
imshow(window_name,dst);
int c=waitKey(DELAY_CAPTION);
if(c>=0)
return -1;//若有按键按下返回-1;否则返回0
return 0;
/*
//功能:初始化字体结构体
    //原型:void cvInitFont( 
        CvFont* font, //被初始化的字体结构体
        int font_face,//字体名称标识符
            $ CV_FONT_HERSHEY_SIMPLEX - 正常大小无衬线字体。 
            $ CV_FONT_HERSHEY_PLAIN - 小号无衬线字体。 
            $ CV_FONT_HERSHEY_DUPLEX - 正常大小无衬线字体。( 比CV_FONT_HERSHEY_SIMPLEX更复杂) 
            $ CV_FONT_HERSHEY_COMPLEX - 正常大小有衬线字体。 
            $ CV_FONT_HERSHEY_TRIPLEX - 正常大小有衬线字体 ( 比CV_FONT_HERSHEY_COMPLEX更复杂) 
            $ CV_FONT_HERSHEY_COMPLEX_SMALL - CV_FONT_HERSHEY_COMPLEX 的小译本。 
            $ CV_FONT_HERSHEY_SCRIPT_SIMPLEX - 手写风格字体。 
            $ CV_FONT_HERSHEY_SCRIPT_COMPLEX - 比CV_FONT_HERSHEY_SCRIPT_SIMPLEX更复杂。
            //这个参数能够由一个值和可选择的CV_FONT_ITALIC字体标记合成,就是斜体字
        double hscale,//字体宽度。
            //如果等于1.0f,字符的宽度是最初的字体宽度。如果等于0.5f,字符的宽度是最初的字体宽度的一半
        double vscale,//字体高度。
        double shear=0,//字体的斜度。
            //当值为0时 ,字符不倾斜;当值为1.0f时,字体倾斜≈45度,等等。厚度让字母着重显示。函数cvLine用于绘制字母
        int thickness=1, //字体笔划的粗细程度
        int line_type=8 //字体笔划的类型
        );
    //--------------------------------------------*/
         


//opencv2.3.1中往图片上加字用putText函数,大家一看就应该知道参数是什么意思了




//延时1.5s,注意在c++中是waitKey,该函数参数如果是非正数的话就直接停止在该位


//置等待按键触发,否则延时至少参数时长ms

}
//显示dst,delay,时间
int display_dst(int delay)
{
imshow(window_name,dst);
int c=waitKey(delay);
if(c>=0)
return -1;
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值