当前位置: 首页 > news >正文

Python | OpenCV | 图像处理 | 入门实验 | 对比度增强 | 裁剪

0. 前言
“图像处理”听起来高大上,其实用 20 行 Python 就能跑起来。
今天带大家在 10 分钟 内完成一次真实可跑的实验:

把一张机器人照片 robot.jpg 切成左上角;

再把亮度 / 对比度拉满;

最后保存成新图 robot_enhanced.jpg。

读完你就能向室友炫耀:我写的代码能让照片“发光”!

1. 准备战场
表格

复制

项目 版本 备注
Python 3.8+ 自带即可
OpenCV-Python 4.10+ 一条命令装好
系统 Win / macOS / Linux 不限
1.1 一键安装 OpenCV
打开终端(Windows 用 PowerShell / CMD 都行)依次复制:

bash

复制

# 升级 pip,防止装包失败
python -m pip install --upgrade pip
# 用阿里镜像秒装
pip install opencv-python -i https://mirrors.aliyun.com/pypi/simple/
# 验证版本
pip show opencv-python
一键获取完整项目代码
看到 Version: 4.x.x 就说明 OK。

1.2 拿到素材
把下面两个文件放到 同一个文件夹(路径别带中文):

robot.jpg(实验原图)

image_process.py(下文代码,复制即用)

2. 核心 20 行代码
新建文件 image_process.py,复制保存:

Python

复制

import cv2
import os

# 1. 读图
img = cv2.imread('robot.jpg')
assert img is not None, 'robot.jpg 没读到,确认路径!'

# 2. 裁剪:左上角 1/4
h, w = img.shape[:2]
roi = img[0:h//2, 0:w//2]

# 3. 对比度+亮度增强
# alpha>1 对比度↑,beta>0 亮度↑
enhanced = cv2.convertScaleAbs(roi, alpha=1.8, beta=30)

# 4. 保存
out = 'robot_enhanced.jpg'
cv2.imwrite(out, enhanced)
print(f'✅ 已生成:{os.path.abspath(out)}')

# 5. 弹窗预览(按任意键关闭)
cv2.imshow('before', img)
cv2.imshow('after', enhanced)
cv2.waitKey(0)
cv2.destroyAllWindows()
一键获取完整项目代码

3. 跑起来!
终端切到该目录,执行:

bash

复制

python image_process.py
一键获取完整项目代码
看到两行提示:

✅ 已生成:D:\Demo\robot_enhanced.jpg

同时弹出两个窗口:
左边是原图,右边是“切头+提亮”后的效果。
按任意键 关闭窗口,实验完成!

4. 效果对比
表格

复制

原图 处理后
完整机器人,整体偏灰 仅左上角,金属质感变亮,边缘对比强烈
文件 1.2 MB 文件 0.3 MB(体积也小了)
5. 知识点复盘
表格

复制

术语 一句话解释
像素 图像最小色点,坐标 (x,y) 对应一个颜色值
图像矩阵 OpenCV 中一张图就是 numpy 三维数组
裁剪 本质是 Python 切片 img[y1:y2, x1:x2]
对比度增强 cv2.convertScaleAbs(src, alpha, beta)
通道顺序 OpenCV 默认 BGR,不是 RGB!
6. 想再玩点花样?
表格

复制

需求 改哪一行
裁剪正中 200×200 roi = img[h//2-100:h//2+100, w//2-100:w//2+100]
黑白复古风 加一行 gray = cv2.cvtColor(enhanced, cv2.COLOR_BGR2GRAY)
一键九宫格 写循环把原图切 3×3 保存 9 张
批量文件夹 用 glob 遍历 *.jpg 即可
7. 常见报错速查
表格

复制

报错 原因 解决
cv2.error: (-215:Assertion failed) 路径中文或图片没读到 换英文路径,确认 robot.jpg 存在
ModuleNotFoundError: cv2 装到了别的 Python 用 where python / which python 看路径,重装盘
弹窗闪退 没加 waitKey(0) 把代码抄全
8. 总结
今天我们只做了两件事:

用切片裁剪图像;

用 convertScaleAbs 提亮对比度。

但已经覆盖了 数字图像处理 7 大环节 里的
“图像采集 → 图像增强 → 图像表示” 三步。

下一步你可以挑战:

边缘检测 → cv2.Canny

人脸检测 → cv2.CascadeClassifier

磨皮美颜 → 双边滤波 cv2.bilateralFilter

9. 源码下载
懒得敲字?
GitHub 仓库(含 robot.jpg 与完整代码):
👉 https://github.com/yourname/opencv-10min-demo
Star 不迷路,后续更新九宫格、滤镜、动图生成!

http://www.cnnetsun.cn/news/137401.html

相关文章:

  • Apifox:API 接口自动化测试完全指南
  • 正反向代理:网络安全核心技术
  • 别被忽悠了!一文讲透MES管理系统本地部署与SaaS模式的真正底牌
  • 【毕业设计】基于springboot+微信小程序的羽球快讯爱好者平台小程序(源码+文档+远程调试,全bao定制等)
  • 小程序计算机毕设之基于SpringBoot的宠物领养微信小程序基于springboot+微信小程序的宠物领养系统小程序(完整前后端代码+说明文档+LW,调试定制等)
  • 小程序计算机毕设之基于springboot+微信小程序的大学生餐厅点餐系统小程序基于springboot微信小程序的校园食堂订餐服务系统(完整前后端代码+说明文档+LW,调试定制等)
  • 计算机小程序毕设实战-基于springboot+微信小程序的影院售票系统设计与实现基于SpringBoot的电影购票平台微信小程序【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 计算机小程序毕设实战-基于springboot+微信小程序的羽球快讯爱好者平台小程序羽毛球场预定app_羽毛球预约管家【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 11、文本与盒子属性的CSS技巧解析
  • 23、WinJS控件样式与样式规则定位指南
  • 27、Windows 8 应用开发中的 SVG 样式设计
  • SAP ABAP拆分交货单数量、批次、存储地点 并过账
  • 基于MPC的智能车运动预测和控制算法 Motion predication; Kinemati...
  • Mathcad的野路子】11kW PFC参数计算书实战拆解
  • STM32学习笔记CAN
  • 搭建你的第一个“私有知识库” (RAG)
  • 13、Unix 系统磁盘管理与安全定位脚本实用指南
  • 15、系统管理脚本实用指南
  • 怎么选一款适合大面积清洁的多功能全自动洗地机呢?
  • 使用matlab编写m脚本,编写无迹卡尔曼滤波算法(UKF)估计电池SOC,注释清晰
  • 教培行业新媒体运营困境凸显!这款软件或成转型制胜法宝?
  • Photoshop Neural Filters:把“引擎截图”秒变“电影级美宣”?AI 深度模糊与色彩迁移工作流
  • 基于matlab的多目标优化算法NSGA3,动态输出优化过程,得到最终的多目标优化结果。 数据...
  • 12.18
  • COCO 数据集
  • 国内好用的测试用例管理工具有哪些?
  • 24、COM+ 事务管理与补偿资源管理器详解
  • YOLO深度学习模型的训练参数配置与优化
  • 数字孪生可视化模板怎么用?5大行业Demo拆解,帮你快速复用提效
  • 必藏!程序员转型AI大模型:机遇、路径与成功率拆解