x01.Lab.OpenCV: 计算机视觉
横看成岭侧成峰,计算视觉大不同。观看的角度不同,成像自然不同,这对计算机视觉来说,是个大麻烦。但计算机视觉应用如此广泛,却又有不得不研究的理由。指纹机大家都用过吧,这不过是冰山之一角。产品检测,机器人,医学成像等等,都有计算机视觉的身影。
学习计算机视觉,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: 计算机视觉的更多相关文章
- x01.Lab.StreetApp: MVVM
Store App 特别适用于 MVVM 模式.由于要用到 SQLite,Bing Maps,所以第一步从网上搜索并安装这两个扩展.很难想象在智能手机上运行 SQL Server 这种巨无霸型数据库, ...
- OpenCV计算机视觉实战(Python版)资源
疲劳检测 pan.baidu.com/s/1Ng_-utB8BSrXlgVelc8ovw #导入工具包 from scipy.spatial import distance as dist from ...
- OpenCV计算机视觉学习(13)——图像特征点检测(Harris角点检测,sift算法)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 前言 ...
- OpenCV计算机视觉学习(1)——图像基本操作(图像视频读取,ROI区域截取,常用cv函数解释)
1,计算机眼中的图像 我们打开经典的 Lena图片,看看计算机是如何看待图片的: 我们点击图中的一个小格子,发现计算机会将其分为R,G,B三种通道.每个通道分别由一堆0~256之间的数字组成,那Ope ...
- OpenCV计算机视觉学习(12)——图像量化处理&图像采样处理(K-Means聚类量化,局部马赛克处理)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 准备 ...
- OpenCV计算机视觉编程攻略(第三版)源码
去年买了这本OpenCV的书,感觉还不错,但是书上没有给出下载源码的地方,在网上找了下,还好找到了,现在分享给大家: 链接: https://pan.baidu.com/s/1IqAay1IZ8g-h ...
- OpenCV计算机视觉学习(2)——图像算术运算 & 掩膜mask操作(数值计算,图像融合,边界填充)
在OpenCV中我们经常会遇到一个名字:Mask(掩膜).很多函数都使用到它,那么这个Mask到底是什么呢,下面我们从图像基本运算开始,一步一步学习掩膜. 1,图像算术运算 图像的算术运算有很多种,比 ...
- OpenCV计算机视觉学习(3)——图像灰度线性变换与非线性变换(对数变换,伽马变换)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 下面 ...
- OpenCV计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice &q ...
随机推荐
- Openfire重新安装
由于忘记密码等原因,无法启动openfire ,那就重装吧,废话不多说,命令行按步骤粘贴执行就好了. 1.先删除mysql数据 mysql -u root -p 输入密码:例如,123456 show ...
- 参数化命令相关知识点之==================防止SQl的注入
一: 使用参数化命令查询DAL类: public DataTable StudentDAL(string name,string gender) { string str="连接字符串&qu ...
- velocity-tools-beta1.jar与velocity-tools.jar不兼容
今天在升级了某些依赖jar的版本启动一项目后,velocity中的有些定义在common.vm中变量居然变成了null,没能include进来导致,而没升级的环境是ok的,经过反查,最后发现是将vel ...
- [asp.net mvc 奇淫巧技] 01 - 封装上下文 - 在View中获取自定义的上下文
我们在asp.net 开发中已经封装了最强大的HttpContext,我们可以在HttpContext中可以获取到几乎任何想获取的东西,也可以在HttpContext写入需要返回客户端的信息.但是这些 ...
- jQuery自定义漂亮的下拉框插件8种效果
jquery美化选择器实例有:边框.下划线. 伸缩 .滑动. 覆盖. 旋转. 弹出层选择 .环形效果. 在线预览 实例代码 <body class="demo-1"> ...
- 性能更好的js动画实现方式——requestAnimationFrame
用js来实现动画,我们一般是借助setTimeout或setInterval这两个函数,css3动画出来后,我们又可以使用css3来实现动画了,而且性能和流畅度也得到了很大的提升.但是css3动画还是 ...
- JavaScript 事件绑定及深入
一.传统事件绑定的问题 解决覆盖问题,我们可以这样去解决:window.onload = function () { //第一个要执行的事件,会被覆盖 alert(1);};if (typeof wi ...
- asp.net+nopi生成Excel遇到设置单元格值null问题
Npoi 生成excel报表功能很不错,功能也不用给大家介绍了.首先看遇到的问题吧! FileStream file = new FileStream(Server.MapPath("Tem ...
- HTML5拖放(drag and drop)与plupload的懒人上传
HTML5拖放能够将本地的文件拖放到页面上,plupload又是很好的文件上传插件,而今天就将两者结合,做了个文件拖拽上传的功能. 简述HTML5拖放 拖放是HTML5标准的一部分,任何元素都能够拖放 ...
- Laravel 5 性能优化技巧
说明 性能一直是 Laravel 框架为人诟病的一个点,所以调优 Laravel 程序算是一个必学的技能. 接下来分享一些开发的最佳实践,还有调优技巧,大家有别的建议也欢迎留言讨论. 这里是简单的列表 ...