opencv学习笔记01-图片读取与显示
Posted (⊃・ᴥ・)つ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv学习笔记01-图片读取与显示相关的知识,希望对你有一定的参考价值。
opencv 简易笔记
1.创建和显示窗口
import cv2
#窗口命名
cv2.namedWindow("111",cv2.WINDOW_NORMAL)
#读取图片
img = cv2.imread("mdPNG/lesson1_3.png",0)
#显示窗口
cv2.imshow("111",img)
#设置窗口大小->图片适应窗口
cv2.resizeWindow("111",1920,1080)
#保存
cv2.imwrite("mdPNG/lesson1_3_1.png",img)
#设置等待,0为无限等待
key = cv2.waitKey(0)
#销毁
if(key & 0xFF== ord("q")):
cv2.destroyAllWindows()
1.1 namewindow(winname,flags)
namewindow()几乎可以说是学习 opencv 过程中最先接触到的函数,但很多人却并不了解其参数含义,其中包含两个参数。
(1) winname: 即窗口名字
(2) flags: 可以看到指定为 int,根据查看源码可以发现 cv2.WINDOW_~中包含多种类型:
更多细节可以参照函数中的介绍。实际上感觉还是 WINDOW_NORMAL 比较符合日常需求
1.2 imread(filename,flags)
imread()函数可以读取图片,其中包含两个参数。
(1) filename: 图片的位置。
(2) flags: 此参数能够设置图片读取的颜色,-1 为原始图片,0 为灰度图,具体参照 cv.IM~查看。
1.3 imshow(winname,mat)
简单,略
(1) winname: 之前创建的窗口名字
(2) mat: 之前通过 imread()读取的图片,imread()返回一个 mat 类型。
1.4 resizeWindow(winname,width,height)
该函数能够重新设置图片的宽高。
(1) winname: 之前创建的窗口名字
(2) width: 图片的宽
(3) height: 图片的高
1.5 waitKey(delay)
该函数能够设置等待延时,到时间后窗口关闭,返回值为按键,该函数通常配合按键检测使用,例如
#设置等待,0为无限等待
key = cv2.waitKey(0)
#销毁
if(key & 0xFF== ord("q")):
cv2.destroyAllWindows()
(1) delay: 毫秒时间
1.5 imwrite(filename,img,params[List:int]) -> bool
保存图片
(1) filename: 文件名
(2) img: mat
(3) params: 一个数字 list,\'params\' must be key-value pairs,正常默认就好,可以设置保存的一些参数:
C++下opencv学习笔记(图像的简单读取丶显示与存储)
C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)
- 前言
学习C++ OpenCV,第一需要具备向对象语言的基础,第二要对图像处理机器学习有基础了解,容易入门。觉得自己基础已经有了可以忽略前面两条,直奔OpenCV SDK,学习OpenCV最好的资料是OpenCV社区的教程和文档,其次是各种视频资源与博客文章。
首先是环境配置教程(个人觉得很不错) :
其次是Python环境下Opencv相关教程(有Python基础或学习意向推荐参考):
OpenCV概述
OpenCV是一个开源发行的跨平台计算机视觉和机器学习软件库,提供了图像处理和计算机视觉方面的很多通用算法。而现在我们将要学习的是C++环境下Opencv库的使用。
一 . 开始第一步-展示图片
1.main.cpp 源码
#include<iostream>
#include<opencv2/opencv.hpp>
//主函数
int main(void)
//定义Mat 类 对象src
cv::Mat src;
//读取图像
src = cv::imread("DrawPractice.jpg");
//展示图片
cv::imshow("Draw", src);
//暂停 -- 等待下一步操作
cv::waitKey(0);
return 0;
2.当前路径下存有图片 DrawPractice.jpg
3.让我们逐步分析源码语句
第一步在原有C++程序上包含opencv库头文件
(标准输入输出库)常用
#include<iostream>
(Opencv库头文件)
#include<opencv2/opencv.hpp>
抉择-----是否全局引入std命名空间和cv命名空间
using namespace std;
using namespace cv;
这两句是引入工作空间,std是c++标准库的工作空间名,cv是opencv的工作空间名。
(工作空间的目的是避免 如果两个库有相同的函数名,在调用函数时发生冲突,
上文这两个库里没有重复的函数名,所以直接引入工作空间不会有影响。)
引入命名空间后 大部分代码块将不再使用cv:: 来进行标识 如(Mat src;) 而不是 (cv::Mat src;)
个人初学时 常使用cv::标识形式 以提醒自己 所调用的函数或类 在 Opencv库中
定义一个Mat 类对象 src
cv::Mat src;
在当前路径下读取图像
src = cv::imread("DrawPractice.jpg");
cv::imread() ---- 函数解析
//读取图像
cv::imread("图像路径",读取模式)
此处图像路径可以为 当前路径 即 DrawPractice.jpg
也可以为 绝对路径 如 F:\\\\code\\\\编程练习草稿\\\\opencv2\\\\DrawPractice.jpg
(备注 :: C++语法中 \\ 为转义字符 所以 使用\\\\ 双斜杠代替 \\ 避免路径解析错误)
//读取模式
未传入参数视为 默认彩色
0:读入的为灰度图像(即使图像为彩色的)
1:读入的图像为彩色的(默认);
//实例
//读入灰度图像
src = cv::imread("DrawPractice.jpg" , 0);
//默认读入彩色图像
src = cv::imread("DrawPractice.jpg");
展示上文读取的图像
cv::imshow("Draw", src);
参数 : (展示窗口名 , 上文定义的Mat类对象src)
暂停 -- 等待下一步操作
cv::waitKey(0);
显示图片后开始等待下一步操作。
如果不加这条命令的话,自己屏幕上会有一个黑框一闪而过,
图片也不会显示出来,程序显示图片后直接关闭了程序。
二--跑起来看看成果
那么第一期就结束啦
以上是关于opencv学习笔记01-图片读取与显示的主要内容,如果未能解决你的问题,请参考以下文章