Python: PS 图像调整--明度调整

本文介绍了一种使用Python实现的Photoshop图像明度调整算法。该算法基于图像合成原理,通过调整Alpha值来改变图像的明暗程度。当Alpha值大于0时,使用白色遮罩层;当Alpha值小于0时,使用黑色遮罩层。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文用 Python 实现 PS 图像调整中的明度调整:
我们知道,一般的非线性RGB亮度调整只是在原有R、G、B值基础上增加和减少一定量来实现的,而PS的明度调整原理还得从前面那个公式上去找。我们将正向明度调整公式:
RGB = RGB + (255 - RGB) * value / 255
转换为
RGB = (RGB * (255 - value) + 255 * value) / 255,
如果value用1表示最大值255,则为
RGB = RGB * (1 - value) + 255 * value,
可以看出什么呢?凡是知道图像合成的人都知道这个公式,其实PS的明度调整是采用Alpha合成方式,这里的value就是Alpha,公式前面部分RGB * (1 - value)的是图像部分,后面的255 * value部分则是一个白色遮照层,明度越大,遮照层的Alpha越大,图像就越谈,反之亦然。而明度的负调整则是以一个黑色遮照层来完成的。负100%就全黑了。只有遮照层Alpha=0,也就是明度值为0时,才是完完全全的图片显示。
明度调整,利用图层的合成
如果alpha大于0,相当于利用一个白色遮罩层合成
RGB = RGB * (1 - alpha) + 255 * alpha;
如果alpha小于0,相当于利用一个黑色遮罩层合成
RGB=RGB * (1+alpha) + 0 * alpha;


import matplotlib.pyplot as plt
from skimage import io

file_name='D:/Visual Effects/PS Algorithm/4.jpg';
img=io.imread(file_name)

# -255.0 - 255.0  alpha -1.0 - 1.0 
Increment = 105.0;
alpha = Increment/255.0;

def Illumi_adjust(alpha, img):
    if alpha > 0 :
        img_out = img * (1 - alpha) + alpha * 255.0
    else:
        img_out = img * (1 + alpha)

    return img_out/255.0

img_out = Illumi_adjust(alpha, img)

plt.figure()
plt.imshow(img)
plt.axis('off')

plt.figure(2)
plt.imshow(img_out)
plt.axis('off')

plt.show()

原图

这里写图片描述

明度增加:

这里写图片描述

转载于:https://www.cnblogs.com/mtcnn/p/9412400.html

<think>我们正在配置一个包含Redis、ResNet服务和Nginx的Docker Compose应用系统。用户询问在运行指定的docker-compose.yml之前,本地需要做哪些配置。 根据常见的Docker Compose部署模式,我们需要考虑以下几个方面: 1. 网络配置:确保服务间可以通信,端口不冲突。 2. 卷映射:确保本地目录存在,以便持久化数据(如Redis数据、Nginx配置、模型文件等)。 3. 环境变量:为各个服务设置必要的环境变量(如模型路径、日志级别等)。 4. 依赖服务:确保本地有构建镜像所需的Dockerfile和代码,或者直接使用远程镜像。 5. 配置文件:Nginx需要配置文件,需要提前准备并映射到容器内。 假设我们的docker-compose.yml结构如下(用户未提供,但根据问题描述,我们推断可能包含三个服务): - redis: 作为缓存或数据库 - resnet-service: 提供图像识别服务的容器 - nginx: 作为反向代理 具体配置步骤: 步骤1:创建项目目录结构 建议创建如下目录结构,以便管理配置文件和数据: ``` project-root/ ├── docker-compose.yml ├── nginx/ │ └── nginx.conf # Nginx配置文件 ├── redis/ │ └── redis.conf # Redis配置文件(可选) ├── resnet-service/ │ ├── Dockerfile # 构建resnet-service的Dockerfile │ ├── requirements.txt # Python依赖 │ └── ... # 其他代码文件 └── logs/ # 用于存放日志(可选) ``` 步骤2:准备Nginx配置文件 在nginx目录下创建nginx.conf,配置反向代理。示例配置: ``` events { worker_connections 1024; } http { upstream resnet { server resnet-service:5000; # 指向resnet-service的容器名和端口 } server { listen 80; location / { proxy_pass http://resnet; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } } ``` 步骤3:准备Redis配置(可选) 如果需要自定义Redis配置,在redis目录下创建redis.conf。 步骤4:准备ResNet服务 在resnet-service目录中,需要: - Dockerfile:用于构建镜像 - 代码文件:包括模型文件(如果模型文件较大,可能需要通过卷映射或提前放入镜像) - 环境变量:在docker-compose.yml中指定,如MODEL_PATH 步骤5:编写docker-compose.yml 示例docker-compose.yml内容如下: ```yaml version: '3.8' services: redis: image: redis:6.2-alpine ports: - "6379:6379" volumes: - ./redis/data:/data # 持久化Redis数据 command: redis-server --requirepass yourpassword # 可选,设置密码 resnet-service: build: ./resnet-service # 使用resnet-service目录下的Dockerfile构建 environment: - REDIS_HOST=redis - REDIS_PORT=6379 - MODEL_PATH=/app/model.pth - LOG_LEVEL=INFO volumes: - ./logs:/app/logs depends_on: - redis nginx: image: nginx:1.21-alpine ports: - "80:80" volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf depends_on: - resnet-service ``` 步骤6:本地目录和文件准备 - 创建必要的目录:`mkdir -p project-root/nginx project-root/redis/data project-root/logs project-root/resnet-service` - 将Nginx配置文件放入project-root/nginx/nginx.conf - 将ResNet服务的代码和Dockerfile放入project-root/resnet-service - 如果使用自定义Redis配置,放入project-root/redis/redis.conf 步骤7:环境变量和敏感信息 - 对于敏感信息(如Redis密码),建议使用环境变量文件(.env)或Docker secrets(生产环境)。 - 在docker-compose.yml中,可以通过`env_file`指定环境变量文件,或者直接在environment中设置。 步骤8:端口检查 - 确保本地80端口(Nginx)和6379端口(Redis)未被占用,或者修改映射端口。 步骤9:构建和运行 - 在项目根目录(有docker-compose.yml的目录)运行:`docker-compose up -d --build` 注意事项: - 模型文件:如果模型文件较大,不建议放入镜像(会导致镜像过大),可以在运行容器时通过卷映射(如`- ./model.pth:/app/model.pth`)动态提供。 - 日志:将日志映射到本地目录,方便查看。 - 网络:默认情况下,Compose会创建一个网络,服务间通过服务名通信。 通过以上步骤,即可在本地配置好环境并运行整个系统。</think>为了在本地运行包含 Redis、ResNet 服务和 Nginx 的 Docker Compose 应用系统,需要进行以下关键配置: ### 一、目录结构与文件准备 ```bash # 创建项目目录结构 mkdir -p myapp/{nginx,resnet-service,redis} cd myapp ``` ``` myapp/ ├── docker-compose.yml ├── nginx/ │ ├── nginx.conf # Nginx 配置文件 │ └── sites-enabled/ # 虚拟主机配置 ├── resnet-service/ │ ├── Dockerfile # 服务构建文件 │ ├── requirements.txt # Python依赖 │ └── app.py # 应用代码 └── redis/ └── redis.conf # Redis 配置文件(可选) ``` ### 二、核心配置文件 1. **Nginx 配置** (`nginx/nginx.conf`): ```nginx events {} http { upstream resnet { server resnet-service:5000; # 指向ResNet服务 } server { listen 80; location / { proxy_pass http://resnet; proxy_set_header Host $host; } } } ``` 2. **ResNet 服务配置** (`resnet-service/Dockerfile`): ```dockerfile FROM pytorch/pytorch:1.10.0-cuda11.3-cudnn8-runtime WORKDIR /app COPY . . RUN pip install -r requirements.txt EXPOSE 5000 CMD ["python", "app.py"] # 启动命令根据实际应用调整 ``` ### 三、Docker Compose 配置 (`docker-compose.yml`) ```yaml version: '3.8' services: redis: image: redis:6.2-alpine ports: - "6379:6379" volumes: - redis-data:/data resnet-service: build: ./resnet-service environment: - REDIS_HOST=redis - MODEL_PATH=/app/model.pth volumes: - ./resnet-service:/app depends_on: - redis nginx: image: nginx:1.21-alpine ports: - "80:80" volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf depends_on: - resnet-service volumes: redis-data: ``` ### 四、本地环境要求 1. **硬件要求**: - GPU支持(若需GPU加速):安装[NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html) ```bash distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \ && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update && sudo apt-get install -y nvidia-docker2 sudo systemctl restart docker ``` 2. **软件依赖**: - Docker 20.10+ - Docker Compose v2.2+ - NVIDIA驱动(GPU环境) ### 五、启动与验证 ```bash # 启动所有服务 docker compose up -d --build # 验证服务状态 docker compose ps # 测试Nginx代理 curl http://localhost/api/predict ``` ### 六、常见问题解决方案 | 问题现象 | 解决方法 | |---------|---------| | 端口冲突 | 修改`docker-compose.yml`中的端口映射 | | GPU不可用 | 确认已安装NVIDIA容器工具包 | | 模型加载失败 | 检查`MODEL_PATH`环境变量和文件路径 | | 服务启动顺序问题 | 添加健康检查`healthcheck`配置 | > 关键提示:首次运行时需下载基础镜像(约3-5GB),确保网络畅通[^1][^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值