OpenCVの-pythonの簡単な画像品質テスト

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/wsp_1138886114/article/details/99702191

バイナリイメージをスクリーン、画質が非常に悪いリターンで、OCRの認識率を向上させるために主にこれを書く認識しない、それだけで、バイナリ、グレースケールとRGB画像の高品質を認識しています。
次の統計:'白底方差', '图案方差', '像素波动方差','图像大小/分辨率'これらの参照率、場合像素波动方差、1未満图像大小/分辨率0.01未満、それは絵の品質が悪いです。

import cv2,os,csv
import numpy as np


def get_img(Img_path):
    image_paths = []
    for (dir, dirnames, filenames) in os.walk(Img_path):
        for img_file in filenames:
            ext = ['.jpg','.png','.jpeg','.tif']
            if img_file.endswith(tuple(ext)):
                image_paths.append(dir+'/'+img_file)
    return image_paths


def Calculate_QD(img):
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    numdiff = np.diff(gray)
    var_all = np.sum((numdiff) ** 2) / gray.size

    baseline = np.bincount(gray.reshape(1,-1)[0])
    sortNum = np.argsort(baseline)
    var_255 = np.sum((gray - sortNum[-1]) ** 2) / gray.size
    var_000 = np.sum((gray - sortNum[-2]) ** 2) / gray.size
    return var_255,var_000,var_all


if __name__ == '__main__':
    Img_path = './idcard'
    csv_path = './idcard.csv'
    Imgpaths = get_img(Img_path)
    Result_CSV = []

    for Img_path in Imgpaths:
        filename = Img_path.split('/')[-1]
        imgArray = cv2.imread(Img_path)
        image_size = os.path.getsize(Img_path)
        px_size = round((image_size/imgArray.size ),4)
        var_255, var_000, var_all = Calculate_QD(imgArray)
        Result_CSV.append((filename,var_255, var_000, var_all,px_size))
    with open(csv_path, 'w', newline='') as csv_file:
        csv_writer = csv.writer(csv_file)
        csv_writer.writerow(('filename','白底方差', '图案方差', '像素波动方差','图像大小/分辨率'))
        csv_writer.writerows(Result_CSV)

おすすめ

転載: blog.csdn.net/wsp_1138886114/article/details/99702191