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

基于Python OpenCV的160×320显示屏坏点检测方案咨询

Python+OpenCV实现160×320显示屏坏点检测与像素验证

需求:使用Python+OpenCV检测160×320规格显示屏的坏点(颜色异常或黑屏像素),验证总像素数是否为51200,并定位每个坏点的位置。

现状:尝试过轮廓检测方法,但无法定位缺失的像素,认为网格遍历是最优解决方案。

网格遍历方案思路

轮廓检测适合识别连通的异常区域,但对单个缺失/异常像素的定位精度不足。网格遍历直接逐个检查每个像素的状态,能精准定位单个坏点,同时准确统计总有效像素数,完全匹配需求:

  1. 先验证输入图像尺寸是否为160×320(高度×宽度),确保检测对象正确
  2. 遍历图像的每个像素坐标(x,y)
  3. 根据显示屏显示的纯色模式(如绿色、红色、蓝色),设定正常像素的灰度/颜色阈值,判断当前像素是否为坏点(黑屏像素灰度值远低于正常,颜色异常像素偏离标准色)
  4. 统计总有效像素数,对比51200验证完整性
  5. 记录所有坏点的坐标,并在图像上标记坏点位置

完整代码实现

import cv2
import numpy as np

def display_bad_pixel_detection(image_path, expected_width=320, expected_height=160, threshold=120):
    # 读取图像,以灰度模式读取(纯色模式下灰度值足够判断)
    img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
    if img is None:
        print("无法读取图像文件")
        return
    
    # 验证图像尺寸
    height, width = img.shape
    if width != expected_width or height != expected_height:
        print(f"图像尺寸不符:实际{width}×{height},预期{expected_width}×{expected_height}")
        return
    
    total_expected_pixels = expected_width * expected_height
    bad_pixels = []
    valid_pixels = 0
    
    # 遍历每个像素
    for y in range(height):
        for x in range(width):
            pixel_value = img[y, x]
            # 纯色模式下,正常像素灰度值应高于阈值(黑屏/坏点灰度低)
            if pixel_value >= threshold:
                valid_pixels += 1
            else:
                bad_pixels.append((x, y))
    
    # 输出验证结果
    print(f"预期总像素数:{total_expected_pixels}")
    print(f"实际有效像素数:{valid_pixels}")
    print(f"缺失/坏点数量:{len(bad_pixels)}")
    if len(bad_pixels) > 0:
        print("坏点坐标列表:")
        for idx, (x, y) in enumerate(bad_pixels):
            print(f"坏点{idx+1}:({x}, {y})")
    
    # 标记坏点并保存结果图像
    color_img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
    for (x, y) in bad_pixels:
        # 用红色圆点标记坏点
        cv2.circle(color_img, (x, y), 1, (0, 0, 255), -1)
    
    cv2.imwrite("bad_pixel_marked.bmp", color_img)
    print("标记后的图像已保存为bad_pixel_marked.bmp")

# 示例调用:替换为你的图像路径
display_bad_pixel_detection("images/green-good.bmp")

代码说明

  • 尺寸验证:首先检查图像是否符合160×320的规格,避免检测错误的图像
  • 像素遍历:双重循环遍历每个像素的(x,y)坐标,x对应宽度方向,y对应高度方向
  • 坏点判断:针对纯色显示模式,用灰度阈值区分正常像素和坏点(可根据实际显示颜色调整阈值,比如红色模式可能阈值范围不同)
  • 结果输出:统计有效像素数、坏点数量,输出每个坏点的精确坐标
  • 可视化标记:在图像上用红色圆点标记坏点,便于直观查看

扩展优化

  • 支持多颜色模式检测:可添加参数切换灰度阈值或直接判断RGB颜色值,适配红、绿、蓝等不同纯色测试模式
  • 批量处理:遍历文件夹内的所有测试图像,自动生成检测报告
  • 阈值自适应:通过分析正常区域的像素值分布,自动计算最优阈值,避免手动调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:07:03