opencv-04 像素处理

opencv-04 像素处理

在 OpenCV 中,最小的数据类型是无符号的 8 位数。因此,在 OpenCV 中,实际上并没有二值图像这种数据类型,二值图像经常是通过处理得到的,然后使用0表示黑色,使用 255 表示白色。

可以将二值图像理解为特殊的灰度图像,这里仅以灰度图像为例讨论像素的读取和修改。

可以将图像理解为一个矩阵,在面向 Python 的 OpenCV(OpenCV for Python)中,图像就是 Numpy 库中的数组。一个 OpenCV 灰度图像是一个二维数组,可以使用表达式访问其中的像素值。
例如,可以使用 image[0,0]访问图像 image 第 0 行第 0 列位置上的像素点。
第 0 行第 0 列位于图像的左上角,其中第 1 个索引表示第 0 行,第 2 个索引表示第0 列。

为了方便理解,我们首先使用 Numpy 库来生成一个 8×8 大小的数组,用来模拟一个黑色图像,并对其进行简单处理。

使用 Numpy 库生成一个元素值都是 0 的二维数组,用来模拟一幅黑色图像,并对其进行访问、修改。
分析:使用 Numpy 库中的函数 zeros()可以生成一个元素值都是 0 的数组,并可以直接使
用数组的索引对其进行访问、修改。
根据题目要求及分析,编写代码如下:

import numpy as np

img = np.zeros((8,8), np.uint8)

print(img)

打印结果:

[[0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0]]

使用函数 zeros()生成了一个 8×8 大小的二维数组,其中所有的值都是 0,数值类型是
np.uint8。根据该数组的属性,可以将其看成一个黑色的图像,我们可以用img.show 函数来显示一下效果

import cv2
import numpy as np


img = np.zeros((8,8), np.uint8)

print(img)

cv2.imshow('image', img)

cv2.waitKey(0)
cv2.destroyAllWindows()

上面的代码因为矩阵相对来说有点小,我们把8,8 改成100,100 来看下效果
opencv-04 像素处理_第1张图片
接下来我们可以对图像中的像素值 进行修改
,增加
#修改像素值,将第三行第三列的值改为255
img[2,2] = 255
print(‘修改后的像素值’,img)这两行代码

import cv2
import numpy as np


img = np.zeros((8,8), np.uint8)

print(img)

#修改像素值,将第三行第三列的值改为255
img[2,2] = 255
print('修改后的像素值',img)

cv2.imshow('image', img)

cv2.waitKey(0)
cv2.destroyAllWindows()

打印的结果

修改后的像素值 [[  0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0]
 [  0   0 255   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0]]

这个时候的图像就会出现一个白点

你可能感兴趣的:(opencv,opencv,人工智能,计算机视觉)