验证码a透明图层处理

import numpy as np
import cv2 as cv,os,cv2
from PIL import Image
import pytesseract

# 绘图展示
def cv_show(name,img):
	cv2.imshow(name, img)
	cv2.waitKey(0)
	cv2.destroyAllWindows()

# 读取一个模板图像
def alpha2white_opencv2(img):
    sp=img.shape
    width=sp[0]
    height=sp[1]
    for yh in range(height):
        for xw in range(width):
            color_d=img[xw,yh]
            if(color_d[3]==0):
                img[xw,yh]=[255,255,255,255]
    return img

def alphabg2white_PIL(img):
    img=img.convert('RGBA')
    sp=img.size
    width=sp[0]
    height=sp[1]
    for yh in range(height):
        for xw in range(width):
            dot=(xw,yh)
            color_d=img.getpixel(dot)
            if(color_d[3]==0):
                color_d=(255,255,255,255)
                img.putpixel(dot,color_d)
    return img

if __name__ == '__main__':
    
    src_path = r'./src/'
    dest_path = r'./dest/' 
    fileList = os.listdir(src_path)
    for name in fileList:
        img = cv2.imread(src_path+name,-1)
        img_copy=img.copy()
        whiteback=alpha2white_opencv2(img_copy)
        cv_show('img',whiteback)
        new = input("please input:")
        while len(new) != 6:
            cv_show('img',whiteback)
            new = input("please input:")
            
        pre,end = name.split('_')
        new_name = new.upper()+'_'+end
        print(new_name)
        cv2.imwrite(dest_path+new_name, whiteback)
        os.remove(src_path+name)
    
    #opencv转化bgr

    src_path = r'./src/'
    dest_path = r'./dest/' 
    fileList = os.listdir(src_path)
    for name in fileList:
        img = cv2.imread(src_path+name,-1)
        whiteback=alpha2white_opencv2(img)
        pre,end = name.split('.')
        new_name = pre+'.'+end.lower()
        cv2.imwrite(dest_path+new_name, whiteback)
   #PIL转换bgr
    src_path = r'./src/'
    dest_path = r'./dest/' 
    fileList = os.listdir(src_path)
    for name in fileList:
        img = Image.open(src_path+name)
        whiteback=alphabg2white_PIL(img)
        pre,end = name.split('.')
        new_name = pre+'.'+end.lower()
        whiteback.save(dest_path+new_name)
   #测试
    file = r'C:\Users\Administrator\Desktop\api\dest\3H6LB7_15989252796280265.png'
    img = cv2.imread(file)
    cv_show('img',img)
    img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    print(img.shape)
    cv_show('img',img)


OpenCV是一个开源的计算机视觉库,它提供了丰富的图像处理和计算机视觉算法。在OpenCV中,可以通过透明图层叠加的方式实现绿色叠加效果。 要实现透明图层叠加绿色的效果,可以按照以下步骤进行操作: 1. 加载原始图像和绿色图像: 首先,使用OpenCV的`imread`函数加载原始图像和绿色图像。原始图像是需要进行叠加的底图,绿色图像是需要叠加的透明图层。 2. 调整绿色图像的尺寸: 如果绿色图像的尺寸与原始图像不一致,可以使用OpenCV的`resize`函数调整绿色图像的尺寸,使其与原始图像相同。 3. 创建透明图层: 使用OpenCV的`cv2.split`函数将绿色图像分离为三个通道(红、绿、蓝),然后创建一个与原始图像尺寸相同的全零数组作为透明图层。 4. 叠加透明图层: 将透明图层中的绿色通道设置为绿色图像对应位置的像素值,其他通道保持为零。可以使用OpenCV的数组索引操作来实现。 5. 叠加效果: 将原始图像和透明图层进行叠加,可以使用OpenCV的`addWeighted`函数将两个图像按照一定的权重进行叠加。 下面是一个示例代码,演示了如何使用OpenCV实现透明图层叠加绿色的效果: ```python import cv2 import numpy as np # 加载原始图像和绿色图像 original_image = cv2.imread('original_image.jpg') green_image = cv2.imread('green_image.png', cv2.IMREAD_UNCHANGED) # 调整绿色图像的尺寸 green_image = cv2.resize(green_image, (original_image.shape[1], original_image.shape[0])) # 创建透明图层 transparent_layer = np.zeros_like(original_image) # 叠加透明图层 transparent_layer[:, :, 1] = green_image[:, :, 1] # 叠加效果 result = cv2.addWeighted(original_image, 1, transparent_layer, 0.5, 0) # 显示结果 cv2.imshow('Result', result) cv2.waitKey(0) cv2.destroyAllWindows() ``` 希望以上内容能够帮助到您!如果有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值