OpenCV3入门1—环境搭建与实验
1、环境搭建
1.1 VS2017开发环境搭建
1)、下载软件包

2)、配置环境变量
配置win10系统环境变量,把下面路径添加到path。
D:\WORK\5.OpenCV\opencv\build\x64\vc15\bin
3)、vs属性配置

配置包含路径
D:\WORK\5.OpenCV\opencv\build\include\opencv
D:\WORK\5.OpenCV\opencv\build\include\opencv2
配置库目录
D:\WORK\5.OpenCV\opencv\build\x64\vc15\lib
配置链接器输入附加依耐项
opencv_world343d.lib(在D:\WORK\5.OpenCV\opencv\build\x64\vc15\lib下)
1.2 python3环境搭建
python开发环境安装比较简单,网上很多例子,不在赘述,基本上pip install opencv-python即可。
2、图像操作—读、写、显示
例:1:读取图像
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv; int main() {
Mat pic1 = imread("D:/WORK/5.OpenCV/LeanOpenCV/pic_src/pic1.bmp");
namedWindow("pic1");
imshow("pic1", pic1);
waitKey();
}

例2:写图像
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv; int main() {
Mat mat = Mat(, , CV_8UC1);
cout << "rows="<<mat.rows << ",cols=" << mat.cols << endl;
for (int i = ; i < mat.rows; i++)
{
uchar* row = mat.ptr<uchar>(i);
for (int j = ; j < mat.cols; j++)
{
row[j] =(uchar) ((j / ) * );
}
} imshow("pic1", mat);
imwrite("D:/WORK/5.OpenCV/LeanOpenCV/pic_src/mat.bmp", mat);
waitKey();
}

3、函数分析
Mat有3个重要的方法:
Mat mat = imread(const String* filename, int flags); 读取图像
imshow(const string winName, InputArray mat); 显示图像
imwrite(const string& filename, InputArray img); 储存图像
1) imread
Mat imread(const String& filename,int flags = IMREAD_COLOR)
enum {
IMREAD_UNCHANGED = -, // 8 位,彩色或非彩色
IMREAD_GRAYSCALE = , // 8 位,灰度
IMREAD_COLOR = , //未改变深度、颜色
IMREAD_ANYDEPTH = , //任意深度,未改变颜色
IMREAD_ANYCOLOR = , //未改变深度,任意颜色
IMREAD_LOAD_GDAL = // 使用 gdaL 驱动程序
};
因为flags是int型的,如果不在上面的枚举中取值,则可以这样进行。
flags>0:返回3个通道的彩色图像
flags=0:返回灰度图像
flags<0:返回包含Alpha通道的加载的图像
注意,如果使用彩色模式输入图像,解码后顺序是BGR,而不是通常的RGB。
2) imshow和namedWindow
imshow函数前没有namedWindow函数则自动执行一个,但是该函数默认创建窗口的参数为cv2.WINDOW_AUTOSIZE,窗口大小会自动适应所显示的图像,并且不能改变窗口的大小。
cv2.namedWindow("demo" , cv2.WINDOW_NORMAL)
cv2.imshow("demo" , img)
这样生成的窗口时可以调整大小的,通过改变参数可以得到不同功能的窗口.
窗口大小可以改变 cv2.WINDOW_NORMAL
窗口大小不可以改变 cv2.WINDOW_AUTOSIZE
窗口大小自适应比列 cv2.WINDOW_FREERATIO
窗口大小保持比例 cv2.WINDOW_KEEPRATIO
显示色彩变成暗色 cv2.WINDOW_GUI_EXPANDED
3) imwrite
CV_EXPORTS_W bool imwrite( const String& filename, InputArray img,
const std::vector<int>& params = std::vector<int>());
第一个参数const String& filename表示需要写入的文件名,必须要加上后缀。
第二个参数InputArray img表示Mat类型数据。
第三个参数const std::vector& params表示为特定格式保存的参数编码,它有一个默认值std::vector< int >(),一般情况下不用写。
•对于JPEG格式的图片,这个参数表示从0-100的图片质量(CV_IMWRITE_JPEG_QUALITY),默认值是95.
•对于PNG格式的图片,这个参数表示压缩级别(CV_IMWRITE_PNG_COMPRESSION)从0-9.较高的值意味着更小的尺寸和更长的压缩时间而默认值是3.
•对于PPM,PGM或PBM格式的图片,这个参数表示一个二进制格式标志(CV_IMWRITE_PXM_BINARY),取值为0或1,而默认值为1.
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY); compression_params.push_back(); //图片质量
imwrite("test2.jpg", img, compression_params);
4、遇到的问题
opencv 一个namedWindow,imshow出现两个窗口问题?
链接器-输入-附加依赖项,opencv_worldXXX.lib和opencv_worldXXXd.lib,只需要配置一个就好了。
5、参考文献
1、《OpenCV3 编程入门》 , 电子工业出版社,毛星雨著
尊重原创技术文章,转载请注明。
OpenCV3入门1—环境搭建与实验的更多相关文章
- 【个人笔记】003-PHP基础-01-PHP快速入门-03-PHP环境搭建
003-PHP基础-01-PHP快速入门 03-PHP环境搭建 1.客户端(浏览器) IE FireFox CHROME Opera Safari 2.服务器 是运行网站的基本 是放置程序代码的地方 ...
- Android入门之环境搭建
欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1376935560.html 原创:An ...
- scala 入门Eclipse环境搭建
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld IDE选择并下载: scala for eclipse 下载: http://scala-ide.org/downloa ...
- 新手嘛,先学习下 Vue2.0 新手入门 — 从环境搭建到发布
Vue2.0 新手入门 — 从环境搭建到发布 转自:http://www.runoob.com/w3cnote/vue2-start-coding.html 具体文章详细就不搬了,步骤可过去看,我这就 ...
- scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...
- 总结Vue 第四天:vue-cli(Vue2.0 新手入门 — 从环境搭建到发布)
总结Vue 第四天:vue-cli(Vue2.0 新手入门 - 从环境搭建到发布) 一.Vue CLI----(Vue2.0 新手入门 - 从环境搭建到发布): ■ CLI是Command-Lin ...
- faster-rcnn(testing): ubuntu14.04+caffe+cuda7.5+cudnn5.1.3+opencv3.0+matlabR2014a环境搭建记录
python版本的faster-rcnn见我的另一篇博客: py-faster-rcnn(running the demo): ubuntu14.04+caffe+cuda7.5+cudnn5.1.3 ...
- JAVA WEB快速入门之环境搭建
前言 我是一直致力于:.NET技术栈.WEB前端.架构设计相关的开发与管理工作,但因国内大环境影响及公司技术方向发生转变(由.NET全部转为JAVA),需要熟练掌握JAVA WEB相关的知识,故我也得 ...
- python从零开始基础入门——开发环境搭建:Visual Studio Code
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:山海皆可平z PS:如有需要Python学习资料的小伙伴可以加点击下方 ...
随机推荐
- Redo与Undo的理解
本文概要本文的原意是一篇个人学习笔记,为了避免成为草草记录一下的流水账,尝试从给人介绍的角度开写.但在整理的过程中,越来越感觉力不从心,一是细节太多了,原以为足够了解的一个小知识点下可能隐藏了很多细节 ...
- 图解leetcode279 —— 完全平方数
每道题附带动态示意图,提供java.python两种语言答案,力求提供leetcode最优解. 描述: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 ...
- 大数据学习之路-hdfs
1.什么是hadoop hadoop中有3个核心组件: 分布式文件系统:HDFS —— 实现将文件分布式存储在很多的服务器上 分布式运算编程框架:MAPREDUCE —— 实现在很多机器上分布式并行运 ...
- 「USACO11NOV」牛的障碍Cow Steeplechase 解题报告
题面 横的,竖的线短段,求最多能取几条没有相交的线段? 思路 学过网络流的童鞋在哪里? 是时候重整网络流雄风了! 好吧,废话不多说 这是一道最小割的题目 怎么想呢? 要取最多,那反过来不就是不能取的要 ...
- AntDesign getFieldDecorator 获取自定义组件的值
AntDesign getFieldDecorator 获取自定义组件的值 1.自定义或第三方的表单控件,也可以与 Form 组件一起使用.只要该组件遵循以下的约定: (1)提供受控属性 value ...
- 一条SQL注入引出的惊天大案2:无限战争
前情回顾: 经过黑衣人和老周的合作,终于清除了入侵Linux帝国的网页病毒,并修复了漏洞.不曾想激怒了幕后的黑手,一场新的风雨即将来临. 详情参见:一条SQL注入引出的惊天大案 风云再起 小Q是L ...
- JUnit 5和Selenium基础(二)
使用Selenium内置的PageFactory实现页面对象模式 在这一部分中,将通过Selenium的内置PageFactory支持类来介绍Page Object模式的实现.PageFactory提 ...
- mysql中emoji表情存储
mysql中emoji表情存储 背景 在mysql 5.7.19,创建的数据库默认选择的编码是utf8 -- UTF-8 Unicode,因此字段默认的编码为utf-8,但在项目开发中存在一个需求:在 ...
- Redis 通配符批量删除key
问题: 线上有部分的redis key需要清理. 一. 由于Keys模糊匹配,请大家在实际运用的时候忽略掉.因为Keys会引发Redis锁,并且增加Redis的CPU占用,情况是很恶劣的, 官网说明如 ...
- 洛谷 UVA11021 Tribles
UVA11021 Tribles 题意翻译 题目大意 一开始有kk种生物,这种生物只能活1天,死的时候有p_ipi的概率产生ii只这种生物(也只能活一天),询问m天内所有生物都死的概率(包括m天前死 ...