python 图片素描画代码,,python 图片素描画


python 图片素描画代码,要正常使用下面代码需要下安装python的模块PIL。

# The authors of this work have released all rights to it and placed it# in the public domain under the Creative Commons CC0 1.0 waiver# (http://creativecommons.org/publicdomain/zero/1.0/).# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.# # Retrieved from: http://en.literateprograms.org/Photo_to_drawing_(Python)?oldid=18737import Imageimport ImageFilterimport ImageOpsimport ImageDrawdef dodge(a, b, alpha):    return min(int(a*255/(256-b*alpha)), 255)def drawing(infile, outfile, blur=25, alpha=1.0):    im1 = Image.open(infile).convert("L")    im2 = im1.copy()    im2 = ImageOps.invert(im2)    for i in range(blur):        im2 = im2.filter(ImageFilter.BLUR)    width, height = im1.size    for x in range(width):        for y in range(height):            a = im1.getpixel((x, y))            b = im2.getpixel((x, y))            im1.putpixel((x, y), dodge(a, b, alpha))    im1.save(outfile)if __name__ == '__main__':    infile='//20-160.png'    outfile ='/schetch.jpg'    drawing(infile,outfile)

素描效果如下:

素描之前的效果素描之后的效果

评论关闭