获取图片像素BGR值并生成纯色图,一般可以分为以下几个步骤:
首先需要导入对应的库。我们需要opencv-python库来读取图片和获取像素值,同时还需要numpy库来生成纯色图。
import cv2
import numpy as np
接下来读取图片。这里我们使用opencv-python库中的imread()函数读取一个名为test.jpg的图片。
img = cv2.imread('test.jpg')
获取图片的像素值,可以使用opencv-python库中的像素访问方法img.item()进行操作。img.item(i, j, k)表示获取第i行、第j列、第k个通道(例如BGR中的B,G,R)的像素值。
b, g, r = img.item(100, 100, 0), img.item(100, 100, 1), img.item(100, 100, 2)
注意:OpenCV中的颜色通道排列顺序为B(Blue)G(Green)R(Red),即BGR顺序。
我们可以根据获取到的BGR值,生成纯色图。这里我们使用numpy库中的函数zeros()来生成一张纯色图,然后将每个像素设置成获取到的BGR值。
#生成一张纯色图
color_img = np.zeros((100, 100, 3), dtype=np.uint8)
#将每个像素设置为获取到的BGR值
color_img[:,:] = (b, g, r)
经过以上步骤,我们便可以得到一张由纯色像素组成的图片。
下面我们来看两个具体的示例,更好地理解获取图片像素BGR值并生成纯色图的完整攻略。
下面的代码读取了一张名为example.jpg的图片,获取了第100行、第100列的像素的BGR值,并将这个像素的颜色设置为一张100x100的纯色图。
import cv2
import numpy as np
#读取图片
img = cv2.imread('example.jpg')
#获取像素值
b, g, r = img.item(100, 100, 0), img.item(100, 100, 1), img.item(100, 100, 2)
#生成一张纯色图
color_img = np.zeros((100, 100, 3), dtype=np.uint8)
#将每个像素设置为获取到的BGR值
color_img[:,:] = (b, g, r)
cv2.imshow('Pure color image', color_img)
cv2.waitKey()
下面的代码生成了一张200x200的纯色图,并将颜色设置为了BGR值为(255,255,0)的黄色。
import cv2
import numpy as np
#生成一张纯色图
color_img = np.zeros((200, 200, 3), dtype=np.uint8)
#将每个像素设置为黄色(BGR值为(255,255,0))
color_img[:,:,0] = 255
color_img[:,:,1] = 255
color_img[:,:,2] = 0
cv2.imshow('Pure color image', color_img)
cv2.waitKey()
以上就是获取图片像素BGR值并生成纯色图的完整攻略。