You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3实现图像像素转摩斯密码输出错误,求排查问题

错误原因及修正方案
  • 像素位置计算错误
    挑战明确要求像素位置计算规则为 行号 * 100 + 列号,你的代码仅提取了X坐标(列号)作为像素位置,完全丢弃了Y坐标(行号),所有位置值计算全部错误。
  • 白色像素匹配规则错误
    测试图为单通道二值图,目标白色像素值为1,你用三通道纯白[255,255,255]匹配,且cv2.imread默认读取BGR三通道格式,导致提取到的像素点完全不是目标点。
  • 偏移量计算逻辑冗余错误
    坐标列表转字符串再清洗转回列表的操作完全多余,固定循环40次的逻辑没有适配实际白色像素数量,额外添加的负值过滤逻辑也不符合规则要求,进一步破坏了偏移量结果。
  • 摩斯密码字典缺失
    你的摩斯映射字典缺少大量符号规则,也没有实现空格分隔解码的逻辑,就算前面步骤正确,解码也会失败。
修正后的Python3代码
import cv2
import numpy as np

# 以灰度模式读取图像
im = cv2.imread('PNG.png', cv2.IMREAD_GRAYSCALE)
# 提取所有像素值为1的坐标,Y为行号,X为列号
Y, X = np.where(im == 1)
# 按规则计算每个白色像素的实际位置
positions = [Y[i] * 100 + X[i] for i in range(len(Y))]

pre_pos = 0
morse_code = ""
answer = ""
# 完整摩斯密码字典
char_morse_dict={
'A':'.-','B':'-...','C':'-.-.','D':'-..','E':'.','F':'..-.',
'G':'--.','H':'....','I':'..','J':'.---','K':'-.-','L':'.-..',
'M':'--','N':'-.','O':'---','P':'.--.','Q':'--.-','R':'.-.',
'S':'...','T':'-','U':'..-','V':'...-','W':'.--','X':'-..-',
'Y':'-.--','Z':'--..','0':'-----','1':'.----','2':'..---','3':'...--',
'4':'....-','5':'.....','6':'-....','7':'--...','8':'---..','9':'----.',
'.':'.-.-.-',',':'--..--','?':'..--..','\'':'.----.','/':'-..-.','(':'-.--.-',
')':'-.--.-',':':'---...',';':'-.-.-.','=':'-...-','+':'.-.-.','-':'-....-',
'_':'..--.-','"':".-..-.",'$':'...-..-','':''
}

for idx, pos in enumerate(positions):
    # 第一个像素ASCII就是位置本身,后续为当前位置减上一个位置
    if idx == 0:
        ascii_code = pos
    else:
        ascii_code = pos - pre_pos
    symbol = chr(ascii_code)
    if symbol != ' ':
        morse_code += symbol
    else:
        # 遇到空格解码当前摩斯字符
        char = [k for k, v in char_morse_dict.items() if v == morse_code][0]
        answer += char
        morse_code = ""
    pre_pos = pos
# 处理最后一个摩斯字符
if morse_code:
    char = [k for k, v in char_morse_dict.items() if v == morse_code][0]
    answer += char

print(answer)

运行后即可输出正确结果Q7R7O5R7UU。

内容的提问来源于stack exchange,提问作者LMBozz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:36:04