OpenCV-Python:图像的基本操作

图像的基本操作:

  • 访问像素值并修改
  • 获得图像属性
  • 截取图像区域(ROI)
  • 分离、合并图像channel

上面的这些操作大部分可以用NumPy实现,一小部分用OpenCV。适当的使用NumPy可以提高程序的执行效率。

访问修改像素值

首先加载一个图片:

你可以使用像素的坐标访问像素值,对于BGR图像,返回的数组分别对应蓝、绿、红颜色值。

Screen Shot 2015-12-27 at 16.52.51

注意:NumPy适合做数组运算,在单独操作像素时不是很快。

如果单独访问像素的一个颜色分量,最好使用如下方法:

Screen Shot 2015-12-27 at 17.02.47

获得图像属性

图像属性包括行的个数、列的个数、和channel数、图片的数据类型、像素的总个数等。

使用img.shape查询行、列、channel数:

如果图像是灰度模式,只会返回2个元素的元组,包涵行数和列数。

像素数:

数据类型:

img.dtype在debug时很有用,因为有很多错误都是由数据类型错误引起的。

图像ROI

有时候你只对图片的部分区域感兴趣。例如,在做眼睛检测时,首先要对图像进行面部识别,然后在面部区域内进行眼睛识别。因为在更小的区域内识别眼睛,效率更高(眼睛指定长在脸上D:)。

Screen Shot 2015-12-27 at 17.47.42

分离合并图像channel

每个B,G,R channels可以单独分离出来,分离的B、G、R还可以进行组合还原。

Screen Shot 2015-12-27 at 17.59.38

分离出指定channel:

把某一channel设置为指定值:

cv2.copyMakeBorder()函数

cv2.copyMakeBorder()创建多个图片边界:

Screen Shot 2015-12-27 at 18.20.21

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注