V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
liuhao2050qq

帮我把相片换个底色吧!

  •  
  •   liuhao2050qq · Jul 14, 2017 · 6662 views
    This topic created in 3219 days ago, the information mentioned may be changed or developed.
    刚才一个高中同学发给我一个证件照,说是要换成白色,还说什么你们学计算机的不是很容易么。
    当时我一看,这™不是画图的么,我让他找个会 ps 的去弄吧,然后人家就不乐意了,一顿埋汰,当时我就生气了,欺负我们程序猿不会 PS 这是,啪啪啪写了 10 行 Python 直接给换成白底了,还告诉他,这尼玛精确到像素级别的。

    不过之前还好,都是找修电脑,现在直接 P 图了,V 友们这些同学怎么破,大家怎么看好久不联系,一找你就修电脑屁图的?
    56 replies    2017-07-16 07:28:17 +08:00
    Keyblade
        1
    Keyblade  
       Jul 14, 2017   ❤️ 2
    “你们学计算机的不是很容易么”

    说完这句话可能我就关了对话框了
    lixile
        2
    lixile  
       Jul 14, 2017
    你有用的的时候说一句你干***不是很容易的吗
    没用的时候爱理不理
    所以 不会 不知道 不懂 出门找淘宝 谢谢
    binjoo
        3
    binjoo  
       Jul 14, 2017
    这种情况我一般都会问他们是做什么的。
    LosLord
        4
    LosLord  
       Jul 14, 2017 via Android
    背景的杂色怎么处理的
    bluecrow
        5
    bluecrow  
       Jul 14, 2017 via iPhone
    不搭理。
    Tuisku
        6
    Tuisku  
       Jul 14, 2017   ❤️ 2
    “我每天工资按 600 算,工作 8 小时,时薪 75,给你做这个图大概需要 10 分钟。国际惯例不满一小时按一小时计价,支付宝还是微信?”
    CEBBCAT
        7
    CEBBCAT  
       Jul 14, 2017
    下次标题最好加上引号,不然我在外边看到还以为是求助帖
    liuhao2050qq
        8
    liuhao2050qq  
    OP
       Jul 14, 2017
    @Keyblade @lixile @LosLord @binjoo @bluecrow @Tuisku 总觉得做人还是要厚道些,能帮的还是要帮,但这 P 图都出于不能帮的边界了,还不依不饶的,真是心累。。。
    ScotGu
        9
    ScotGu  
       Jul 14, 2017
    @Tuisku 何必呢, 肛起来对方拿 75 元恶心你一小时怎么办。
    所以直接动手吧。 (笑
    CEBBCAT
        10
    CEBBCAT  
       Jul 14, 2017
    @CEBBCAT #7 好像语气很生硬……其实我是建议一下
    liuhao2050qq
        11
    liuhao2050qq  
    OP
       Jul 14, 2017
    @LosLord 他给的蓝底,黑衣服,白衬衫,比较好处理,适当调下色域就行。
    CEBBCAT
        12
    CEBBCAT  
       Jul 14, 2017
    所以楼主能不能开下源?
    liuhao2050qq
        13
    liuhao2050qq  
    OP
       Jul 14, 2017   ❤️ 1
    from PIL import Image
    if __name__ == "__main__":
    im = Image.open("mr.zhang.jpg")
    x, y = im.size
    for i in range(x):
    for j in range(y):
    r, g, b = im.getpixel((i,j))
    if (20< r < 180) and (80< g < 250) and (180< b< 265):
    r, g, b = 255, 255, 255
    im.putpixel((i, j), (r, g, b))
    im.show()

    @CEBBCAT
    coderluan
        14
    coderluan  
       Jul 14, 2017
    何必讨好不尊重自己的陌路人,follow your heart,怂。
    lixile
        15
    lixile  
       Jul 14, 2017
    @liuhao2050qq #8 哎 一言难尽 还不是活生生被恶心出开始用这种态度对待人
    Tuisku
        16
    Tuisku  
       Jul 14, 2017
    @ScotGu #9
    说的有道理啊 233,还是动手吧哈哈哈
    SkyKoo
        17
    SkyKoo  
       Jul 14, 2017
    搞过,美图秀秀就可以,还挺简单的
    lneoi
        19
    lneoi  
       Jul 14, 2017
    我还以为会是抄起 PS 修改,结果祭出 python 很 6
    liuhao2050qq
        20
    liuhao2050qq  
    OP
       Jul 14, 2017
    @coderluan 哈哈哈,我一直很怂,主要是得罪人自己心里也不高兴。
    CEBBCAT
        21
    CEBBCAT  
       Jul 14, 2017
    @liuhao2050qq #13
    @liuhao2050qq #18
    WoW 谢谢谢谢,太用心了
    liuhao2050qq
        22
    liuhao2050qq  
    OP
       Jul 14, 2017
    总觉得没缩进不叫码,无高亮不编程 @CEBBCAT
    CEBBCAT
        23
    CEBBCAT  
       Jul 14, 2017
    @liuhao2050qq #22
    01001000
    designer
        24
    designer  
       Jul 14, 2017 via iPhone
    介绍给我吧,收他 80,再给你 400 红包!
    designer
        25
    designer  
       Jul 14, 2017 via iPhone
    8 少了个 0 😢
    liuhao2050qq
        26
    liuhao2050qq  
    OP
       Jul 14, 2017
    @designer 这个办法好。。。。我喜欢。。。
    nfroot
        27
    nfroot  
       Jul 14, 2017
    人生就是这么让人无语,因为没办法和每个人保持好关系,却又心甘情愿的免费劳动。
    Chingim
        28
    Chingim  
       Jul 14, 2017 via Android
    为什么 r,g,b 的判定范围差距这么大呢?
    SingeeKing
        29
    SingeeKing  
    PRO
       Jul 14, 2017
    讲真,程序员不是应该或多或少会点 ps 吗😂

    选择 - 色彩范围 - 填充。。
    liuhao2050qq
        30
    liuhao2050qq  
    OP
       Jul 14, 2017
    @Chingim 相片质量不是很高,有 ps 痕迹,慢慢调的
    liuhao2050qq
        31
    liuhao2050qq  
    OP
       Jul 14, 2017
    @SingeeKing 谁实话,PS 其实也会一点,但是没在笔记本上装。。
    bearqq
        32
    bearqq  
       Jul 14, 2017 via Android
    有色背景抠图是比较麻烦的,特别头发区域,背景色会渗透到黑色上,抠图后要么头发上有颜色,要么头发损失一部分
    ps 的颜色范围可以较好解决这一问题
    aksoft
        33
    aksoft  
       Jul 14, 2017
    不会写代码的设计师不是好朋友
    xshwy
        34
    xshwy  
       Jul 14, 2017
    「啊这个是得搞设计的弄,我真不会,你找 xxx 吧,他是大神」
    geelaw
        35
    geelaw  
       Jul 14, 2017 via iPhone
    但是为什么要写代码呢……扔进 PowerPoint 删除背景,再在下面放个其他颜色矩形另存为图片不是更简单么
    ty89
        36
    ty89  
       Jul 14, 2017   ❤️ 1
    找修图
    找盗别人 qq/微信
    找做 ppt
    找修手机
    找做数学题

    ...

    这都是程序员的日常
    liuhao2050qq
        37
    liuhao2050qq  
    OP
       Jul 14, 2017
    @geelaw 然而并不会,事实上我还是第一次听说 PowerPoint 可以去背景。。。。、

    @ty89 戳中泪点
    liuhao2050qq
        38
    liuhao2050qq  
    OP
       Jul 14, 2017
    @bearqq Get
    joeke
        39
    joeke  
       Jul 14, 2017
    我老舅经常叫我改 PPT word excel 什么的,这不是很简单的额吗,,我硬着头皮 简单的给他弄一下。。。。。
    SharkIng
        40
    SharkIng  
       Jul 14, 2017 via iPhone
    最近家里亲戚来,也是类似情况,只不过是修手机
    SingeeKing
        41
    SingeeKing  
    PRO
       Jul 14, 2017
    @ty89 数学题什么情况😂
    bluecrow
        42
    bluecrow  
       Jul 14, 2017
    @joeke 可能以为对大学生来说都是小菜。
    sola97
        43
    sola97  
       Jul 14, 2017
    Adobe 全家桶装起来,把技能点点满
    gulangyu
        44
    gulangyu  
       Jul 14, 2017
    @liuhao2050qq 找了张蓝底妹子证件照试了下你分享的代码,怎么没啥反应

    原图: https://i.loli.net/2017/07/14/5968dd35d84de.jpg

    py 后:https://i.loli.net/2017/07/14/5968dcffeab84.png
    580a388da131
        45
    580a388da131  
       Jul 15, 2017
    然后楼主用事实证明了确实很容易?
    0asis
        46
    0asis  
       Jul 15, 2017 via iPhone
    挑个刺,用 cv2 会不会更简单?
    Actrace
        47
    Actrace  
       Jul 15, 2017
    说不定是楼主女友找他帮忙。。
    Ultraman
        48
    Ultraman  
       Jul 15, 2017 via Android
    有同学还碰到过让给小孩起名字😏
    hzcxdgioa
        49
    hzcxdgioa  
       Jul 15, 2017 via Android
    你可以这样说:
    现在程序员一大把,你在家附近街边随便抓个程序员现场帮你做就可以了,确实太容易了,我真不稀罕干这事。
    这种事我刚入行的时候,像我一样的小白都是抢着干的,你找他们准没错。
    woshinide300yuan
        50
    woshinide300yuan  
       Jul 15, 2017
    拉黑呗,寻思啥呢。好久不联系外加能有这种思维模式的人,你指望和他共度余生吗。
    Tunar
        51
    Tunar  
       Jul 15, 2017 via Android
    我同学。。。😒大哥你一个 windows 用户出问题老问我干嘛啊。。我已经两年不用 windows 了,,偶尔跑个虚拟机而已。。你的问题我真的解决不了啊。。
    pwcong
        52
    pwcong  
       Jul 15, 2017
    @Tuisku 大佬时薪比我日薪还高
    NoAnyLove
        53
    NoAnyLove  
       Jul 15, 2017   ❤️ 1
    @gulangyu 调整一下颜色区间就好了

    ```python
    from PIL import Image
    if __name__ == "__main__":
    im = Image.open("mr.zhang.jpg")
    x, y = im.size
    for i in range(x):
    for j in range(y):
    r, g, b = im.getpixel((i,j))
    if (0 <= r < 50) and (90 <= g <= 155) and (130 <= b<= 230):
    r, g, b = 255, 255, 255
    im.putpixel((i, j), (r, g, b))
    im.show()
    ```
    gulangyu
        54
    gulangyu  
       Jul 15, 2017
    @NoAnyLove 谢谢回复!想问下你是用什么方法来确定 r, g, b 三者的范围的?如果把 0 <= r 这里的等号去掉,为什么图像就花了,这个等号似乎很重要。
    NoAnyLove
        55
    NoAnyLove  
       Jul 16, 2017   ❤️ 1
    @gulangyu 把图片打开,随便找个取色器,大概的在背景上扫一下,记录下 RGB 大概的区间。如果处理之后还有蓝色没有被去掉,再根据处理后的图片中没有去掉的部分,继续调整颜色区间。说实话,这个方法其实比较蠢,但是优点是简单容易理解;用 OpenCV 来做效果更好,但是更复杂, 需要有一些基础知识。取等号是因为蓝色背景中有些像素点的 R 就是 0。
    gulangyu
        56
    gulangyu  
       Jul 16, 2017 via Android
    @NoAnyLove 谢谢回复。python 第一次接触图像处理,我用取色器这样扫,不管怎么调总有一部分去不掉。我再补补像素知识,试试 opencv 看看 。◕‿◕。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3824 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 213ms · UTC 10:35 · PVG 18:35 · LAX 03:35 · JFK 06:35
    ♥ Do have faith in what you're doing.