原文: https://pythonspot.com/image-data-and-operations/

OpenCV(cv2)可用于从图像中提取数据并对其进行操作。 我们在下面演示一些示例:

图像属性

我们可以使用以下代码提取宽度,高度和颜色深度:

  1. import cv2
  2. import numpy as np
  3. # read image into matrix.
  4. m = cv2.imread("python.png")
  5. # get image properties.
  6. h,w,bpp = np.shape(m)
  7. # print image properties.
  8. print "width: " + str(w)
  9. print "height: " + str(h)
  10. print "bpp: " + str(bpp)

访问像素数据

我们可以直接使用矩阵访问图像的像素数据,例如:

  1. import cv2
  2. import numpy as np
  3. # read image into matrix.
  4. m = cv2.imread("python.png")
  5. # get image properties.
  6. h,w,bpp = np.shape(m)
  7. # print pixel value
  8. y = 1
  9. x = 1
  10. print m[y][x]

要遍历图像中的所有像素,可以使用:

  1. import cv2
  2. import numpy as np
  3. # read image into matrix.
  4. m = cv2.imread("python.png")
  5. # get image properties.
  6. h,w,bpp = np.shape(m)
  7. # iterate over the entire image.
  8. for py in range(0,h):
  9. for px in range(0,w):
  10. print m[py][px]

图像处理

您可以直接修改像素和像素通道(r, g, b)。 在下面的示例中,我们删除了一个颜色通道:

  1. import cv2
  2. import numpy as np
  3. # read image into matrix.
  4. m = cv2.imread("python.png")
  5. # get image properties.
  6. h,w,bpp = np.shape(m)
  7. # iterate over the entire image.
  8. for py in range(0,h):
  9. for px in range(0,w):
  10. m[py][px][0] = 0
  11. # display image
  12. cv2.imshow('matrix', m)
  13. cv2.waitKey(0)

要更改整个图像,您必须更改所有通道:m[py][px][0]m[py][px][1]m[py][px][2]

保存图像

您可以使用以下方法将修改后的图像保存到磁盘:

  1. cv2.imwrite('filename.png',m)

下载计算机视觉示例和课程