此项目用于记录在Python语言下的OpenCV的学习过程,本教程部分内容将围绕 实际项目使用过程中的经验进行同步记录。以便于读者避免踏入相同的问题中。
相关基础环境依赖如下(基于Windows 10 x86平台):
python
: 3.9.7opencv-python
: 4.5.5.64numpy
: 1.22.3imutils
: 0.5.4
需要注意OpenCV去读RGB模式的彩色图像将以BGR方式存储至ndarray中,需要特别注意。
针对RGB模式的彩色图像,OpenCV将以BGR的顺序存储至ndarray中,用户可以通过showBGR方法查看具体效果。
多数情况下我们都是通过索引访问像素以及设置像素,但是其对象提供了效率更高的方法即item()和itemset()。建议在正式的项目中 使用上述对应的函数进行像素修改。
在图像处理中,我们可能会怼图像的某一个特定区域感兴趣,该区域被称为感兴趣区域(ROI)。在设定感兴趣区域ROI后,就可以对该区域 进行整体操作,比如showROI函数对区域进行覆盖。
首先是通道拆分,我们可以通过两种方式将通道拆分为独立的B、G、R三个通道,首先是通过索引进行拆分,其次就是通过专用的函数进行 拆分,最后就是将三个通道的灰度值合并为彩色图像,相关示例代码见splitWithMerge函数
图像处理中,经常需要获取图像的属性,例如图像的大小、类型等。下述为常用的三种属性。
shape
: 返回行数、列数以及对应图像的通道数
size
: 返回图像的像素数目
dtype
: 返回图像的数据类型
当前提供了三种图像相加的方式,其中各自的特殊计算规则如下,对应示例见本文件。
+
: 直接采用本身的加法进行相加,最终对于大于255的将将于256进行取余的操作。既(250 + 134)%256=128cv2.add
: 采用框架本身自带的加法进行相加,其特定就是在两者相加的值大于255后,该像素直接去255像素值cv2.addWeighted
: 采用加权进行求和,根据其中提供的参数最终的结果通过公式=src1xalpha+sc2xbeta gamma即可