我如何使用 openCV 和 Python 在每个矩形块中填充颜色?

How do i fill color in each rectangle block using openCV and Python?

我想在下面的每个单元格中填充颜色 image.i 已经使用循环来用像素填充这些框 pixel.when 使用填充边框也得到颜色这是这里的主要问题。

这些是单元格的尺寸。

宽度:20px;

高度:20px;

边框宽度:20px;

当相邻单元格相连时,它们的边框宽度将为 4 像素。

Original

Colored

所以我不想只对单元格的边框区域(白色部分)着色。

一幅图像具有三个通道(R、G、B)。

图像中的所有白色块都是白色的,因为它们在所有三个通道中都有 255 像素。

为了将白色块转换为红色,首先我们使用 cv2 读取图像矩阵,然后读取通道 1 ("G") 和通道 2 ("B") 中所有值为 255 的像素将更改为 0。因此,现在我们在通道 0 ("R") 中只有像素值 255。这样所有的白色图像块都会变成红色块。

附上两个文件:1.old_square.jpg2.new_square.jpg

old_square.jpg 有白色方块被着色成红色,如 new_square.jpg.

检查以下脚本:

# libraries
import cv2
import numpy as np
import Image

# name of jpg image file
jpg_image_name = "old_square.jpg"

# reading jpg image and getting its matrix
jpg_image = cv2.imread(jpg_image_name)
jpg_image_mat = np.array(jpg_image)

# getting image features
pixel_value_to_replace = 255
rows, cols, channels = jpg_image_mat.shape

"""##########################################
An image have three channels (R, G, B). So,
putting 0 in other two channels to make image
red at white squares.
##########################################"""

# changing 255 to 0 in first channel
for i in range(rows):
    for j in range(cols):
        if(jpg_image_mat[i, j, 1] == pixel_value_to_replace):
            jpg_image_mat[i, j, 1] = 0

# changing 255 to 0 in second channel
for i in range(rows):
    for j in range(cols):
        if(jpg_image_mat[i, j, 2] == pixel_value_to_replace):
            jpg_image_mat[i, j, 2] = 0

# saving new modified matrix in image format
new_image = Image.fromarray(jpg_image_mat)
new_image.save("new_square.jpg")

old_square.jpg

new_square.jpg