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. 20191017-6 alpha week 2/2 Scrum立会报告+燃尽图 05

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9802 小组名称:“组长”组 组长:杨天宇 组员:魏新,罗杨美慧,王歆瑶,徐 ...

  2. surging 社区版本支持.net core 3.1

    简介 surging 经过两年多的研发,微服务引擎已经略有雏形,也承蒙各位的厚爱, GitHub上收获了将近2800星,fork 811,付费用户企业也有十几家,还有咨询培训, 在2020年,我们将依 ...

  3. Spring Data JPA使用findAllOrderBy时踩的坑

    Spring Data JPA使用findAllOrderBy时踩的坑 按照以往的编程经验,我的写法是这样的: List<ActivityEntity> findAllOrderByWis ...

  4. IDEA错误: 找不到或无法加载主类

    错误: 找不到或无法加载主类 idea本身缓存问题 解决:清理缓存重启IDEA file-->invalidate Cache/restart 之后再重新build.

  5. 基于Jenkins的持续交付全流程设计与实践

    1 从理论开始 什么是DevOps? 近年来,随着DevOps理念的逐渐深入人心,企业逐渐意识到从看似重复的手工劳动中实现自动化流程处理,对于提高企业劳动生产力已经非常重要,尤其是面向互联网的开发者, ...

  6. 2018铁人三项测评题 IOS99

    下面这一部分是我从网上复制过来的, 2.IOS 解题链接:http://ctf4.shiyanbar.com/web/IOS/index.php 这题页面中提示系统升级到了IOS99,我们可以想到修改 ...

  7. JavaScript系列之回调函数callback

    JavaScript系列之回调函数callback JavaScript回调函数的使用是很常见的,引用官方回调函数的定义: A callback is a function that is passe ...

  8. 【转】21个免费的UI界面设计工具、资源及网站

    本文将介绍21个免费的UI界面设计工具.资源及网站,如果你在做用户体验设计.界面设计.产品设计.JS前段开发.手机产品设计以及iPad和平板电脑产品设计,不妨来看看. AD: 2013云计算架构师峰会 ...

  9. 通过例子进阶学习C++(五)计算2的1次方至2的64次方之和

    本文是通过例子学习C++的第五篇,通过这个例子可以快速入门c++相关的语法. 1.上篇回顾 在上一篇中,我们通过字符数组计算264次方: 通过例子进阶学习C++(四)计算2的64次方 带着这个问题:为 ...

  10. js 极简获取表单 元素 !

    let s =[]; $.each($('#formSearch input'),(m,n)=>{s.push(n)}); //示例获取表单所有 input 下滑线分割的 name 集合.set ...