横看成岭侧成峰,计算视觉大不同。观看的角度不同,成像自然不同,这对计算机视觉来说,是个大麻烦。但计算机视觉应用如此广泛,却又有不得不研究的理由。指纹机大家都用过吧,这不过是冰山之一角。产品检测,机器人,医学成像等等,都有计算机视觉的身影。

学习计算机视觉,OpenCV 是个不错的选择。下载安装到指定位置后,会发现有 3.5G 之多。初步看看,重复太多,32位,64位各有一套,而 vc10,vc11,vc12 再次重复。只需把要用到的 build -> x86 -> vc12 调试版提取出来即可。我是编译源代码,将生成的 bin -> *.dll, lib -> *.lib 和原来 OpenCV 安装目录 build -> include 提取出来,放入新建文件夹中,约 60MB。平时学习,使用这个即可。

1.配置系统环境变量,将 bin 加入 Path 变量,注销一下使其有效。

2.启动 VS2013,新建 Win32 Console 空项目。在项目 属性 -> VC++ 目录 -> 包含目录 添加 include库目录 添加 lib

3.新建头文件 x01CV.h,内容如下:

#pragma once

#pragma comment(lib,"opencv_calib3d249d.lib")
#pragma comment(lib,"opencv_contrib249d.lib")
#pragma comment(lib,"opencv_core249d.lib")
#pragma comment(lib,"opencv_features2d249d.lib")
#pragma comment(lib,"opencv_flann249d.lib")
#pragma comment(lib,"opencv_gpu249d.lib")
#pragma comment(lib,"opencv_highgui249d.lib")
#pragma comment(lib,"opencv_imgproc249d.lib")
#pragma comment(lib,"opencv_legacy249d.lib")
#pragma comment(lib,"opencv_ml249d.lib")
#pragma comment(lib,"opencv_nonfree249d.lib")
#pragma comment(lib,"opencv_objdetect249d.lib")
#pragma comment(lib,"opencv_ocl249d.lib")
#pragma comment(lib,"opencv_photo249d.lib")
#pragma comment(lib,"opencv_stitching249d.lib")
#pragma comment(lib,"opencv_superres249d.lib")
#pragma comment(lib,"opencv_ts249d.lib")
#pragma comment(lib,"opencv_video249d.lib")
#pragma comment(lib,"opencv_videostab249d.lib") #include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv/cv.h>

x01CV.h

4.新建源文件 Main.cpp,内容如下:

#include <iostream>
#include "x01CV.h" using namespace cv;
using namespace std; namespace
{
const string AppTitle = "x01 Lab - OpenCV Demo"; int g_filterValue = ;
Mat g_srcImage, g_destImage; void OnBoxFilter(int, void*)
{
boxFilter(g_srcImage, g_destImage, -, Size(g_filterValue + , g_filterValue + ));
imshow(AppTitle, g_destImage);
}
void OnBlur(int, void*)
{
blur(g_srcImage, g_destImage, Size(g_filterValue + , g_filterValue + ), Point(-, -));
imshow(AppTitle, g_destImage);
}
void OnGaussianBlur(int, void*)
{
int v = g_filterValue * + ;
GaussianBlur(g_srcImage, g_destImage, Size(v, v), , );
imshow(AppTitle, g_destImage);
}
void OnMediaBlur(int, void*)
{
medianBlur(g_srcImage, g_destImage, g_filterValue * + );
imshow(AppTitle, g_destImage);
}
void OnBilateralFilter(int, void*)
{
int v = g_filterValue + ;
bilateralFilter(g_srcImage, g_destImage, v, v * , v / );
imshow(AppTitle, g_destImage);
}
} int main()
{
g_srcImage = imread("1.jpg"); // For erode and dilate demo
/*Mat kernel = getStructuringElement(MORPH_RECT, Size(15, 15));
Mat dest;
erode(g_srcImage, dest, kernel); namedWindow(AppTitle);
imshow(AppTitle, dest);*/ g_destImage = g_srcImage.clone(); while (true)
{
char c = char(waitKey());
if (c == 'q') break; namedWindow(AppTitle); if (c == 'a' || c == 'A')
createTrackbar("Kernel Value", AppTitle, &g_filterValue, , OnBlur);
else if (c == 'b' || c == 'B')
createTrackbar("Kernel Value", AppTitle, &g_filterValue, , OnBoxFilter);
else if (c == 'c' || c == 'C')
createTrackbar("Kernel Value", AppTitle, &g_filterValue, , OnGaussianBlur);
else if (c == 'd' || c == 'D')
createTrackbar("Kernel Value", AppTitle, &g_filterValue, , OnMediaBlur);
else if (c == 'e' || c == 'E')
createTrackbar("Kernel Value", AppTitle, &g_filterValue, , OnBilateralFilter); imshow(AppTitle, g_destImage);
} return ;
}

Main.cpp

5.F5 运行无误,按 a 或 b, c, d, e 等,可进行模糊处理。效果图如下:

x01.Lab.OpenCV: 计算机视觉的更多相关文章

  1. x01.Lab.StreetApp: MVVM

    Store App 特别适用于 MVVM 模式.由于要用到 SQLite,Bing Maps,所以第一步从网上搜索并安装这两个扩展.很难想象在智能手机上运行 SQL Server 这种巨无霸型数据库, ...

  2. OpenCV计算机视觉实战(Python版)资源

    疲劳检测 pan.baidu.com/s/1Ng_-utB8BSrXlgVelc8ovw #导入工具包 from scipy.spatial import distance as dist from ...

  3. OpenCV计算机视觉学习(13)——图像特征点检测(Harris角点检测,sift算法)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 前言 ...

  4. OpenCV计算机视觉学习(1)——图像基本操作(图像视频读取,ROI区域截取,常用cv函数解释)

    1,计算机眼中的图像 我们打开经典的 Lena图片,看看计算机是如何看待图片的: 我们点击图中的一个小格子,发现计算机会将其分为R,G,B三种通道.每个通道分别由一堆0~256之间的数字组成,那Ope ...

  5. OpenCV计算机视觉学习(12)——图像量化处理&图像采样处理(K-Means聚类量化,局部马赛克处理)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 准备 ...

  6. OpenCV计算机视觉编程攻略(第三版)源码

    去年买了这本OpenCV的书,感觉还不错,但是书上没有给出下载源码的地方,在网上找了下,还好找到了,现在分享给大家: 链接: https://pan.baidu.com/s/1IqAay1IZ8g-h ...

  7. OpenCV计算机视觉学习(2)——图像算术运算 & 掩膜mask操作(数值计算,图像融合,边界填充)

    在OpenCV中我们经常会遇到一个名字:Mask(掩膜).很多函数都使用到它,那么这个Mask到底是什么呢,下面我们从图像基本运算开始,一步一步学习掩膜. 1,图像算术运算 图像的算术运算有很多种,比 ...

  8. OpenCV计算机视觉学习(3)——图像灰度线性变换与非线性变换(对数变换,伽马变换)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 下面 ...

  9. OpenCV计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice &q ...

随机推荐

  1. [javascript] 对象拷贝

    Object.prototype.clone = function() { var copy = (this instanceof Array) ? [] : {}; for (attr in thi ...

  2. Monkey测试4——Monkey命令行可用的全部选项

    Monkey命令行可用的全部选项 常规 --help 列出简单的用法. -v 命令行的每一个-v将增加反馈信息的级别. Level 0(缺省值)除启动提示.测试完成和最终结果之外,提供较少信息. Le ...

  3. 当EL遇到char

    在EL表达式中,假设某个entity的status属性为char类型,此处假设为'1',在jsp中,对于${entity.status=='1'},我们预期的结果是true,但实际上是false - ...

  4. Foreach原理

    本质:实现了一个IEnumerable接口, 01.为什么数组和集合可以使用foreach遍历? 解析:因为数组和集合都实现了IEnumerable接口,该接口中只有一个方法,GetEnumerato ...

  5. SSH免密码登录过程解析和实现

    SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用SSH 协议可以有效防止远程管理过程中的信息泄露问题. 从客户端来看,SSH提 ...

  6. java中newInstance()和new()

    在Java开发特别是数据库开发中,经常会用到Class.forName( )这个方法.通过查询Java Documentation我们会发现使用Class.forName( )静态方法的目的是为了动态 ...

  7. [deviceone开发]-HeaderView和FooterView的示例

    一.简介 这个是利用do_ListView组件实现下拉和上拉刷新功能的例子,除了do_ListView,其它比如do_Webview,do_ScrollView都有这个个功能.对应的BBS里的帖子详细 ...

  8. Git正确的协作方式(很简单)

    最近部门有人书写了一篇很好的Git协作方式,操作也简单,分支能以保持一条干净的线进行协作开发.这里做个笔记,方便之后查看. PS:本文非原创. 原则 不过分相信自己,自己的修改,可能影响所有人 不过分 ...

  9. AloneJs.msgbox() —— 弹出消息框

    一.引用 <link href="https://cdn.suziyun.com/alonejs.min.css" rel="stylesheet" /& ...

  10. atitit.数据验证--db数据库数据验证约束

    atitit.数据验证--db数据库数据验证约束 1. 为了加强账户数据金额的安全性,需要增加验证字段..1 2. 创建帐户1 3. 更改账户2 4. ---code3 5. --fini4 1. 为 ...