OpenCV3.0初试

windows10 + vs2013 + opencv3.0

build文件夹下include是C&C++头文件所在文件夹;
doc是文档文件夹;
java是java开发的库文件夹;
python是python开发库文件夹;
x64和X86是已编译好的C&C++的64位和32位库文件夹,在它里面有vc11、vc12文件夹分别对应VC++2012和VC++2013。

添加环境变量: OpenCV E:\OpenCV\opencv\build
系统Path变量添加: ;%OPENCV%\x64\vc12\bin

E:\OpenCV\opencv目录下我已经生成了 opencv_debug.props 属性表。以后每次新建项目后导入这份属性表就可以了。
属性管理器 -> 右键“工程名” -> 添加现有属性表

64位PC,在工程的配置管理器上要选择x64方式,而不是win32。

/*
OpenCV3.0 学习
2015.10  by Huangtao

*/////////////////////////////////////////////////////////////

#include <opencv2\opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;



////图像显示
//int main()
//{
//    
//    Mat img = imread("dog.jpg");
//    if (img.empty())
//    {
//        cout << "error";
//        return -1;
//    }
//    imshow("dog", img);
//
//    //等待任意键按下后退出
//    waitKey(0);
//
//    return 0;
//}



////使用blur函数进行基于均值滤波的图像模糊操作
//int main()
//{
//    Mat srcImage = imread("1.jpg");
//    imshow("均值滤波【原图】", srcImage);
//
//    Mat dstImage;
//    blur(srcImage, dstImage, Size(10, 10));
//    imshow("均值滤波【效果图】", dstImage);
//
//    waitKey(0);
//    return 0;
//}



////使用canny函数进行灰度边缘检测
//int main()
//{
//    Mat srcImage = imread("1.jpg"); 
//    imshow("Canny边缘检测【原图】", srcImage); 
//
//    Mat dstImage, edge, grayImage;    
//    //创建与src同类型和大小的矩阵(dst)
//    dstImage.create(srcImage.size(), srcImage.type());
//    //将原图像转换为灰度图像
//    cvtColor(srcImage, grayImage, COLOR_BGR2GRAY);
//    //先用使用 3x3内核来降噪
//    blur(grayImage, edge, Size(3, 3));
//    //运行Canny算子
//    Canny(edge, edge, 10, 100, 3);
//    //显示效果图 
//    imshow("Canny边缘检测【效果图】", edge);
//
//    waitKey(0);
//    return 0;
//}



////使用VideoCapture类调用摄像头读入视频并显示
//int main()
//{
//    //打开默认摄像头
//    VideoCapture capture(0);
//    //循环显示每一帧
//    while (1)
//    {
//        Mat frame;  
//        //读取当前帧
//        capture >> frame;  
//        imshow("读取视频", frame);
//        waitKey(30);  //延时30ms
//    }
//
//    return 0;
//}



//使用OpenCV进行基本的绘图操作 
#define WINDOW_WIDTH        600

//绘制椭圆
void DrawEllipse(Mat img, double angle);
//绘制圆
void DrawFilledCircle(Mat img, Point center);
//绘制线段
void DrawLine(Mat img, Point start, Point end);

void DrawEllipse(Mat img, double angle)
{
    //线段的粗细程度
    int thickness = 0;
    //线段的类型
    int lineType = 8;

    ellipse(img,
        Point(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2),
        Size(WINDOW_WIDTH / 2, WINDOW_WIDTH / 8),
        angle,
        0,
        360,
        Scalar(0, 0, 255),
        thickness,
        lineType);
}

void DrawFilledCircle(Mat img, Point center)
{
    int thickness = 1;
    int lineType = 8;

    circle(img,
        center,
        WINDOW_WIDTH / 16,
        Scalar(0, 255, 0),
        thickness,
        lineType);
}

void DrawLine(Mat img, Point start, Point end)
{
    int thickness = 4;
    int lineType = 8;
    line(img,
        start,
        end,
        Scalar(255, 255, 255),
        thickness,
        lineType);
}

int main(void)
{

    // 创建空白的Mat图像
    Mat Image1 = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3);

    //DrawEllipse(Image1, 0);
    //DrawFilledCircle(Image1, Point(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2));
    DrawLine(Image1, Point(WINDOW_WIDTH / 4, 0), Point(WINDOW_WIDTH / 4, WINDOW_WIDTH));
    DrawLine(Image1, Point(WINDOW_WIDTH / 4 * 3, 0), Point(WINDOW_WIDTH / 4 * 3, WINDOW_WIDTH));
    rectangle(Image1,
        Point(WINDOW_WIDTH / 8 * 4, WINDOW_WIDTH / 9 * 6),
        Point(WINDOW_WIDTH / 8 * 5, WINDOW_WIDTH / 9 * 8),
        Scalar(0, 255, 255),
        -1,
        8);

    //显示绘制出的图像
    imshow("绘制图1", Image1);
    moveWindow("绘制图1", 100, 0);
    
    waitKey(0);
    return(0);
}

 

posted @ 2015-10-21 13:10  ht-beyond  阅读(369)  评论(0编辑  收藏  举报