Skip to content

Latest commit

 

History

History
57 lines (35 loc) · 2.47 KB

ReadMe.md

File metadata and controls

57 lines (35 loc) · 2.47 KB

OpenCV教程文档

此项目用于记录在Python语言下的OpenCV的学习过程,本教程部分内容将围绕 实际项目使用过程中的经验进行同步记录。以便于读者避免踏入相同的问题中。

相关基础环境依赖如下(基于Windows 10 x86平台):

  • python: 3.9.7
  • opencv-python: 4.5.5.64
  • numpy: 1.22.3
  • imutils: 0.5.4

需要注意OpenCV去读RGB模式的彩色图像将以BGR方式存储至ndarray中,需要特别注意。

图像处理基础

基本概念

OpenCV读取顺序

针对RGB模式的彩色图像,OpenCV将以BGR的顺序存储至ndarray中,用户可以通过showBGR方法查看具体效果。

numpy.array访问像素

多数情况下我们都是通过索引访问像素以及设置像素,但是其对象提供了效率更高的方法即item()和itemset()。建议在正式的项目中 使用上述对应的函数进行像素修改。

感兴趣区域(ROI)

在图像处理中,我们可能会怼图像的某一个特定区域感兴趣,该区域被称为感兴趣区域(ROI)。在设定感兴趣区域ROI后,就可以对该区域 进行整体操作,比如showROI函数对区域进行覆盖

通道操作

首先是通道拆分,我们可以通过两种方式将通道拆分为独立的B、G、R三个通道,首先是通过索引进行拆分,其次就是通过专用的函数进行 拆分,最后就是将三个通道的灰度值合并为彩色图像,相关示例代码见splitWithMerge函数

图像属性

图像处理中,经常需要获取图像的属性,例如图像的大小、类型等。下述为常用的三种属性。

shape: 返回行数、列数以及对应图像的通道数
size: 返回图像的像素数目
dtype: 返回图像的数据类型

图像运算

基本运算

图像加法

当前提供了三种图像相加的方式,其中各自的特殊计算规则如下,对应示例见本文件

  • +: 直接采用本身的加法进行相加,最终对于大于255的将将于256进行取余的操作。既(250 + 134)%256=128
  • cv2.add: 采用框架本身自带的加法进行相加,其特定就是在两者相加的值大于255后,该像素直接去255像素值
  • cv2.addWeighted: 采用加权进行求和,根据其中提供的参数最终的结果通过公式=src1xalpha+sc2xbeta gamma即可