OpenCV3 图像处理笔记

简介: OpenCV3 图像处理笔记

图像的载入:imread() 函数

函数原型:

Mat imread(const sting& filename, int flags=None)
复制代码

参数解释:

  • filename:图像的文件路径,sting 字符串类型
  • flags:载入标识,以何种方式读取图片,int 类型的 flags。常用取值解释如下:
  • flags = 0:始终将图像转成灰度图再返回
  • flags = 1:始终将图像转换成彩色图再返回,如果读取的是灰度图,则其返回的矩阵 shape 将变为 (height, width, 3)
  • flags = 2:如果载入的图像深度为 16 位或者 32 位,就返回对应深度的图像,否则,就转换为 8 位图像再返回。

**总结:**读取文件中的图片到 OpenCV 中,返回 Mat 或者 ndarray 类型的矩阵,以彩色模式载入图像时,解码后的图像会默认以 BGR 的通道顺序进行存储。

cv2.imread()函数:

python-opencv 库的 imread 函数的 flags 参数取值方式与 C++ 版有所区别。使用函数 cv2.imread() 读入图像,图像要么在此程序的工作路径,要么函数参数指定了完整路径,第二个参数是要告诉函数应该如何读取这幅图片,取值如下:

  • cv2.IMREAD_COLOR : 取值 1,读入一副彩色图像。图像的透明度会被忽略,这是默认参数。
  • cv2.IMREAD_GRAYSCALE : 取值 0,以灰度模式读入图像。
  • cv2.IMREAD_UNCHANGED : 取值 -1,读入一幅图像,并且包括图像的 alpha 通道。

Instead of these three flags, you can simply pass integers 1, 0 or -1 respectively.

import numpy as np
import cv2
# Load an color image in grayscale
img = cv2.imread('messi5.jpg',0)
复制代码

opencv-python 库的读取图像函数 cv2.imread() 官方定义如下图。



图像的显示:imshow()函数

函数原型:

void imshow(const string &winname, InputArray mat)
复制代码

参数解释:

  • winname:需要显示的窗口标识名称,string 字符串类型
  • mat:需要显示的图像矩阵,ndarray numpy 矩阵类型

总结:imshow 函数用于在指定的窗口显示图像,窗口会自动调整为图像大小。

minMaxLoc 函数

函数 cv :: minMaxLoc 查找最小和最大元素值及其位置,返回的位置坐标是先列号,后行号(列号,行号) 。在整个数组中搜索极值,或者如果mask不是空数组,则在指定的数组区域中搜索极值。(只适合单通道矩阵)。函数原型:

CV_EXPORTS_W void minMaxLoc(InputArray src, CV_OUT double* minVal,
                            CV_OUT double* maxVal = 0, CV_OUT Point* minLoc = 0,
                            CV_OUT Point* maxLoc = 0, InputArray mask = noArray());
复制代码

函数参数解释:

  • src:input single-channel array.
  • minVal:pointer to the returned minimum value; NULL is used if not required.
  • maxVal:pointer to the returned maximum value; NULL is used if not required.
  • minLoc:pointer to the returned minimum location (in 2D case); NULL is used if not required.
  • maxLoc:pointer to the returned maximum location (in 2D case); NULL is used if not required.

位深度的概念

  • 灰度图的位深度是 16,则其矩阵的元素类型为 uint16 ,彩色图其位深度一般是 24 ,红色占 8 个位、蓝色占 8 个位、绿色占 8 个位,其矩阵的元素类型为 uint8
  • 位分辨率( Bit Resolution )又称色彩深度、色深或位深度,在位图图像或视频视频缓冲区,指一个像素中,每个颜色分量(Red、Green、Blue、Alpha 通道)的比特数。
  • matplotlib.image.imsave 将灰度图的矩阵保存为图像格式时,其默认保存的图像通道数为 4RGBA,其中 RGB 三个通道对应的二维矩阵数值完全一样。


相关文章
|
3月前
|
算法 计算机视觉
基于qt的opencv实时图像处理框架FastCvLearn实战
本文介绍了一个基于Qt的OpenCV实时图像处理框架FastCvLearn,通过手撕代码的方式详细讲解了如何实现实时人脸马赛克等功能,并提供了结果展示和基础知识回顾。
137 7
基于qt的opencv实时图像处理框架FastCvLearn实战
|
2月前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
4744 3
|
2月前
|
计算机视觉
Opencv错误笔记(一):通过cv2保存图片采用中文命名出现乱码
在使用OpenCV的cv2模块保存带有中文命名的图片时,直接使用cv2.imwrite()会导致乱码问题,可以通过改用cv2.imencode()方法来解决。
172 0
Opencv错误笔记(一):通过cv2保存图片采用中文命名出现乱码
|
2月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
198 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
2月前
|
机器学习/深度学习 计算机视觉
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
本文介绍了如何使用OpenCV进行特定区域的目标检测,包括人脸检测实例,展示了两种实现方法和相应的代码。
80 1
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
|
2月前
|
Ubuntu Linux C语言
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
本文介绍了在Ubuntu 18.04系统上编译安装OpenCV 3.4.0及其扩展包opencv_contrib 3.4.0的详细步骤,包括下载源码、安装依赖、配置CMake和编译安装,以及常见问题的解决方法。
206 1
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
|
2月前
|
缓存 监控 计算机视觉
视频监控笔记(三):opencv结合ffmpeg获取rtsp摄像头相关信息
本文介绍了如何使用OpenCV结合FFmpeg获取RTSP摄像头信息,包括网络架构、视频监控系统组成、以及如何读取和显示网络摄像头视频流。
60 1
|
2月前
|
Serverless 计算机视觉
语义分割笔记(三):通过opencv对mask图片来画分割对象的外接椭圆
这篇文章介绍了如何使用OpenCV库通过mask图像绘制分割对象的外接椭圆。首先,需要加载mask图像,然后使用`cv2.findContours()`寻找轮廓,接着用`cv2.fitEllipse()`拟合外接椭圆,最后用`cv2.ellipse()`绘制椭圆。文章提供了详细的代码示例,展示了从读取图像到显示结果的完整过程。
65 0
语义分割笔记(三):通过opencv对mask图片来画分割对象的外接椭圆
|
2月前
|
机器学习/深度学习 算法 计算机视觉
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
90 2
|
2月前
|
JSON 数据格式 计算机视觉
Opencv实用笔记(一): 获取并绘制JSON标注文件目标区域(可单独保存目标小图)
本文介绍了如何使用OpenCV和Python根据JSON标注文件获取并绘制目标区域,同时可将裁剪的图像单独保存。通过示例代码,展示了如何读取图片路径、解析JSON标注、绘制标注框并保存裁剪图像的过程。此外,还提供了相关的博客链接,供读者进一步学习。
50 0