|
如何区分彩色图片和灰度图片(同样都是3通道的情况)
- # -*- coding: utf-8 -*-
- __author__ = u'江锦炬 微信:715781570'
- __date__ = '2020/9/23 下午4:42'
- __product__ = 'PyCharm'
- __filename__ = 'dfy_test_true_person_pass_rate'
- import os
- import cv2
- import numpy as np
- # 如何区分彩色图片和灰度图片(同样都是3通道的情况)
- def is_Gray(chip):
- # chip_gray = cv2.cvtColor(chip,cv2.COLOR_BGR2GRAY)
- r, g, b = cv2.split(chip)
- r = r.astype(np.float32)
- g = g.astype(np.float32)
- b = b.astype(np.float32)
- s_w, s_h = r.shape[:2]
- x = (r + b + g) / 3
- area_s = s_w * s_h
- # x = chip_gray
- r_gray = abs(r - x)
- g_gray = abs(g - x)
- b_gray = abs(b - x)
- r_sum = np.sum(r_gray) / area_s
- g_sum = np.sum(g_gray) / area_s
- b_sum = np.sum(b_gray) / area_s
- gray_degree = (r_sum + g_sum + b_sum) / 3
- if gray_degree < 1.0:
- # 灰度图片
- return True, gray_degree
- else:
- # 彩色图片
- return False, gray_degree
- img_path = "/media/jiang/AI_DataSets/DataSets/nir_rgb_original_data/sw-hdr-sm/rgb_sw_hdr_sm_20200607/001X29/1.jpg"
- img_path1 = "/media/jiang/AI_DataSets/DataSets/nir_rgb_original_data/sw-hdr-sm/rgb_sw_hdr_sm_20200607/001X29/2.jpg"
- img = cv2.imread(img_path)
- print(img.shape)
- cv2.imshow("ori", img)
- cv2.waitKey(0)
- ret, value = is_Gray(img)
- # 彩色图片 结果: False 8.359733153292181
- # 灰度图片 结果: True 0.03208879886831276
- print("结果:", ret, value)
复制代码
|
|