帮我把相片换个底色吧! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liuhao2050qq
V2EX    分享发现

帮我把相片换个底色吧!

  •  
  •   liuhao2050qq 2017-07-14 14:39:51 +08:00 6268 次点击
    这是一个创建于 3012 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚才一个高中同学发给我一个证件照,说是要换成白色,还说什么你们学计算机的不是很容易么。
    当时我一看,这不是画图的么,我让他找个会 ps 的去弄吧,然后人家就不意了,一顿埋汰,当时我就生气了,欺负我们程序猿不会 PS 这是,啪啪啪写了 10 行 Python 直接给换成白底了,还告诉他,这尼玛精确到像素级别的。

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

    说完这句话可能我就关了对话框了
    lixile
        2
    lixile  
       2017-07-14 15:00:22 +08:00
    你有用的的时候说一句你干***不是很容易的吗
    没用的时候爱理不理
    所以 不会 不知道 不懂 出门找淘宝 谢谢
    binjoo
        3
    binjoo  
       2017-07-14 15:02:10 +08:00
    这种情况我一般都会问他们是做什么的。
    LosLord
        4
    LosLord  
       2017-07-14 15:03:05 +08:00 via Android
    背景的杂色怎么处理的
    bluecrow
        5
    bluecrow  
       2017-07-14 15:04:51 +08:00 via iPhone
    不搭理。
    Tuisku
        6
    Tuisku  
       2017-07-14 15:26:20 +08:00   2
    “我每天工资按 600 算,工作 8 小时,时薪 75,给你做这个图大概需要 10 分钟。国际惯例不满一小时按一小时计价,支付宝还是微信?”
    CEBBCAT
        7
    CEBBCAT  
       2017-07-14 15:45:45 +08:00
    下次标题最好加上引号,不然我在外边看到还以为是求助帖
    liuhao2050qq
        8
    liuhao2050qq  
    OP
       2017-07-14 15:46:15 +08:00
    @Keyblade @lixile @LosLord @binjoo @bluecrow @Tuisku 总觉得做人还是要厚道些,能帮的还是要帮,但这 P 图都出于不能帮的边界了,还不依不饶的,真是心累。。。
    ScotGu
        9
    ScotGu  
       2017-07-14 15:46:25 +08:00
    @Tuisku 何必呢, 肛起来对方拿 75 元恶心你一小时怎么办。
    所以直接动手吧。 (笑
    CEBBCAT
        10
    CEBBCAT  
       2017-07-14 15:46:39 +08:00
    @CEBBCAT #7 好像语气很生硬……其实我是建议一下
    liuhao2050qq
        11
    liuhao2050qq  
    OP
       2017-07-14 15:47:54 +08:00
    @LosLord 他给的蓝底,黑衣服,白衬衫,比较好处理,适当调下色域就行。
    CEBBCAT
        12
    CEBBCAT  
       2017-07-14 15:47:54 +08:00
    所以楼主能不能开下源?
    liuhao2050qq
        13
    liuhao2050qq  
    OP
       2017-07-14 15:51:21 +08:00   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  
       2017-07-14 15:52:42 +08:00
    何必讨好不尊重自己的陌路人,follow your heart,怂。
    lixile
        15
    lixile  
       2017-07-14 15:53:34 +08:00
    @liuhao2050qq #8 哎 一言难尽 还不是活生生被恶心出开始用这种态度对待人
    Tuisku
        16
    Tuisku  
       2017-07-14 15:54:40 +08:00
    @ScotGu #9
    说的有道理啊 233,还是动手吧哈哈哈
    SkyKoo
        17
    SkyKoo  
       2017-07-14 15:55:13 +08:00
    搞过,美图秀秀就可以,还挺简单的
    lneoi
        19
    lneoi  
       2017-07-14 15:56:22 +08:00
    我还以为会是抄起 PS 修改,结果祭出 python 很 6
    liuhao2050qq
        20
    liuhao2050qq  
    OP
       2017-07-14 15:59:28 +08:00
    @coderluan 哈哈哈,我一直很怂,主要是得罪人自己心里也不高兴。
    CEBBCAT
        21
    CEBBCAT  
       2017-07-14 16:01:12 +08:00
    liuhao2050qq
        22
    liuhao2050qq  
    OP
       2017-07-14 16:03:16 +08:00
    总觉得没缩进不叫码,无高亮不编程 @CEBBCAT
    CEBBCAT
        23
    CEBBCAT  
       2017-07-14 16:05:28 +08:00
    @liuhao2050qq #22
    01001000
    designer
        24
    designer  
       2017-07-14 16:08:52 +08:00 via iPhone
    介绍给我吧,收他 80,再给你 400 红包!
    designer
        25
    designer  
       2017-07-14 16:09:10 +08:00 via iPhone
    8 少了个 0
    liuhao2050qq
        26
    liuhao2050qq  
    OP
       2017-07-14 16:11:25 +08:00
    @designer 这个办法好。。。。我喜欢。。。
    nfroot
        27
    nfroot  
       2017-07-14 16:34:25 +08:00
    人生就是这么让人无语,因为没办法和每个人保持好关系,却又心甘情愿的免费劳动。
    Chingim
        28
    Chingim  
       2017-07-14 16:46:38 +08:00 via Android
    为什么 r,g,b 的判定范围差距这么大呢?
    SingeeKing
        29
    SingeeKing  
    PRO
       2017-07-14 16:47:54 +08:00
    讲真,程序员不是应该或多或少会点 ps 吗

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

    ...

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

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

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

    py 后:https://i.loli.net/2017/07/14/5968dcffeab84.png
    580a388da131
        45
    580a388da131  
       2017-07-15 00:10:31 +08:00
    然后楼主用事实证明了确实很容易?
    0asis
        46
    0asis  
       2017-07-15 00:29:54 +08:00 via iPhone
    挑个刺,用 cv2 会不会更简单?
    Actrace
        47
    Actrace  
       2017-07-15 02:06:38 +08:00
    说不定是楼主女友找他帮忙。。
    Ultraman
        48
    Ultraman  
       2017-07-15 03:14:25 +08:00 via Android
    有同学还碰到过让给小孩起名字
    hzcxdgioa
        49
    hzcxdgioa  
       2017-07-15 07:24:31 +08:00 via Android
    你可以这样说:
    现在程序员一大把,你在家附近街边随便抓个程序员现场帮你做就可以了,确实太容易了,我真不稀罕干这事。
    这种事我刚入行的时候,像我一样的小白都是抢着干的,你找他们准没错。
    woshinide300yuan
        50
    woshinide300yuan  
       2017-07-15 08:03:40 +08:00
    拉黑呗,寻思啥呢。好久不联系外加能有这种思维模式的人,你指望和他共度余生吗。
    Tunar
        51
    Tunar  
       2017-07-15 08:36:04 +08:00 via Android
    我同学。。。大哥你一个 windows 用户出问题老问我干嘛啊。。我已经两年不用 windows 了,,偶尔跑个虚拟机而已。。你的问题我真的解决不了啊。。
    tr>
    pwcong
        52
    pwcong  
       2017-07-15 08:41:22 +08:00
    @Tuisku 大佬时薪比我日薪还高
    NoAnyLove
        53
    NoAnyLove  
       2017-07-15 12:53:02 +08:00   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  
       2017-07-15 16:54:43 +08:00
    @NoAnyLove 谢谢回复!想问下你是用什么方法来确定 r, g, b 三者的范围的?如果把 0 <= r 这里的等号去掉,为什么图像就花了,这个等号似乎很重要。
    NoAnyLove
        55
    NoAnyLove  
       2017-07-16 03:51:25 +08:00   1
    @gulangyu 把图片打开,随便找个取色器,大概的在背景上扫一下,记录下 RGB 大概的区间。如果处理之后还有蓝色没有被去掉,再根据处理后的图片中没有去掉的部分,继续调整颜色区间。说实话,这个方法其实比较蠢,但是优点是简单容易理解;用 OpenCV 来做效果更好,但是更复杂, 需要有一些基础知识。取等号是因为蓝色背景中有些像素点的 R 就是 0。
    gulangyu
        56
    gulangyu  
       2017-07-16 07:28:17 +08:00 via Android
    @NoAnyLove 谢谢回复。python 第一次接触图像处理,我用取色器这样扫,不管怎么调总有一部分去不掉。我再补补像素知识,试试 opencv 看看
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2733 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 12:14 PVG 20:14 LAX 05:14 JFK 08:14
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86