1、环境搭建

1.1 VS2017开发环境搭建

1)、下载软件包

https://opencv.org/

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 编程入门》 , 电子工业出版社,毛星雨著

尊重原创技术文章,转载请注明。

https://www.cnblogs.com/pingwen/p/12292630.html

OpenCV3入门1—环境搭建与实验的更多相关文章

  1. 【个人笔记】003-PHP基础-01-PHP快速入门-03-PHP环境搭建

    003-PHP基础-01-PHP快速入门 03-PHP环境搭建 1.客户端(浏览器) IE FireFox CHROME Opera Safari 2.服务器 是运行网站的基本 是放置程序代码的地方 ...

  2. Android入门之环境搭建

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1376935560.html 原创:An ...

  3. scala 入门Eclipse环境搭建

    scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld IDE选择并下载: scala for eclipse 下载: http://scala-ide.org/downloa ...

  4. 新手嘛,先学习下 Vue2.0 新手入门 — 从环境搭建到发布

    Vue2.0 新手入门 — 从环境搭建到发布 转自:http://www.runoob.com/w3cnote/vue2-start-coding.html 具体文章详细就不搬了,步骤可过去看,我这就 ...

  5. scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld

    scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...

  6. 总结Vue 第四天:vue-cli(Vue2.0 新手入门 — 从环境搭建到发布)

    总结Vue 第四天:vue-cli(Vue2.0 新手入门 - 从环境搭建到发布) 一.Vue CLI----(Vue2.0 新手入门 - 从环境搭建到发布): ■   CLI是Command-Lin ...

  7. 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 ...

  8. JAVA WEB快速入门之环境搭建

    前言 我是一直致力于:.NET技术栈.WEB前端.架构设计相关的开发与管理工作,但因国内大环境影响及公司技术方向发生转变(由.NET全部转为JAVA),需要熟练掌握JAVA WEB相关的知识,故我也得 ...

  9. python从零开始基础入门——开发环境搭建:Visual Studio Code

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:山海皆可平z PS:如有需要Python学习资料的小伙伴可以加点击下方 ...

随机推荐

  1. 7.13 Python基础语法

    Python基础语法 编码: 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码 python2.7中有两个函数 ...

  2. 2020年我国到底有多少程序员?现在学习java还来得及吗?

    中国有多少程序员?现在还值得学java吗? 跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早上贵子,从不掉发! JAVA起于1995年,经过20多年的发展,JAVA如今已经发展成为 ...

  3. 浅析vue封装自定义插件

    在使用vue的过程中,经常会用到Vue.use,但是大部分对它一知半解,不了解在调用的时候具体做了什么,因此,本文简要概述下在vue中,如何封装自定义插件. 在开始之前,先补充一句,其实利用vue封装 ...

  4. 不懂Neo4j?没关系,先学增删改查

    从上篇文章中我们了解到了什么是Neo4j.为什么要用Neo4j.什么场景使用 以及怎么安装,如果您还不想熟悉,点击此处,传送过去哦~ 既然Neo4j是一个图数据库,那么毫无疑问,增删改查是必不可少的, ...

  5. 2020面试还搞不懂MyBatis?快看看这27道面试题!(含答案和思维导图)

    前言 MyBatis是一个优秀的持久层ORM框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL 本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statem ...

  6. Django 多表、跨表、聚合、分组查询

    前期准备: 创建表 class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalFi ...

  7. 17.python自定义模块的导入方式

    1.直接用import导入 最后运行main.py可以看到命令行窗口输出了一句:你好,这样就完成了. 2.通过sys模块导入自定义模块的路径path 3.在环境变量中找到自定义模块 这个方法原理就是利 ...

  8. Vue.js项目在apache服务器部署后,刷新404的问题

    原因是vue-router 使用了路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面. const router = n ...

  9. Helm, 在Kubernetes中部署应用的利器

    一.背景 Kubernetes(k8s)是一个基于容器技术的分布式架构领先方案.它在Docker技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提高了大规模容器 ...

  10. Spring学习记录5——数据库事务基础知识

    何为数据库事务 “一荣共荣,一损共损”这句话很能体现事务的思想,很多复杂的事务要分步进行,但它们组成了一个整体,要么整体生效,要么整体失效.这种思想反映到数据库上,就是多条SQL语句,要么全部成功,要 ...