您的位置:首页 > 运维架构

OpenCV3.0初试

2015-10-21 13:10 337 查看
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: