zoukankan      html  css  js  c++  java
  • 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:OpenCVopencvuild
    系统Path变量添加: ;%OPENCV%x64vc12in

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

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

    /*
    OpenCV3.0 学习
    2015.10  by Huangtao
    
    */////////////////////////////////////////////////////////////
    
    #include <opencv2opencv.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);
    }
  • 相关阅读:
    转载:PHP JSON_ENCODE 不编码中文汉字的方法
    【TP3.2】:日志记录和查看
    PHP原生:分享一个轻量级的缓存类=>cache.php
    python: 基本的日期与时间转换
    python: 随机选择
    计算机bit是什么意思
    Python: 矩阵与线性代数运算
    Python numpy 安装以及处理报错 is not a supported wheel on this platform
    Python: 大型数组运算
    Python numpy有什么用?
  • 原文地址:https://www.cnblogs.com/ht-beyond/p/4897487.html
Copyright © 2011-2022 走看看