zoukankan      html  css  js  c++  java
  • 图片的处理

    一。图片处理过程

        1.   将图片灰度转换,处理成背景为黑色,数字为白色的图片,图片矩阵元素只有0和1,且矩阵的数据类型(dtype)为 'float64' 。

        2.  将图片里的数字取出来。

        3.  将取出的数字伸缩到相应的大小。

    二。代码实现

     1 #!/usr/bin/env python
     2 # -*- coding:utf8 -*-
     3 
     4 from skimage import io
     5 import numpy as np
     6 
     7 m, n = 100, 100 # 设置处理后的图片大小
     8 
     9 def imgOut(inputImg): # 对图片进行灰度处理和大小处理
    10     img01 = io.imread(inputImg, as_grey = True) # 读取图片,并灰度转换 
    11     tu=sorted([(np.sum(img01==i),i) for i in set(img01.flat)]) # https://blog.csdn.net/l297969586/article/details/77878962
    12 
    13     # 字体为白色,背景为黑色
    14     img01[img01 == tu[-1][1]] = 0
    15     img01[img01 != 0] = 1
    16 
    17     # 截取图片数字
    18     rowLen = len(img01[0])
    19     colLen = len(img01)
    20     # 四个变量保存了数字顶部到图片顶部 数字底部到图片顶部 数字左边到图片左边 数字右边到图片左边的距离
    21     row01, row02, col01, col02 = 0, 0, 0, 0
    22     for i in range(colLen):
    23         for j in range(rowLen):
    24             if img01[i][j] == 1:
    25                 col01 = i
    26                 break
    27 
    28     for i in range(colLen)[::-1]:
    29         for j in range(rowLen):
    30             if img01[i][j] == 1:
    31                 col02 = i
    32                 break
    33 
    34     for i in range(rowLen):
    35         for j in range(colLen):
    36             if img01[j][i] == 1:
    37                 row01 = i
    38                 break
    39 
    40     for i in range(rowLen)[::-1]:
    41         for j in range(colLen):
    42             if img01[j][i] == 1:
    43                 row02 = i
    44                 break
    45 
    46     # 对矩阵img01进行截取
    47     img02 = img01[col02-10:col01+10, row02-10:row01+10]
    48     
    49     # 处理图片大小,数字的每个像素点在原图位置的比例,按同样的比例放倒伸缩的图片中
    50     img03 = np.zeros([m,n])
    51     for i in range(len(img02)):
    52         for j in range(len(img02[0])):
    53             if img02[i][j] == 1:
    54                 img03[int(i*m/len(img02))][int(j*n/len(img02[0]))] = 1
    55     return img03
    56 
    57 img02 = imgOut('./2_1.png') # 处理当前文件夹的 2_1.png 图片
    58 io.imsave("2.jpg",img02) # 处理后保存在当前文件夹的 2.jpg 图片

    三。处理结果

       处理前                                                                               处理后

                

     四。代码下载

    dev分支     https://gitee.com/GH16/neural-network.git

  • 相关阅读:
    Multidimensional Arrays
    TortoiseGit
    Excel教程(14)
    Excel教程(13)
    Excel教程(12)
    Excel教程(11)
    lock
    reflect
    game
    html x
  • 原文地址:https://www.cnblogs.com/GH-123/p/8747877.html
Copyright © 2011-2022 走看看