我希望我的图像只有 10 种特定颜色,在 color_list 中指定。因此,我循环遍历每个像素,如果该像素的颜色未包含在颜色列表中,则分配相邻区域的颜色。但由于图像是 2k x 2k 像素。这个循环大约需要 3 分钟。我确信我这样做的方式不是最佳的。我该如何优化我的做法?
atlas_img_marked, atlas_img_cleaned = clean_img_pixels(atlas_img, color_list)
def clean_img_pixels(atlas_img, color_list):
dd = 3
for ii in range(atlas_img.shape[0]-1):
for jj in range(atlas_img.shape[1]-1):
pixelcolor = (atlas_img[ii,jj,0],atlas_img[ii,jj,1],atlas_img[ii,jj,2])
if pixelcolor not in color_list:
pixel2color = (atlas_img[ii-dd,jj,0],atlas_img[ii-dd,jj,1],atlas_img[ii-dd,jj,2])
if (pixel2color == (0,0,0)) | (pixel2color not in color_list):
pixel2color = (atlas_img[ii+dd,jj,0],atlas_img[ii+dd,jj,1],atlas_img[ii+dd,jj,2])
if (pixel2color == (0,0,0)) | (pixel2color not in color_list):
pixel2color = (atlas_img[ii+5,jj,0],atlas_img[ii+5,jj,1],atlas_img[ii+5,jj,2])
atlas_img_cleaned[ii,jj] = pixel2color
return atlas_img_cleaned
Run Code Online (Sandbox Code Playgroud)
更准确地说,这是花费最长的部分:
out_colors = []
for ii in range(atlas_img.shape[0]-1):
for jj …Run Code Online (Sandbox Code Playgroud)