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社区的教程和文档,其次是各种视频资源与博客文章。

        首先是环境配置教程(个人觉得很不错) : 

        VS2019环境下配置C++ 项目OpenCV4.1.0教程https://blog.csdn.net/m0_37360684/article/details/89716881https://blog.csdn.net/m0_37360684/article/details/89716881

        其次是Python环境下Opencv相关教程(有Python基础或学习意向推荐参考):

        Python下opencvhttps://blog.csdn.net/on2way/article/details/46789931https://blog.csdn.net/on2way/article/details/46789931

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-图片读取与显示的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV学习笔记1基础:读取显示保存图像

OpenCV学习笔记1基础:读取显示保存图像

OpenCV学习笔记1基础:读取显示保存图像

OpenCV学习笔记1基础:读取显示保存图像

C++下opencv学习笔记(图像的简单读取丶显示与存储)

python+openCV (入门级)车道线检测 学习笔记