首页 > 其他分享 >颜色找茬-0-255随机底色

颜色找茬-0-255随机底色

时间:2024-06-07 17:31:32浏览次数:24  
标签:canvas color random 底色 cell 找茬 255 fill

 

a375d26c4f28401c963a6b43287bd7ed.png

 

代码展示

'''
颜色找茬:找出不同颜色的色块
AI对话大师,阿夏
2025年6月7日
'''
from PIL import Image, ImageDraw
import random

path = r'C:\Users\jg2yXRZ\OneDrive\桌面\辨认色彩图'
for xx in range(10000):
    

    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    fill_color = (r, g, b)
   
    print(fill_color)
    a=random.randint(0,100)
    r1=r+a
    g1=g+a
    b1=b+a
    fill_color2=(r1, g1, b1)
    print(fill_color2)
    

    # 定义画布尺寸和边距
    canvas_width = 800
    canvas_height = 800
    margin = 50
    spacing = 20

    g = 5

    # 计算单元格的大小和间距
    cell_size = int((canvas_width - 2 * margin - (g - 1) * spacing) / g)

    # 创建画布
    canvas = Image.new('RGB', (canvas_width, canvas_height), 'white')
    draw = ImageDraw.Draw(canvas)

    # 随机选择一个单元格填充随机颜色
    random_row = random.randint(0, g - 1)
    random_col = random.randint(0, g - 1)

    

    # 绘制单元格
    for i in range(g):
        for j in range(g):
            
            x = margin + (cell_size + spacing) * j
            y = margin + (cell_size + spacing) * i
            if i == random_row and j == random_col:
                fill_color = (r1, g1, b1)
            else:
                fill_color = (r, g, b)
            draw.rectangle((x, y, x + cell_size, y + cell_size), fill=fill_color)

    # 保存图片
    canvas.save(path + fr'\{xx:05d}.png')

89c40826f3f1441390d9a5ab4f6df9b3.png

手动删除一些不是相近色的图案,随机生成底色

3a8ae9453e4c4e46a569a3585937761d.png

保留色相相近的图案a49cfb74f54a4f9dbfc3412ae32568cd.png

分类成两类

67288f0f4f334a7cb6dad747112e8904.png

低难度的色块颜色对比强烈

4752df73d97f4d1e8a2f7960cdc8e1a8.png高难度的色块对比不明显

04d44f57be72447799fbc4e92bf9c660.png

但是我感觉我自己都看不清不同的色块在哪里?所以我需要做一个有答案的版本。

 

 

from PIL import Image, ImageDraw
import random
import os

path = r'C:\Users\jg2yXRZ\OneDrive\桌面\辨认色彩图'
t = ['01题目卡', '02答案卡']
tm = []
for tt in t:
    os.makedirs(path + fr'\{tt}', exist_ok=True)
    tm.append(path + fr'\{tt}')
print(tm)

for xx in range(500):
    # 不要(0,0,0)黑色,不要255,255,255白色
    r = random.randint(1, 255)
    g = random.randint(1, 255)
    b = random.randint(1, 255)
    fill_color = (r, g, b)
    print(fill_color)
    a = random.randint(0, 255)
    r1 = r + a
    g1 = g + a
    b1 = b + a
    fill_color2 = (r1, g1, b1)
    print(fill_color2)

    # 定义画布尺寸和边距
    canvas_width = 800
    canvas_height = 800
    margin = 50
    spacing = 20
    g = 5

    # 计算单元格的大小和间距
    cell_size = int((canvas_width - 2 * margin - (g - 1) * spacing) / g)

    # 创建画布
    canvas1 = Image.new('RGB', (canvas_width, canvas_height), 'white')
    draw1 = ImageDraw.Draw(canvas1)

    canvas2 = Image.new('RGB', (canvas_width, canvas_height), 'white')
    draw2 = ImageDraw.Draw(canvas2)

    # 随机选择一个单元格填充随机颜色
    random_row = random.randint(0, g - 1)
    random_col = random.randint(0, g - 1)

    # 绘制单元格
    for i in range(g):
        for j in range(g):
            x = margin + (cell_size + spacing) * j
            y = margin + (cell_size + spacing) * i
            if i == random_row and j == random_col:
                fill_color = (r1, g1, b1)
                outline_color = 'black'  # 添加黑色边框
            else:
                fill_color = (r, g, b)
                outline_color = None  # 不添加边框
            draw1.rectangle((x, y, x + cell_size, y + cell_size), fill=fill_color) 
            draw2.rectangle((x, y, x + cell_size, y + cell_size), fill=fill_color, outline=outline_color, width=20)
          
    # 保存图片
    canvas1.save(tm[0] + fr'\{xx:05d}-01图卡.png')
    canvas2.save(tm[0] + fr'\{xx:05d}-02答案.png')

 

a7962d3164db4788ac48df6c6fd3971a.png4c5a5cfafcf7412db35d903a2d63e1f1.png

黑色底色的就看不见了

205b33107784489580eaa38e0b8d0d74.png

改成白色边框

5695ca3b19724ec48545df99309374aa.png

from PIL import Image, ImageDraw
import random
import os

path = r'C:\Users\jg2yXRZ\OneDrive\桌面\辨认色彩图'
t = ['01题目卡', '02答案卡']
tm = []
for tt in t:
    os.makedirs(path + fr'\{tt}', exist_ok=True)
    tm.append(path + fr'\{tt}')
print(tm)

for xx in range(500):
    # 不要(0,0,0)黑色,不要255,255,255白色
    r = random.randint(1, 255)
    g = random.randint(1, 255)
    b = random.randint(1, 255)
    fill_color = (r, g, b)
    print(fill_color)
    a = random.randint(0, 255)
    r1 = r + a
    g1 = g + a
    b1 = b + a
    fill_color2 = (r1, g1, b1)
    print(fill_color2)

    # 定义画布尺寸和边距
    canvas_width = 800
    canvas_height = 800
    margin = 50
    spacing = 20
    g = 5

    # 计算单元格的大小和间距
    cell_size = int((canvas_width - 2 * margin - (g - 1) * spacing) / g)

    # 创建画布
    canvas1 = Image.new('RGB', (canvas_width, canvas_height), 'white')
    draw1 = ImageDraw.Draw(canvas1)

    canvas2 = Image.new('RGB', (canvas_width, canvas_height), 'white')
    draw2 = ImageDraw.Draw(canvas2)

    # 随机选择一个单元格填充随机颜色
    random_row = random.randint(0, g - 1)
    random_col = random.randint(0, g - 1)

    # 绘制单元格
    for i in range(g):
        for j in range(g):
            x = margin + (cell_size + spacing) * j
            y = margin + (cell_size + spacing) * i
            if i == random_row and j == random_col:
                fill_color = (r1, g1, b1)
                outline_color = 'white'  # 添加黑色边框
            else:
                fill_color = (r, g, b)
                outline_color = None  # 不添加边框
            draw1.rectangle((x, y, x + cell_size, y + cell_size), fill=fill_color) 
            draw2.rectangle((x, y, x + cell_size, y + cell_size), fill=fill_color, outline=outline_color, width=10)
          
    # 保存图片
    canvas1.save(tm[0] + fr'\{xx:05d}_01图卡.png')
    canvas2.save(tm[0] + fr'\{xx:05d}_02答案.png')

632a3ceb68c6412399e7293c4ce8403c.png

 

同样手动不是相近色的

 

 

为了生成足够多的,我先生成10000张

 

228f641057a04b559e8b61b2415c062e.png

生成了20分钟,一共2万张。

bbcdb6afc75d4464aa9ebdd443e94724.png

 

57bc09020aca4c5fae375a96e3038958.png1-255随机颜色只有红、紫色、蓝、黑,8079b3274e0f4d93acba399840b74412.png

 

标签:canvas,color,random,底色,cell,找茬,255,fill
From: https://blog.csdn.net/reasonsummer/article/details/139522756

相关文章

  • 2559. 统计范围内的元音字符串数(前缀和) o(n)时间复杂度
    给你一个下标从 0 开始的字符串数组 words 以及一个二维整数数组 queries 。每个查询 queries[i]=[li,ri] 会要求我们统计在 words 中下标在 li 到 ri 范围内(包含 这两个值)并且以元音开头和结尾的字符串的数目。返回一个整数数组,其中数组的第 i 个元素对......
  • 力扣刷题--2553. 分割数组中数字的数位【简单】
    题目描述给你一个正整数数组nums,请你返回一个数组answer,你需要将nums中每个整数进行数位分割后,按照nums中出现的相同顺序放入答案数组中。对一个整数进行数位分割,指的是将整数各个数位按原本出现的顺序排列成数组。比方说,整数10921,分割它的各个数位得到[1,0......
  • 255 IAlwaysRunResultFilter
    示例新建PersonsAlwaysRunResultFilter.csusingMicrosoft.AspNetCore.Mvc.Filters;namespaceCRUDExample.Filters.ResultFilters{  publicclassPersonsAlwaysRunResultFilter:IAsyncAlwaysRunResultFilter  {    publicasyncTaskOnResult......
  • 推荐一款免费好用的证件照背景/底色替换工具
    在简历、工作入职、公务员考试、职业资格考试、签证等情景时,我们可能会遇到需要递交不同背景色的证件照给相关机构,以符合他们对证件照的要求。这个时候我们该怎么做呢?是每次碰到不同情景的时候就去照相馆拍一张证件照然后递交相关机构吗?如果这样去做的话,是不是想想就觉得很麻烦......
  • C# 证件照替换底色与设置背景图---PaddleSegSharp
    PaddleSegSharp 是一个基于百度飞桨PaddleSeg项目的人像分割模块而开发的.NET的工具类库。PaddleSegSharp 中PaddleSeg.dll文件是基于开源项目最新发布版本PaddleSeg PaddleSeg的版本修改而成的C++动态库,基于opencv的x64编译而成的。PaddleSeg是基于飞桨PaddlePaddle的端到端......
  • 【微机原理及接口技术】可编程并行接口芯片8255A
    【微机原理及接口技术】可编程并行接口芯片8255A文章目录【微机原理及接口技术】可编程并行接口芯片8255A前言一、8255A的内部结构和引脚1.与外设接口(数据端口)2.与处理器接口二、8255A的工作方式三、8255A的编程1.写入方式控制字:控制字格式2.读写数据端口3.读写端......
  • QT: Expression:c >= -1 && c <= 255
    报错内容分析错误注意看报错位置位于isctype.cpp文件的Line:36我们打开isctype.cpp,其36行内容如下extern"C"int__cdecl_chvalidator(intconstc,intconstmask){_ASSERTE(c>=-1&&c<=255);return_chvalidator_l(nullptr,c,mask);}主要是第3行:_......
  • VSCode非活跃预处理程序块Inactive颜色设置(底色字色透明度)
    VSCode非活跃预处理程序块——#if0非活跃预处理程序块#else活跃预处理程序块#endif#if1活跃预处理程序块#else非活跃预处理程序块#endif 效果 ......
  • QOJ2559
    区间维护类的小(?)DS题。感觉我不怎么会。题意目的明确,就是要动态维护每个区间能覆盖的范围。看一看,感觉题目里的条件很神秘,不知道怎么用。不过可以根据特殊性质推出一个性质:存在包含关系一定先选内部。一开始的思路是用区间互相影响计算,但这个非常复杂,且非常假。在写暴力的时候......
  • Opencv实现边界填充、两个图片像素直接相加后超过255的处理方式(阈值处理方式),一个窗口
     opencv两个图片直接相加,会直接相加,如果超过255,会取模。 print((img_cat+img_cat2)[:5,:,0])#0-255若相加越界后294用294%256获得余数38可以使用这种方式查看。展示的是前5行,所有列的第一个通道的值。还有一种方法是cv2.add(),这个方法会直接将超过255的值设置为25......