所以我用一个简单的正向映射来解决这个问题,而不是逆映射,这通常更好,但是在我的应用程序中,我只将矩形映射到比矩形小的四边形,因此通常在变换后的图像中没有孔。代码如下:def reverse_quad_transform(image, quad_to_map_to, alpha):

# forward mapping, for simplicity

result = Image.new("RGBA",image.size)

result_pixels = result.load()

width, height = result.size

for y in range(height):

for x in range(width):

result_pixels[x,y] = (0,0,0,0)

p1 = (quad_to_map_to[0],quad_to_map_to[1])

p2 = (quad_to_map_to[2],quad_to_map_to[3])

p3 = (quad_to_map_to[4],quad_to_map_to[5])

p4 = (quad_to_map_to[6],quad_to_map_to[7])

p1_p2_vec = (p2[0] - p1[0],p2[1] - p1[1])

p4_p3_vec = (p3[0] - p4[0],p3[1] - p4[1])

for y in range(height):

for x in range(width):

pixel = image.getpixel((x,y))

y_percentage = y / float(height)

x_percentage = x / float(width)

# interpolate vertically

pa = (p1[0] + p1_p2_vec[0] * y_percentage, p1[1] + p1_p2_vec[1] * y_percentage)

pb = (p4[0] + p4_p3_vec[0] * y_percentage, p4[1] + p4_p3_vec[1] * y_percentage)

pa_to_pb_vec = (pb[0] - pa[0],pb[1] - pa[1])

# interpolate horizontally

p = (pa[0] + pa_to_pb_vec[0] * x_percentage, pa[1] + pa_to_pb_vec[1] * x_percentage)

try:

result_pixels[p[0],p[1]] = (pixel[0],pixel[1],pixel[2],min(int(alpha * 255),pixel[3]))

except Exception:

pass

return result

python四边形转矩形_如何用PIL将矩形图像映射成四边形?相关推荐

  1. python神经网络构建图_如何用卷积神经网络构建图像?

    原标题:如何用卷积神经网络构建图像? 原标题 |Everything you need to know to master Convolutional Neural Networks 作者 | Tir ...

  2. python人脸检测代码_如何用不到25行Python代码实现人脸检测

    本文我们会讲讲怎样利用不到 25 行 Python 代码和开源库 OpenCV,以很简单的方式实现人脸识别. 在正式开始前,先提以下两点小小的建议:先别急着跳到代码部分,最好在前文理解一下代码是干什么 ...

  3. 用python画机器猫代码_如何用Python画一只机器猫?| 原力计划

    原标题:如何用Python画一只机器猫?| 原力计划 作者 | 人邮异步社区 责编 | 胡巍巍 出品 | CSDN博客 自信心是成功的源泉,对刚入门编程行业的初级程序员来说,多敲代码多做项目就是构建自 ...

  4. python贪吃蛇控制台_如何用Python写一个贪吃蛇AI

    前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过.但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了. 问题的关键在于,图片中的贪吃蛇真的很贪吃XD, ...

  5. python 读取excel图片_如何用Python读取Excel中图片?

    公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...

  6. python默认字体大小_如何设置PIL加载的默认字体的大小,使其适合我的8x8矩阵?...

    我正在8x8矩阵显示器上显示文本,并且我没有一个方便使用我的BeagleBone的.ttf文件.如何设置PIL加载的默认字体的大小,使其适合我的8x8矩阵? 根据示例here,我应该能够说font = ...

  7. 怎么用python读取excel图_如何用Python读取Excel中图片?

    公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...

  8. python编程代码画画_如何用python编写一个绘制马赛克图像的自写程序

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 这篇教程将会展示如何用python的图形化包"Pygame"和基础的文件I/O来创建一 ...

  9. python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...

    python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...

最新文章

  1. memcached基本操作和语法
  2. 闪回的用途与实战(闪回表,闪回删除,闪回重名删除,闪回版本查询)
  3. 2 android学习资料
  4. Python面试题大全(二):python高级语法
  5. mysql 复制方式_MySQL复制方法
  6. Linux服务器---xopps
  7. oracle ctl 递增,增加oracle的控制文件
  8. 一直都说字节跳动有点难,这次体会了,而且被怼了~
  9. PowerDesigner执行sql脚本方式建立数据模型
  10. Drool实战系列(二)之eclipse安装drools插件
  11. matter协议的关键特性
  12. Linux文件莫名被删除,【Linux】Linux文件被删除后的恢复方法
  13. QT入门学习(一):什么是QT
  14. 如何停止keepalived_systemctl无法停掉keepalived
  15. 畅游高管曝出“k事件” 搜狐的老本往后怎么“吃”?
  16. Chapter3-线性模型线性模型
  17. docker教程(简介)
  18. caret包处理流程
  19. python求两个数的最大公约数穷举法_求两个数字的最大公约数-Python实现,三种方法效率比较,包含质数打印质数的方法...
  20. 提前还贷 别忘退税退保

热门文章

  1. ONEDNS配置1:centos7DNS服务器forwarder配置
  2. 计算机基础知识教程excel单元格拆分,电脑内怎么将excel表格中某个单元格的内容拆分至不同单元格里...
  3. C# 常用命名空间说明
  4. 计算机显示器是指什么,电脑的显示器是什么 选购显示器的小技巧
  5. 小锤子要出来?老罗傲娇属性不再
  6. Si24R2F+2.4GHz ISM 频段低功耗无线集成嵌入式发射基带无线发射芯片
  7. 云原生数据湖以存储、计算、数据管理等能力通过信通院评测认证
  8. ReactOS:基于Windows的开源操作系统
  9. Line Phone概念手机的设计感悟
  10. CTA 认证android平台 彩信/ MMS 受控原理