gpt4 book ai didi

python - 计算图像中白色背景上的蓝调线数

转载 作者:行者123 更新时间:2023-12-02 15:22:30 24 4
gpt4 key购买 nike

我有 1000 张这样的图像 ctf capcha sample

我通过这个 tutorial 尝试了 cv2 库和 Hough Line Transform ,但我不明白这是我的情况吗?我有 1000 张图像,即我几乎不可能手动输入任何数据(如宽度或坐标)。

根据逻辑,我必须找到图像中的每个蓝色像素并检查邻居的像素是否为白色
因此,对于它,我必须知道 PNG 图像的像素格式。我必须如何读取图像,如普通文件 open (path, 'r') as file_object或者它必须是某个库的特殊方法?

最佳答案

你可以计算线的末端并除以二......

#!/usr/bin/env python3

import numpy as np
from PIL import Image
from scipy.ndimage import generic_filter

# Line ends filter
def lineEnds(P):
global ends
# Central pixel and one other must be 255 for line end
if (P[4]==255) and np.sum(P)==510:
ends += 1
return 255
return 0

# Global count of line ends
ends = 0

# Open image and make into Numpy array
im = Image.open('lines.png').convert('L')
im = np.array(im)

# Invert and threshold for white lines on black
im = 255 - im
im[im>0] = 255

# Save result, just for debug
Image.fromarray(im).save('intermediate.png')

# Find line ends
result = generic_filter(im, lineEnds, (3, 3))

print(f'Line ends: {ends}')

# Save result, just for debug
Image.fromarray(result).save('result.png')

输出
Line ends: 16

enter image description here

请注意,这不是生产质量代码。您应该添加额外的检查,例如线端的总数是偶数,并在边缘周围添加 1 像素宽的黑色边框,以防线接触边缘等。

关于python - 计算图像中白色背景上的蓝调线数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60391594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com