Opencv——图片修改

本文介绍了图片修改的概念、内容及相关代码示例。图片修改包括调色、抠图、合成等多种操作。代码示例使用OpenCV库,涵盖图片打码、组合和缩放,如用随机值替换部分像素、复制子区域、调整图像大小等。

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

目录

一、什么是图片修改

二、图片修改有哪些内容

三、举例代码展示

1.图片打码

2.图片组合

3.图片缩放


一、什么是图片修改

图片修改是指对图片进行各种处理和修改。

二、图片修改有哪些内容

  • 调色:调整图片的色彩和色调,使其更加美观或符合特定要求。
  • 抠图:将图片中的某个部分抠出来,例如将人物从背景中分离出来。
  • 合成:将多张图片合成为一张图片,例如将多个风景图片合成为一张全景图。
  • 明暗修改:调整图片的明暗度和对比度,使其更加清晰明亮或深暗模糊。
  • 彩度和色度修改:改变图片的彩度和色度,例如将彩色图片转换为黑白图片或将某些颜色变得更加鲜艳。
  • 添加特殊效果:给图片添加一些特殊效果,例如模糊、锐化、滤镜等。
  • 编辑:对图片进行裁剪、旋转、翻转等操作,以满足特定需求。

三、举例代码展示

先导入库

import numpy as np
import cv2
import matplotlib.pyplot as plt

所需图片:time.jpgmx.png

部分代码作用展示:

  1. a = cv2.imread('time.jpg'): 这行代码使用OpenCV的imread函数读取名为'time.jpg'的图像文件,并将读取到的图像数据存储在变量a中。
  2. cv2.imshow() 这行代码会在新窗口中显示处理后的图片。
  3. cv2.waitKey() 这行代码将使得窗口保持打开状态,直到用户按下键盘上任意键。
  4. cv2.destroyAllWindows() 这行代码会关闭所有的窗口。
1.图片打码
a = cv2.imread(r'time.jpg')
a[100:200, 200:300] = np.random.randint(0, 256, (100, 100, 3))
cv2.imshow('result', a)
cv2.waitKey(1000000)
cv2.destroyAllWindows()

a[100:200, 200:300] = np.random.randint(0, 256, (100, 100, 3)):这行代码是用于在图片的 (100, 200) 到 (200, 300) 区域上生成一个大小为 (100, 100, 3) 的随机整数数组,数组的每个元素都在 0 到 255 之间,然后把这个数组赋值给图片的对应区域。这会使得这个区域内的像素被替换成随机值,从而改变了图片的内容。

结果展示:

2.图片组合
a = cv2.imread('time.jpg')
b = cv2.imread('mx.png')
b[200:250, 200:250] = a[150:200, 150:200]  # 注意:矩阵的大小必须要统一。
cv2.imshow('result', b)
cv2.waitKey(100000)
cv2.destroyAllWindows()

b[200:250, 200:250] = a[150:200, 150:200]: 这行代码将a图像中的一个子区域(从(150,150)到(200,200)的区域)复制到b图像的一个子区域(从(200,200)到(250,250)的区域)。这是通过在两个图像上分别指定源区域和目标区域来实现的。注意,源区域和目标区域的大小必须是一样的,否则这行代码会报错。

结果展示:

3.图片缩放
a = cv2.imread('time.jpg')
a_new = cv2.resize(a, (200, 600))
a_new = cv2.resize(a, dsize=None, fx=2, fy=3)
cv2.imshow('a_new', a_new)
cv2.waitKey(100000)
cv2.destroyAllWindows()

a_new = cv2.resize(a, (200, 600)):这行代码使用OpenCV的resize函数对图像a进行大小调整,将其宽度设为200像素,高度设为600像素。调整后的图像数据存储在变量a_new中。

a_new = cv2.resize(a, dsize=None, fx=2, fy=3):这行代码又一次使用OpenCV的resize函数对图像a进行大小调整。这次调整不同于上一次,因为它接受的是fx和fy参数,这两个参数分别控制图像在水平方向和垂直方向上的缩放因子。这里fx=2,fy=3,表示水平方向上的缩放因子是2,垂直方向上的缩放因子是3。因此,图像在水平和垂直方向上都会被放大。调整后的图像数据仍然存储在变量a_new中。

结果展示:

### 使用 OpenCV 进行图像处理 为了使用 OpenCV 处理图片,在开发环境里需预先安装好 OpenCV 库[^1]。 对于基本的图像读取、显示以及颜色通道分离再合并的操作,可以采用如下 Python 代码实现: ```python import cv2 import numpy as np # 加载图像 img = cv2.imread("soble.png") # 显示原图 cv2.imshow('Original Image', img) # 将图像拆分成蓝色、绿色和红色通道 b, g, r = cv2.split(img) # 合并三个颜色通道到一个新的彩色图像中 result = cv2.merge([b, g, r]) # 显示处理后的图像 cv2.imshow('Processed Image', result) # 等待按键事件关闭窗口 cv2.waitKey(0) cv2.destroyAllWindows() ``` 上述脚本展示了如何利用 `imread` 函数加载一张名为 "soble.png" 的图片,并将其分解成 BGR 三种色彩分量;之后又通过 `merge` 方法重新组合这些分量形成新的 RGB 图像。最后借助于 `imshow` 和 `waitKey` 来展示结果并等待用户交互以结束程序运行[^2]。 如果希望更深入地集成 OpenCV 到项目当中或者构建更为复杂的视觉应用程序,则可能需要用到 CMake 构建系统来管理依赖关系与编译过程。下面是一个简单的例子说明怎样配置 CMakeLists.txt 文件以便支持 OpenCV 功能: ```cmake # 指定所需的最小版本号 cmake_minimum_required(VERSION 2.8) # 创建工程项目名称 project(ImageProcessingApp) # 设置使用的标准为 C++11 set(CMAKE_CXX_STANDARD 11) # 查找系统的 OpenCV 安装位置 find_package(OpenCV REQUIRED) # 添加 OpenCV 包含目录至当前工程 include_directories(${OpenCV_INCLUDE_DIRS}) # 编写源文件并将它们链接起来生成可执行文件 add_executable(image_processor main.cpp) # 关联目标二进制文件同 OpenCV 库 target_link_libraries(image_processor ${OpenCV_LIBS}) ``` 这段 CMake 脚本定义了一个新项目,并指定了它所依赖的外部库——即 OpenCV。这使得开发者能够轻松编写基于 OpenCV API 的 C/C++ 程序[^3]。 当涉及到图形界面设计时,Qt 是一个非常流行的选择之一。在 Qt Designer 或者纯代码方式下设置 QHBoxLayout 布局器作为主容器,其中左侧用于呈现原始输入图像,中间放置各种图像变换控件(如按钮),而右侧则用来预览经过滤镜或其他效果修改过的最终输出图像[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值