c++ opencv mat_【CV实战】OpenCV—Hello world代码示例
简介
- OpenCV
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
- 示例代码说明
官网的页面虽然很土,但是示例代码还是很良心的:OpenCV Tutorials
本文运行的代码全部取自于opencv官网,提供了代码和傻瓜式运行教程~,从下载VS2017,下载OpenCV到配置,运行。即使不懂c++,照样可以玩转OpenCV的hello world。
知乎编辑器效果有限,原文包括下载资源链接,请移步语雀:
OpenCV—Hello world代码示例 · 语雀www.yuque.com
主要的demo方法和简介如下:
//加载一张图片
int load_one_image(string path);
//加载一张图、并转化为灰图保持至outpath
int modify_and_save_one_image(string inpath, string outpath);
//介绍Mat - 基本图像容器
int mat_the_basic_image_container();
//改变图像对比度和亮度
int change_image_contrast_and_brightness(string path);
//利用OpenCV绘制基础图像(线段、圆、椭圆..)
int basic_drawing();
//线性滤波平滑处理图像
int smoothing_image(string path);
//侵蚀和膨胀处理图像
int erode_and_dilate_image(string path);
//更多形态学处理
int more_image_processing(string path);
//利用形态学处理提取图片中水平和垂直的线条
int extract_horizontal_and_vertical_lines_form_image(string path);
//图像金字塔(采样、缩放)
int image_pyramids(string path);
//基本阈值处理
int basic_thresholding_operations(string path);
//图像线性滤波器
int image_linear_filters(string path);
//给图像加上边框
int add_border_to_image(string path);
//霍夫圆变换(利用其检测图像中的圆)
int hough_circle_transform(string path);
//图像重映射(改变方向)
int image_remapping(string path);
//给图像中的轮廓画出椭圆和边框
int create_boxes_and_ellopses_for_contours(string path);
//失去焦点(模糊)图像恢复
int out_of_focus_image_recovery(int argc, string imagepath, char *argv[]);
运行环境
首先,只需要win10的环境,配上VS2017,再下载OpenCV3.x的压缩包即可。
VS2017
OpenCV3.X
示例图片下载 >>图片.rar(0.27 MB)
代码下载: >>代码.rar(18.66 kB)
效果展示
1.extract_horizontal_and_vertical_lines_form_image();
OpenCV官网demo展示https://www.zhihu.com/video/1084827728997556224
2.smoothing_image()
OpenCV官网demo展示https://www.zhihu.com/video/1084827679739625472
运行前准备
新建项目
- 打开VS,文件->新建项目
选第一个即可。
我的项目名称为opencv_demo,即项目根目录。
将解压后的opencv包,放到任意路径,我一般习惯放在项目同级目录下。进入项目文件夹,双击项目名称.sln即可再VS里启动项目,如图所示,可以准备一些图片放在这里,待会测试opencv会用到。
示例图片下载 >>图片.rar(0.27 MB)
发现,还有个同名的opencv_demo文件夹,再点击进去,将代码压缩包里的代码一起解压出来
然后选中这些文件,将.h开头的拖至VS右侧【头文件】下,其余的拖至【源文件】下
代码结构
代码压缩包里的代码分为两类:1.头文件 2.源文件
1.头文件即.h结尾的,此处即demohub.h,在这里定义了示例代码的方法名称、变量,类似Java种的接口
2.源文件,即核心的demo示例片段代码,一个.cpp对应一个Opencv的demo
源文件种opencv_demo.cpp是核心,在其中的main()方法种,调用demohub.h中定义的各种demo方法。
代码下载:代码.rar(18.66 kB)
VS配置
- VC++目录配置
选择右侧,项目文件夹鼠标右键->属性,配置VC++目录中的【包含目录】和【库目录】
包含目录,要将opencv->build->include目录添加上去;库目录,即lib所在目录,这里需要opencv->build->x64->vc14->lib。
- 包含目录:
D:personalProjectAIimageProcessingopencvbuildinclude
- 库目录:
D:personalProjectAIimageProcessingopencvbuildx64vc14lib
- 链接器配置
附加依赖项,新增:opencv_world340.lib
运行demo
在opencv_demo.cpp的main函数中,我们可以调用任意之前在demohub.h中声名的方法,每个方法对应一个.cpp示例代码
如上图所示:在main里运行smoothing_image(),这个demo方法的效果是:线性滤波平滑处理图像
c++ opencv mat_【CV实战】OpenCV—Hello world代码示例相关推荐
- OpenCV手部关键点检测(手势识别)代码示例
点击我爱计算机视觉标星,更快获取CVML新技术 前几日分享了learnopencv.com博主Satya Mallick发表的关于OpenCV Mask RCNN实例分割的博文(详见:OpenCV4. ...
- 【DDD】2万字讲解DDD,从理论到实战(代码示例)
文章目录 基础概念 领域 限界上下文 贫血模型和充血模型 贫血模型 充血模型 实体和值对象 实体 值对象 聚合 聚合根 领域事件 领域事件相关案例 事件风暴 DDD分层架构 用户接口层 应用层 领域层 ...
- c++ opencv mat_实战 | OpenCV 实现多张图像拼接
点击上方"计算机视觉life",选择"星标" 快速获得最新干货 本文转载自OpenCV学堂,主要介绍图像拼接Stitch模块算法流程与代码使用介绍 拼接算法 O ...
- cv python 样例_【CV实战】OpenCV—Hello world代码示例
简介OpenCV OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C 函数 ...
- OpenCV C++案例实战十二《图像全景拼接》
OpenCV C++案例实战十二<图像全景拼接> 前言 一.OpenCV Stitcher 1.功能源码 2.效果 二.图像全景拼接 1.特征检测 2.计算单应性矩阵 3.透视变换 4.图 ...
- 【课题总结】OpenCV 抠图项目实战(8)图像轮廓
Python 小白的课题报告-OpenCV 抠图项目实战(8) 本系列是 Python 小白的课题作业<基于OpenCV 的图像分割和抠图>. 需要说明的是,本系列并不能算是 OpenCV ...
- 【课题总结】OpenCV 抠图项目实战(7)边缘检测
Python 小白的课题报告-OpenCV 抠图项目实战(7) 本系列是 Python 小白的课题作业<基于OpenCV 的图像分割和抠图>. 需要说明的是,本系列并不能算是 OpenCV ...
- 【课题总结】OpenCV 抠图项目实战(6)色彩范围抠图
Python 小白的课题报告-OpenCV 抠图项目实战(6)色彩范围抠图 本系列是 Python 小白的课题作业<基于OpenCV 的图像分割和抠图>. 需要说明的是,本系列并不能算是 ...
- 【课题总结】OpenCV 抠图项目实战(5)自适应阈值抠图
Python 小白的课题报告-OpenCV 抠图项目实战(5)自适应阈值抠图 本系列是 Python 小白的课题作业<基于OpenCV 的图像分割和抠图>. 需要说明的是,本系列并不能算是 ...
- 【课题总结】OpenCV 抠图项目实战(4)固定阈值抠图
Python 小白的课题报告-OpenCV 抠图项目实战(4)固定阈值抠图 本系列是 Python 小白的课题作业<基于OpenCV 的图像分割和抠图>. 需要说明的是,本系列并不能算是 ...
最新文章
- Matlab计时函数的使用
- 数据可视化的开源方案: Superset vs Redash vs Metabase (一)
- 剑指offer--替换空格
- java oracle的2种分页方法
- nginx和tomcat实现反向代理、负载均衡和session共享
- c# 获取docx中的内容
- 李华上大学了吗?(I)
- 以下哪些可以成为html文件的扩展名_今天在我的visual studio code里装了以下插件,现在用着很爽...
- Spring的概述及主要模块
- 1.2 架构结构和视图
- QQ空间自动发广告说说?可能是激活工具附带的独狼Rootkit!
- 公共数据 | CnOpenData中国90座城市建筑物屋顶矢量数据集
- 每日方法分享:手机识别图片文字怎么弄?
- 三维空间任意一点绕任意轴线旋转
- 《python编程从入门到实践》第16章:收盘价均值的报错分析与解决
- Android中验证姓名、身份证、银行卡、手机号(正则表达式校验)
- dex2jiar在压缩classes.dex的时候出现的问题
- 3DMAX在三维GIS建模中的应用与优化
- 使用aspose方式使excel,ppt,word进行在线预览。(无水印)
- fstream 头文件作用
热门文章
- Unity 动态生成mesh圆圈
- Atitit php db mysql api<?php$mysql_conf = array( ‘host‘ => ‘localhost‘, ‘db‘ => ‘mysql
- Atitit 存储引擎核心技术 总结目录1. 表的存储有三个文件:结构+数据+索引 12. 页式管理
- Atitit.项目修改补丁打包工具 使用说明
- Atitit。Tree文件解析器的原理流程与设计实现 java c# php js
- 一个白学家眼里的 WebAssembly
- 财子说丨王国斌:相信时间的力量
- (转)Rust:Ownership,Reference和Lifetime详解
- Rust: 如何运行你在Atom中写的Rust代码?
- 制造业升级智造业,阿里云提炼了9大场景