添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
import matplotlib . pyplot as mpl from urllib . parse import urlparse import urllib . robotparser # 一个check能不能fetch的方程 def canFetch ( url ) : parsed_uri = urlparse ( url ) domain = '{uri.scheme}://{uri.netloc}/' . format ( uri = parsed_uri ) rp = urllib . robotparser . RobotFileParser ( ) rp . set_url ( domain + "/robots.txt" ) try : rp . read ( ) canFetchBool = rp . can_fetch ( "*" , url ) except : canFetchBool = None return canFetchBool

这里我选择了一张曝光度不够高的图片

查看是不是能通过打开,如果能,就用urllib打开图片

url = 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591003793908&di=6ea0016b97fbcfe029c040421a585e33&imgtype=0&src=http%3A%2F%2Fn.sinaimg.cn%2Ffront%2F265%2Fw640h425%2F20181002%2FeAw0-hktxqah3979676.jpg'
if canFetch(url):
    image = Image.open(urllib.request.urlopen(url))
display(image)

我们将长和宽都除以4,相当于变成了原来图片1/16的大小。

sImg = image
w,h=sImg.size
dImg=sImg.resize((int(w/4),int(h/4)),Image.ANTIALIAS)
display(dImg)

增加明亮度

RGB是什么

首先我们要知道RGB是Red,Green,Blue红绿蓝。图片里所有的色块都是由这三个参数组成的。
我们可以将我们的图片转换成一个np.array:

print(np.array(dImg).shape)
np.array(dImg)

大概是这样

(106, 160, 3)
array([[[74, 78, 89],
        [76, 80, 92],
        [77, 81, 92],
        ...,
        [70, 74, 85],
        [70, 75, 86],
        [72, 76, 88]],
       [[70, 76, 90],
        [71, 78, 92],
        [72, 78, 92],
        ...,
        [68, 74, 88],
        [68, 74, 88],
        [66, 73, 86]],
       [[67, 77, 93],
        [69, 78, 95],
        [69, 79, 95],
        ...,
        [65, 75, 91],
        [64, 73, 89],
        [61, 70, 87]],
       ...,
       [[10, 14, 23],
        [10, 14, 23],
        [10, 14, 23],
        ...,
        [ 3,  6, 15],
        [ 5,  8, 17],
        [ 5,  8, 17]],
       [[ 9, 13, 22],
        [ 9, 13, 22],
        [ 9, 13, 22],
        ...,
        [ 1,  4, 13],
        [ 2,  5, 14],
        [ 2,  5, 14]],
       [[ 9, 13, 22],
        [ 9, 13, 22],
        [ 9, 13, 22],
        ...,
        [ 2,  5, 14],
        [ 1,  4, 13],
        [ 0,  3, 12]]], dtype=uint8)

shape为(106,160,3)。
106是图片的高,160是图片的长,第三个数就是RGB的长度(都是3)
每一行的第一个数就是Red系数,越高(最高255)代表红色越多,越低(最低0)代表红色越少。
全黑是(0,0,0)
全白是(255,255,255)
正红色是(255,0,0)
绿色,蓝色同理。

增加明亮度

在明白了这个array究竟有什么意义之后,我们来增加明亮度。
越接近255,也就越偏向白色。所以我们要做的就是增加array里每一个数值

#通过不断调试这个相乘的系数,我确定了2.5是最佳的
bright_arr = np.array(dImg)*2.5
bright_arr = bright_arr.astype('uint8') 
image_bright = Image.fromarray(bright_arr)
display(image_bright)

添加一个红色滤镜

我们可以通过将每个色块(pixel)红色的指数全部改成200.

bright_arr[:,:,0] = 200
bright_arr = bright_arr.astype('uint8') 
image_red = Image.fromarray(bright_arr)
display(image_red)

当然我们可以通过自己“调色”,添加除了基础色以外的滤镜。比如我知道红加蓝等于紫色。我可以加一个紫色滤镜

bright_arr[:,:,0] = 200
bright_arr[:,:,2] = 200
bright_arr = bright_arr.astype('uint8') 
image_purple = Image.fromarray(bright_arr)
display(image_purple)

PIL模糊滤镜

PIL有很多的filter,可以百度一下都有哪些。这里我应用了模糊滤镜,将原来清晰的图片变得模糊。

blurred_image = image_purple.filter(ImageFilter.BLUR)
display(blurred_image)
                                    亮度是指图片的明暗程度,对比度是指图片明暗的差异,饱和度则是指图片颜色的饱满程度。在计算机中每个图片上的像素点都由三个字节来进行表示,分别代表着像素的RGB数据。  图片上每个像素的每种颜色都可以有从0到255的变化,数值越高,颜色亮度越大,因此当改变一张图片亮度时,实际上就是同时改变图片上每个像素的每个颜色的数值,提高图片亮度,就是将图片上每个像素的每个颜色的数值调大,数值调小则会降低图片亮度。
                                    之前我们介绍了pillow的Image类的基础用法,讲解了打开图片,保存图片,翻转图片的一些方法,但是我们答应朋友的修图并没有介绍,这篇文章我们主要就来介绍一下pillow的修图功能。本文主要介绍了pillow的ImageEnhance模块增强图片效果的方法,我们可以使用增强亮度,增强色度以及增强对比度的方法来增强我们图片的效果,这几个方法可以替代一些美颜滤镜的功能,希望能够帮到我在内的部分单身狗。更多技术文章。
                                    python实现图片变亮或者变暗的方法
这篇文章主要介绍了python实现图片变亮或者变暗的方法,涉及Python中Image模块操作图片的相关技巧,分享给大家供大家参考。具体实现方法如下:    
import Image
# open an image file (.jpg or.png) you have in the working folder
im1 = Image.ope
                                    用python实现图片的缩放,颜色转换,图像增强,调节亮度等。
from PIL import Image
import matplotlib.pyplot as plt
import os
import matplotlib.image as mpimg
from scipy import misc
from skimage import data, exposure, img_as_float, color
from PIL import Image,ImageFilter
import numpy a
对图像处理来说,numpy数组是非常重要的。图像由像素值网格构成,numpy数组更像列表,更适合用于科学计算。
为什么需要numpy进行图像处理
当我们想将图像亮度提升2倍,直接对列表进行乘法计算。
a = [1,2,3,4,5]
b = 2*a
print(b)
结果如下。这个结果并不是我们想看到的,它仅仅是将同一列表进行两次连接。这也是为什么我们需要用的numpy数组进行图像计算。
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
在numpy中进行相同的操作
使用pillow.Image加载图片之后需要转换格式才能应用函数:
加载图片,转换格式(这个函数只能处理numpy数组格式所以可以使用下面函数转换,也可以转换成numpy数组格式):
fi...
                                    图像处理中,图像亮度调节可能是最简单的算法了,非常常见的线性运算即可完成亮度调节,比如所有像素点亮度值乘或者加一个增强系数,使得图像整体变亮或者变暗。photoshop中是如何实现的不得而知,每个版本可能也不一样。还是说说我的实现方法,其实就是在调节过程中,根据像素点亮度,做非线性调节,即高光、阴影部分调节小一点,中间部分多调节一些,这样亮度调节看着更自然一些。
                                    文章目录1.模糊2.灰度3.亮度4.对比度5.饱和度6.色相反转7.反色8.阴影9。透明度10.褐色CSS3 Filter滤镜)属性提供了提供模糊和改变元素颜色的功能。CSS3 Fitler 常用于调整图像的渲染、背景或边框显示效果。-webkit-filter是css3的一个属性,Webkit率先支持了这几个功能,感觉效果很不错。下面咱们就学习一下filter这个属性吧。现在规范中支持的效果有...