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. iptables限速

    ####限速 限制指定时间包的允许通过数量及并发数-m limit --limit n/{second/minute/hour}:指定时间内的请求速率"n"为速率,后面为时间分别为 ...

  2. 【题解】JXOI2018游戏(组合数)

    [题解]JXOI2018游戏(组合数) 题目大意 对于\([l,r]\)中的数,你有一种操作,就是删除一个数及其所有倍数.问你删除所有数的所有方案的步数之和. 由于这里是简化题意,有一个东西没有提到: ...

  3. 【题解】P1373 小a和uim之大逃离

    [题解]P1373 小a和uim之大逃离 考虑到可能会MLE,考虑状态压缩一下 由于只要得到他们的差就行了,所以直接少记录一维就好了 \(dp(i,j,r,1/0)\)表示在\(i,j\)点,当前ui ...

  4. $[TJOI2017]$ 可乐 矩阵优化$dp$

    \(Sol\) 设\(f_i\)为到第\(i\)秒的方案数,显然\(f_i=\)在第\(i\)秒前爆炸的方案数+在第\(i\)秒爆炸的方案数+在第\(i\)秒停下的方案数+在第\(i\)秒走向下一个城 ...

  5. ruby 输出彩色内容到控制台

    程序输出控制台时,为了区分输出信息的严重程度,可以使用颜色.符号等来做标识. ruby 也支持设置输出内容的颜色,比如运行以下代码: 以下内容是百度到的,因发现很多博客都是同样的写法,所以出处反而没法 ...

  6. 《图解机器学习-杉山将著》读书笔记---CH2

    CH2 学习模型 重点提炼 学习模型作用: 使特定函数与数据集相近似 学习模型类型: 1.线性模型 (1)最简单的线性模型,缺点:只能表现线性的输入输出函数,不能很好地解决实际问题 (2)基于参数的线 ...

  7. 【转】最简单的安装pip的方法

    网上有各种方法安装pip,针对不同的系统方法还不一样,最后发现还是下面这种方法最简单,直接了当干脆方便,适用于Windows和Linux. (1)下载pip 进入https://pypi.python ...

  8. Linux学习_菜鸟教程_4

    Linux远程登录 已经了解了登录流程,学会了用SecureCRT进行操作 Linux文件基本属性 Linux为保护系统安全,对不同的用户,开放不同的文件访问权限. 在linux中,我们可以使用ll或 ...

  9. Redis系列之----Redis的过期设置及淘汰策略

    Redis的过期时间机制和内存淘汰策略    Redis的数据是存储在内存中的,而服务器的内存大小是有限制的,除非宕机,否则这些数据会一直存在,对于一些不再使用的key,也应当进行删除,否则会浪费内存 ...

  10. css3让元素自适应高度

    知识点: viewport:可视窗口,也就是浏览器.vw Viewport宽度, 1vw 等于viewport宽度的1%vh Viewport高度, 1vh 等于viewport高的的1% calc( ...