【每周一坑】生成九宫格图片

我们的每N周一坑栏目又来了。

之前我们有过和图像处理相关的题目:

  • 【每周一坑】用代码给图片配上文字
  • 【每周一坑】缩小图片尺寸

今天再来一个和图片有关的:图片切割

非常简单的功能,但在开发中很常见,很多网页/应用里缩略图都是对图片进行缩放+切割得到的。

增加一点点趣味性,我们的要求是:

把一张图片切成 3 x 3 九张小图

这样就可以把它们发在朋友圈重新组成一张大图了。

示例: 原图

效果

当然,原图是正方形效果最好。

附加题

  1. 对于不是正方形的原图,截取中间尽可能大的正方形区域,再分割成九张小图(需考虑长>宽和长<宽两种情况)
  2. 切图时将朋友圈小图之间的间隔考虑进去,使拼接出的大图看起来更连续

提示:仍然用之前提到过的 PIL 库,里面的 crop 方法即可实现(py3 安装包名为 pillow)。

参考代码将在下周给出,或看看其他同学在留言中提交的代码。

期待各位同学提交解答。

提交代码可以使用 paste.ubuntu.com

codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。

往期问题可通过公众号菜单栏“课外辅导”栏目中进入查看。


【解答】蜥蜴流感与贝叶斯定理

案例本身是一个典型的条件概率,用贝叶斯定理即可算出概率,概率统计的书籍和网上都可以搜到详细解释。

P = (0.01 * 0.9) / (0.01 * 0.9 + (1 - 0.01) * 0.09) = 0.0917

而我们的问题是要模拟这个场景。所以我们可以循环10万次,用 random 模块根据已知的概率来“产生”病例和阳性结果,并统计最终实际的阳性患病率。

给出一份参考代码:

import random
# 定义个体
class Man:
    flu = False #是否患病
    test = False #是否阳性
# 产生10万个体,随机患病和检测状况
all_people = []
for i in range(100000):
    m = Man()
    # 患病概率
    if random.random() < 0.01:
        m.flu = True
    # 真阳性概率
    if m.flu and random.random() < 0.9:
        m.test = True
    # 假阳性概率
    if not m.flu and random.random() < 0.09:
        m.test = True
    all_people.append(m)
# 统计个数
positive_people = [m for m in all_people if m.test]
print(len(positive_people))
positive_flu = [m for m in positive_people if m.flu]
print(len(positive_flu))
# 实际患病者在阳性者中的比例
print(len(positive_flu)/len(positive_people))

这里先模拟生成了10万份数据,然后统计结果。当然也可以边生成边统计,@Mr. wang、@铭记、@L、@杀哥 就是用的类似方法,有的写得比我还更简洁。

同时提交解答的还有 @Jzy、@灿夜、@冬日炎炎。感谢各位同学的参与,希望下次继续。

期待在下一期中看到你的代码!

原文发布于微信公众号 - Crossin的编程教室(crossincode)

原文发表时间:2018-05-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

资源 | 英语不行?你可以试试TensorFlow官方中文版教程

TensorFlow 最近提供了官方中文版教程(Tutorials)和中文版指南(Guide)。其中教程主要介绍了 TensorFlow 的基本概念,以及各种基...

812
来自专栏大数据文摘

目标检测必须要OpenCV?10行Python代码也能实现,亲测好用!

本文作者和他的团队构建了一个名为ImageAI 的Python库,集成了现今流行的深度学习框架和计算机视觉库。本文将手把手教你构建自己的第一个目标检测应用,而且...

1816
来自专栏阿凯的Excel

巧妙设置蛋糕图(Excel绘制图表系列课程)!

一直以踏踏实实做人!安安静静分享Excel技巧为宗旨的我,今天还是标题党了! 为啥尼! 我今天想分享这个图的绘制过程! ? 我真心不知道除了面积折线组合图外还能...

3615
来自专栏FreeBuf

干货 | 黑客带你还原韩剧《幽灵》中出现的隐写术

0x00 前言 最近有一部剧人气非常高,据说是将军官和医生的浪漫故事。咦?!!这不是好几年前的老片子了么。 后来有人告诉我,是一部韩剧,里面的欧巴超帅妹子超靓。...

3527
来自专栏机器学习算法与Python学习

资源 | 英语不行?你可以试试TensorFlow官方中文版教程

现在 TensorFlow 有官方中文版教程啦,以前的英文版 Tutorials 有了对应的中文翻译。各位还在 TensorFlow 门前徘徊的开发者们,现在可...

873
来自专栏跟着阿笨一起玩NET

.NET3.5 GDI+ 图形操作1

      前言: 本文章抄袭自本人刚刚买的《ASP.NET 3.5从入门到精通》这本书,此书介绍在 http://www.china-pub.com/4499...

782
来自专栏SDNLAB

SDN应用路由算法实现工具之Networkx

SDN(Software Defined Networking)是一种新型的网络架构,通过集中式的控制平面管理数据层面的转发等操作。网络的连通性是最基础的需求,...

3299
来自专栏瓜大三哥

IO约束(下)

Output接口类型和约束 FPGA 做Output 的接口时序同样也可以分为系统同步和源同步。在设置XDC约束时,总体思路与Input类似,只是换成要考虑下游...

2347
来自专栏新智元

【解放程序员】MIT“创世纪”机器学习新系统,自动生成补丁修复Bug

【新智元导读】当您辛辛苦苦写了大半年程序,终于要享受一下国庆长假的时候,别让 bug 把您的假期毁了。MIT 研究团队开发了一个称为“创世纪”的系统,能够对以前...

3585
来自专栏智能算法

数据异常到底该如何检测?(一)

小编在正式进入工作之后,面对的第一个需要去解决的问题:在网络安全监测中,如何发现异常数据?如异常用户登录,异常操作等。对于网络上的问题我确实是第一次接触这样类型...

5537

扫码关注云+社区