当前位置: 高中信息技术 / 综合题
  • 1. (2021高二上·温州期末) 答题卡一般采用2B铅笔填涂,填涂好的答题卡经过扫描后得到如图所示的数字化图像,从一个像素点的灰度值>132判断是否被填涂开始,进而判断一个信息点是否被填涂。利用如下的Python程序可以识别并统计填涂好的答题卡中的答案:

    1. (1) 答题卡通常使用红色,如使用黑色印刷,对答案识别(有/无)影响。

    2. (2) 请在划线处填入合适代码。

      from PIL import Image

      x_start = 11       # 起始点坐标

      y_start = 92    

      fill_width= 24       信息点宽度

      fill_height= 10         # 信息点高度

      space_width = 15       间隔宽度

      space_height = 12         # 间隔高度

      ans_cnt = 5            # 题目个数

      def bw_judge(R, G, B):         # bw_judge用于判断一个像素的填涂情况

      Gray_scale = 0.299 * R + 0.587 * G + 0.114 * B

      return Gray_scale < 132

      def fill_judge(x, y):            # fill_judge 用于判断信息点的填涂情况

      count = 0

      for i in range(x, x + fill_width):

        for j in range( ):

        R, G, B = pixels[i, j]

        if bw_judge(R, G, B) == True:

          count = count + 1

          if count >= fill_width * fill_height * 0.64:

            return True

            total_width  = fill_width + space_width

            total_height = fill_height + space_height

            image = Image.open ("card.bmp")

            pixels = image.load()

            ans = ""

            item=[‘A’,’B’,’C’,’D’]

            list=[]

            for col in range(ans_cnt):

              x =

              for row in range(4):

                y = y_start + total_height * row

                if fill_judge(x, y) == True:

                      

                  list.append(ans)

                  ans=""

      print(list)

微信扫码预览、分享更方便