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学习资料的小伙伴可以加点击下方 ...
随机推荐
- $bzoj2067\ szn$ 二分+贪心
正解:二分+贪心 解题报告: 传送门$QwQ$ 题目大意就说有一棵树,然后要用若干条线覆盖所有边且不能重叠.问最少要用几条线,在用线最少的前提下最长的线最短是多长. 昂首先最少用多少条线这个还是蛮$e ...
- MySQL 核心三剑客 —— 索引、锁、事务
一.常见存储引擎 1.1 InnoDB InnoDB 是 MySQL 5.5 之后默认的存储引擎,它具有高可靠.高性能的特点,主要具备以下优势: DML 操作完全遵循 ACID 模型,支持事务,支持崩 ...
- Persistence.beans
SF_USERS user = new SF_USERS(); user.setCTIME("20170103"); String ids = "fish,water&q ...
- 8款极具表现力的jQuery/CSS3网页菜单
上一篇我向大家分享了7款效果震憾的HTML5应用组件,今天主要来分享一下CSS3网页菜单,因为在一个网站中,菜单起着举足轻重的作用,所以作为WEB开发人员,我们有必要将网站的菜单设计得尽量完美,下面向 ...
- Sql Server学习笔记
1.指定路径创建数据库 create database student on--创建库的时候必须写 ( name=student, filename='E:\database\student.mdf' ...
- linux下大文件查询具体段内容
有时候我们的文件比较大,比如几十G,甚至上百G.这么大的文件怎么查询呢? 有很多种方法都可以实现,这儿选择用 cat 这个命令实现. 先来看看 cat 的介绍 cat 有个对应的命令 tac,cat反 ...
- hdu4417 主席树求区间小于等于K
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4417 Problem Description Mario is world-famous plum ...
- ERROR 1235 (42000): This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'问题的解决
.与limit相关的sql语句作为临时表 select * from 临时表 limit ) as B 缺点:只能查临时表的数据 .可以查原表的数据 select * from test where ...
- MySql查看修改l时区
# 查看时区 show variables like '%time_zone%'; # 设置全局 set global time_zone='+8:00'; # 设置当前会话 set time_zo ...
- 2.Markdown学习
Makrdown学习: 1.推荐编辑器: Typora [点击跳转](https://www.typora.io/) 2.标题: #空格一级标题名 ##空格二级标题名 3.字体: 粗体:** ** H ...