图像反转

部署运行你感兴趣的模型镜像

顾名思义,图像反转即反转图像灰度级,可以得到等效的照片底片

设一幅图片的灰度级为[0,L-1],则反转图像公式如下:

                                                                                      s=L-1-r

s为目标图像的像素点的像素值,r为原图像像素点的像素值

下面使用Python实现图像反转:

使用的图像数据为:

导入待使用的第三方库:

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

读取图片,并查看图片大小和通道数:

img = Image.open('灰原.jpg')
np.shape(img)
(300, 533, 3)

原图像大小为300*533像素的,  RGB三通道彩色图片

可视化:

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

 

将图像数据转换为numpy数组:

img_data = np.array(img)

 图像反转函数:

def Image_rollovers(img, func):
    img_data = np.array(img)
    a = np.shape(img_data)
    new_img = []
    for i in range(a[0]):
        new_row = []
        for j in range(a[1]):
            data = list(img_data[i][j])
            new_data = func(data)
            new_row.append(np.array(new_data))
        new_img.append(np.array(new_row))
    return new_img
def rollovers(data):
    new_data = []
    for k in data:
        new_data.append(int(255-k))
    return new_data

 调用函数并查看结果:

new_img = Image_rollovers(img, rollovers)
new_img = np.array(new_img)
new_img = Image.fromarray(new_img.astype('uint8')).convert('RGB')
plt.figure(figsize=(72,128))
plt.subplot(121)
plt.axis('off')
gray1 = new_img.convert('L')
plt.imshow(gray1, cmap='gray')
plt.subplot(122)
plt.axis('off')
plt.imshow(img, cmap='gray')
plt.show()

 

 左侧为目标图像,左侧为原图像

 

 

 

 

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

使用Python实现图像反转有多种方法,以下是一些常见的实现方式: ### 使用 `ImageChops` 库 可以直接使用 `ImageChops` 中定义的反转函数进行图像颜色反转。示例代码如下: ```python from PIL import Image, ImageChops def invert_color(fname): im = Image.open(fname) im_inverted = ImageChops.invert(im) im_inverted.save(fname.replace('.', '_inverted.')) return im_inverted if __name__ == '__main__': invert_color('test.jpg') ``` 此代码可以对彩色图像进行反转处理,将图像的颜色进行反转,并保存为新的图片 [^1]。 ### 灰度反转 对于灰度图像反转,可以通过自定义函数实现。示例代码如下: ```python import cv2 import numpy as np import matplotlib.pyplot as plt def reverse_gray(img): """灰度反转 输入:灰度图,np.uint8格式 输出:反转图,np.uint8格式 """ max1 = img.max() img1 = img * (-1) img2 = img1 + max1 return img2 imgpath = r"./Simulation-Result-on-Lena.png" img = cv2.imread(imgpath, 0) img1 = reverse_gray(img) plt.subplot(121) plt.imshow(img, cmap='gray') plt.subplot(122) plt.imshow(img1, cmap='gray') plt.show() ``` 该代码定义了一个 `reverse_gray` 函数,用于对输入的灰度图像进行反转操作,并使用 `matplotlib` 显示原图和反转后的图像 [^2]。 ### 使用 `cv2` 库处理二值图和灰度图 使用 `cv2` 库可以对二值图和灰度图进行反转处理。示例代码如下: ```python import cv2 img = "5.png" img = cv2.imread(img, 1) cv2.imshow('img', img) img_shape = img.shape gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) print(gray.shape) dst = 255 - gray ret2, binary2 = cv2.threshold(dst, 127, 255, cv2.THRESH_BINARY) cv2.imshow('dst', dst) cv2.imshow("binary", binary) cv2.imshow("binary2", binary2) cv2.waitKey(0) cv2.destroyAllWindows() ``` 此代码将彩色图像转换为灰度图,然后对灰度图进行反转处理,还可以将灰度图转换为二值图并进行反转 [^3]。 ### 使用 `PIL.ImageOps` 库 使用 `PIL.ImageOps` 库可以对不同类型的图像进行反转。示例代码如下: ```python from PIL import Image import PIL.ImageOps # 灰度图图片反转 img = Image.open("your_image.jpg") img = img.convert('L') img.show() img = PIL.ImageOps.invert(img) img = img.convert('L') img.show() # 彩色的图片反转 im02 = Image.open("your_image.jpg") im = PIL.ImageOps.grayscale(im02) im.show() im = PIL.ImageOps.invert(im02) im.show() # 调整阈值对其反转 im0 = PIL.ImageOps.solarize(img, 100) im0.show() ``` 该代码展示了对灰度图、彩色图进行反转的方法,还可以通过 `solarize` 函数调整阈值进行反转处理 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫猫虫(——)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值