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

OpenCV 图像调整指南

OpenCV 提供了多种图像调整功能,以下是常见的视觉图片调整方法:

一、基本调整

1. 调整亮度和对比度

import cv2
import numpy as npdef adjust_brightness_contrast(img, brightness=0, contrast=0):# 亮度和对比度调整# brightness: -100 到 100 (0 表示不变)# contrast: -100 到 100 (0 表示不变)brightness = brightness / 255.0contrast = contrast / 127.0if contrast > 0:delta = 127.0 * contrasta = 255.0 / (255.0 - delta * 2)b = a * (brightness - delta)else:delta = -128.0 * contrasta = (256.0 - delta * 2) / 255.0b = a * brightness + deltaimg = cv2.addWeighted(img, a, img, 0, b)return img

2. 调整大小

# 按比例缩放
def resize_image(img, scale_percent):width = int(img.shape[1] * scale_percent / 100)height = int(img.shape[0] * scale_percent / 100)dim = (width, height)return cv2.resize(img, dim, interpolation=cv2.INTER_AREA)# 指定尺寸
resized = cv2.resize(img, (new_width, new_height), interpolation=cv2.INTER_LINEAR)

二、色彩调整

1. 转换为灰度图

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

2. 调整色相和饱和度 (HSV空间)

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv)# 调整饱和度
s = cv2.add(s, saturation_value)
hsv = cv2.merge([h, s, v])
adjusted = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)

3. 白平衡调整

# 简单白平衡
def white_balance(img):result = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)avg_a = np.average(result[:, :, 1])avg_b = np.average(result[:, :, 2])result[:, :, 1] = result[:, :, 1] - ((avg_a - 128) * (result[:, :, 0] / 255.0) * 1.1result[:, :, 2] = result[:, :, 2] - ((avg_b - 128) * (result[:, :, 0] / 255.0) * 1.1result = cv2.cvtColor(result, cv2.COLOR_LAB2BGR)return result

三、图像增强

1. 锐化

kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
sharpened = cv2.filter2D(img, -1, kernel)

2. 去噪

denoised = cv2.fastNlMeansDenoisingColored(img, None, 10, 10, 7, 21)

3. 直方图均衡化

# 灰度图
equ = cv2.equalizeHist(gray_img)# 彩色图 (在Y通道上应用)
img_yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
img_yuv[:,:,0] = cv2.equalizeHist(img_yuv[:,:,0])
equ_color = cv2.cvtColor(img_yuv, cv2.COLOR_YUV2BGR)

四、几何变换

1. 旋转

(h, w) = img.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, angle, scale)  # angle为旋转角度
rotated = cv2.warpAffine(img, M, (w, h))

2. 透视变换

pts1 = np.float32([[x1,y1],[x2,y2],[x3,y3],[x4,y4]])
pts2 = np.float32([[0,0],[w,0],[0,h],[w,h]])
M = cv2.getPerspectiveTransform(pts1, pts2)
perspective = cv2.warpPerspective(img, M, (w,h))

五、保存调整后的图像

cv2.imwrite('adjusted_image.jpg', adjusted_img, [int(cv2.IMWRITE_JPEG_QUALITY), 90])

这些是OpenCV中常用的图像调整技术,您可以根据具体需求组合使用这些方法。

http://www.xdnf.cn/news/705.html

相关文章:

  • CSS 预处理器:Sass 升级版本 浅学
  • Edge Impulse 训练openMV分类模型(字母+数字)
  • AnimateCC基础教学:制作一个打地鼠简化版
  • 第37讲|AI+农业气象建模:预测极端天气对农业的影响
  • Linux 动、静态库的实现
  • 【代码解读】开源模型 minimind之pretrain
  • Java29:Spring MVC
  • 认识MCP Function Calling AI Agent
  • Redis——内存策略
  • 对于网络资源二级缓存的简单学习
  • 第十章 继承与派生
  • C++ 构造函数调用顺序以及什么是虚析构函数?为什么需要它?
  • Ubuntu下安装和卸载MySQL
  • 简单使用MCP
  • PCA 降维实战:从原理到电信客户流失数据应用
  • 一键升级OpenSSH/OpenSSL修复安全漏洞
  • 【LINUX操作系统】线程基础与分页式存储管理
  • C++初阶-类和对象(中)
  • 【数据分析实战】使用 Matplotlib 绘制散点图
  • Android音视频开发
  • 【网络】通过Samba实现Window挂在Linux服务器路径
  • 【Windows10下PP-OCRv4部署指南‌】
  • 云点数据读写
  • 33-公交车司机管理系统
  • Kubernetes控制平面组件:调度器Scheduler(二)
  • MySQL:9.表的内连和外连
  • 字节头条golang二面
  • 基于Python的推荐算法的电影推荐系统的设计
  • 【深度学习入门_NLP自然语言处理】序章
  • node.js|环境部署|源码编译高版本的node.js