我正在try 为特定用途制作一个快速的OCR,我知道我应该为普通的OCR编写一个预处理器,这会更快,但我首先想到了这个 idea ,我想我应该试试它,哈哈.这个程序会在屏幕的某个区域拍摄一张照片,并识别其中的数字,到目前为止,它只有0和1,但我一直在努力,遇到了一些问题.这是我的密码

while True:
    if keyboard.is_pressed('`'):
        Firstlist =  list(pyautogui.locateAllOnScreen(image[0], confidence = 0.95,region=( 1570 , 990 , 230 , 70 )))
        print(len(Firstlist))
        Firstlist1 = list(pyautogui.locateAllOnScreen(image1, confidence = 0.95,region=( 1570 , 990 , 230 , 70 ))) + Firstlist
        print(len(Firstlist1))
        print(Firstlist) 
        if len(Firstlist) > 0:
            print(Firstlist[0][0])
            #compare all first instance of that number and eliminate all duplicated with in a different of 5 x pixel
        break

这会在屏幕上识别出一组预先确定的数字,比如this,现在,它会给我一组屏幕上数字0的坐标,这是result,请忽略其他部分,这只是我在玩.问题是,如果不正确设置置信度,pyautogui.locateAllOnScreen有时会在约0-5像素的坐标范围内生成同一图片的重复值.

例子:

值应该是[ (1655,1024,20,26),(1675,1024,20,26) ],但会产生第三个值,如[ (1655,1024,20,26), (1658,1024,20,26), (1675,1024,20,26) ].

这就是为什么我要纠正这一点.第二个重复坐标的x值是否在第一个坐标的0-5个像素范围内,是否需要确定,然后将其删除,将其余坐标向上移动,使数字正确且有序地出现?非常感谢.

注意:我仍在自学列表删除过程,用lambda阅读删除列表对我来说就像胡言乱语.如果有什么不对劲,请原谅我.祝大家过得愉快!

推荐答案

你可以试试这个.

if len(Firstlist) > 2:
    elems = [f[0] for f in Firstlist]  # create a list of just first index
    i = 0
    while i < len(elems) - 1:  # iterate through the list with i
        j = i + 1
        while j < len(elems):  # iterate through the rest of the list with j
            if abs(elems[i] - elems[j]) <= 5:  # if item at index i is within 5 pixels of item at index j
                del elems[j]   # delete item j and continue
            else:
                j += 1    # otherwise move to next item
        i += 1  #  Move to next i item

Python相关问答推荐

如何过滤组s最大和最小行使用`transform`'

如何合并具有相同元素的 torch 矩阵的行?

如何使用加速广播主进程张量?

每次查询的流通股数量

如何使用大量常量优化代码?

PySpark:如何最有效地读取不同列位置的多个CSV文件

为什么在不先将包作为模块导入的情况下相对导入不起作用

牛郎星直方图中分类列的设置顺序

日志(log)轴上的自定义刻度出现意外的次要刻度标记行为

基于符号和位置 Select 数据帧特定区域的毕达式方法

Pandas:根据系列词典中的值筛选行

如何在上一次迭代中跳过某些内容(&q;)?

如何在Ubuntu上更新ChromeDriver二进制文件

SqlalChemy-同时过滤父对象和子对象

在matplotlib中使用渐变 colored颜色 填充区域之间

TypeError:Py集群库中未调整大小的对象的Len()

Python渐进式打字

如何将多列转换为行

如何在我的sveltekit应用程序中运行带有虚拟.venv的python脚本?

Django-自动完成搜索为已注销用户抛出错误?