栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

三通道的黑白图(不同于单通道的普通的黑白图片)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

三通道的黑白图(不同于单通道的普通的黑白图片)

有的图片是黑白色的,但不是单通道,而是三通道的,是因为 每个 像素点 的 3个值 相同(其中要注意三个通道的像素点的值一样,要是三个通道当前值的平均值(代码上的temp)而不是某个通道上的值)。

也就是说:三通道图可以是黑白图(24bit),但单通道图只能是黑白图(8bit)

我们可以使用三通道的黑白图做风格转换

其中代码如下:

import cv2
import glob
import os
import numpy as np
# Get all png files under the input folder
input_img_path = glob.glob("a/*")
save_path = "blur13x13/"

def mkdir(path):
    folder = os.path.exists(path)
    if not folder:  # 判断是否存在文件夹如果不存在则创建为文件夹
        os.makedirs(path)  # makedirs 创建文件时如果路径不存在会创建这个路径
        print("--- create new folder...  ---")
    else:
        print("---  There is this folder!  ---")
mkdir(save_path)  # 调用函数

def rgb2dw(path, size_):
    w = size_[0]
    h = size_[1]
    label_im = cv2.imread(path)
    # 修改图像的尺寸大小
    # new_array = cv2.resize(label_im, (w, h), interpolation=cv2.INTER_CUBIC)
    # data = np.array(new_array, dtype='int32')
    data = np.array(label_im, dtype='int32')
    for i in range(w):
        for j in range(h):
            temp = (data[:, :, 0][i][j] + data[:, :, 1][i][j] + data[:, :, 2][i][j]) / 3
            data[:, :, 0][i][j] = temp
            data[:, :, 1][i][j] = temp
            data[:, :, 2][i][j] = temp
    return data

i = 0
if __name__ == '__main__':
    for file in input_img_path:
        # get the file_name of image
        file_name = file.split('\')[-1]
        img = cv2.imread(file)

        ### 下面为处理图片的过程
        size_ = [img.shape[0], img.shape[1]]
        bw = rgb2dw(file, size_)
        ###

        cv2.imwrite(save_path + file_name, bw)
        i = i + 1
        print("The", i, "picture is currently being processed")

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/280392.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号