python--图像颜色反转

python读取图像并将图像颜色反转,最常见的为了视觉效果将黑白图片颜色对调。

import cv2
# opencv读取图像
img = cv2.imread('E:/liuying/Pictures/timg.jpg', 1)
cv2.imshow('img', img)
img_shape = img.shape  # 图像大小(565, 650, 3)
print(img_shape)
h = img_shape[0]
w = img_shape[1]
# 彩色图像转换为灰度图像(3通道变为1通道)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
print(gray.shape)
# 最大图像灰度值减去原图像,即可得到反转的图像
dst = 255 - gray
cv2.imshow('dst', dst)
cv2.waitKey(0)

也可以用一张色彩比较丰富的彩色图像,灰度化以后进行颜色反转。

import cv2
# opencv读取图像
img = cv2.imread('E:/liuying/Pictures/lighthouse.png', 1)
print(img.shape)
cv2.imshow('img', img)
img_shape = img.shape  # 图像大小(565, 650, 3)
print(img_shape)
h = img_shape[0]
w = img_shape[1]
# 彩色图像转换为灰度图像(3通道变为1通道)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('gray', gray)
print(gray.shape)
# 最大图像灰度值减去原图像,即可得到反转的图像
dst = 255 - gray
cv2.imshow('dst', dst)
cv2.waitKey(0)

结果可以看到灰度图像通道数变成1,颜色范围是0-255,反转以后明显看到亮的地方变暗,暗的地方变亮。

同样的也可以将彩色图像直接进行颜色反转。由于opencv是将图像读取到一个图像数组中,因此可以直接用数组计算。

import cv2
# opencv读取图像
img = cv2.imread('E:/liuying/Pictures/lighthouse.png', 1)
print(img.shape)
cv2.imshow('img', img)
img_shape = img.shape  # 图像大小(565, 650, 3)
print(img_shape)
h = img_shape[0]
w = img_shape[1]
# 最大图像灰度值减去原图像,即可得到反转的图像
dst = 255 - img
cv2.imshow('dst', dst)
cv2.waitKey(0)
### 实现灰度图像的颜色反转 对于灰度图像的颜色反转,可以通过遍历每一个像素并将其值设置为 `255` 减去原始像素值来完成。以下是具体的实现方式: #### 使用 OpenCV 和 NumPy 进行灰度图颜色反转 通过读取图像文件,并利用 OpenCV 库中的函数将彩图像转换为灰度图像,之后创建一个新的数组用于存储经过处理后的数据。 ```python import cv2 import numpy as np # 加载图像 img = cv2.imread('image0.jpg', 1) # 显示原图 cv2.imshow('Original Image', img) # 获取图像尺寸 height, width = img.shape[:2] # 转换为灰度模式 gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)[^1] # 创建空白画布准备填充计算得到的新像素值 reversed_gray_img = np.zeros((height, width), dtype=np.uint8) for y in range(height): for x in range(width): reversed_gray_img[y, x] = 255 - gray_img[y, x][^4] # 展示结果 cv2.imshow('Reversed Gray Image', reversed_gray_img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这段代码展示了如何加载一张图片,先转成灰度形式再逐个修改其亮度达到翻转效果。 另外还有一种更简洁的方法可以直接应用向量化操作而无需显式的循环结构: ```python import cv2 import numpy as np def reverse_grayscale(image_path): # 读入灰度图 image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) # 颜色反转运算 inverted_image = 255 - image return inverted_image inverted = reverse_grayscale('./Simulation-Result-on-Lena.png') cv2.imshow("Inverted", inverted) cv2.waitKey(0); cv2.destroyAllWindows(); ``` 此版本定义了一个名为 `reverse_grayscale()` 的辅助函数接受路径参数返回已处理过的图像对象[^3]。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值