注意:对于“axis”,我指的是图像坐标,而不是NumPy的数组维度。

问题在于^{}维度的解释(“N维数组”),或者在这个上下文中定义一个坐标系。在

对于Pillow,很明显:The Python Imaging Library uses a Cartesian pixel coordinate system,

with (0,0) in the upper left corner. Note that the coordinates refer

to the implied pixel corners; the centre of a pixel addressed as (0,

0) actually lies at (0.5, 0.5).

Coordinates are usually passed to the library as 2-tuples (x, y).

Rectangles are represented as 4-tuples, with the upper left corner

given first. For example, a rectangle covering all of an 800x600 pixel

image is written as (0, 0, 800, 600).

如下所示(图像->公共域):

您的代码,修改后可创建2x2像素图像:import numpy as np

from PIL import Image # Pillow

w, h, d = 2,2,3

x,y = 0,1

grid = np.zeros((w, h, d), dtype=np.uint8) # NumPyarray for image data

#test = np.zeros(w*h*d, dtype=np.uint8).reshape(w, h, d)

#print(np.array_equal(grid,test)) # => True

# red pixel with NumPy

grid[x, y] = [255, 0, 0]

print(grid[::])

# green pixel with Pillow

img = Image.fromarray(grid, 'RGB')

pixels = img.load()

pixels[x,y] = (0, 255, 0)

# display temporary image file with default application

scale = 100

img.resize((w*scale,h*scale)).show()

显示问题(在(0,1)处绘制像素,绿色:枕头,红色:nArray):

X和Y确实互换了:

是因为纽姆还是枕头?在

ndarray打印为

^{pr2}$

它很容易被重新格式化以在视觉上对应于图像像素[

[ [ 0 0 0] [255 0 0] ]

[ [ 0 0 0] [ 0 0 0] ]

]

这表明Pillow对阵列的解释与预期一致。在

但为什么纽比的ndarray似乎互换了坐标轴?在

让我们把这个分开一点[ # grid

[ # grid[0]

[ 0 0 0] #grid[0,0]

[255 0 0] #grid[0,1]

]

[ #grid[1]

[ 0 0 0] #grid[1,0]

[ 0 0 0] #grid[1,1]

]

]

让我们测试一下(-i一旦脚本完成,Python就以交互模式运行):>py -i t.py

[[[ 0 0 0]

[255 0 0]]

[[ 0 0 0]

[ 0 0 0]]]

>>> grid[0,1]

array([255, 0, 0], dtype=uint8)

>>> grid[0]

array([[ 0, 0, 0],

[255, 0, 0]], dtype=uint8)

>>> ^Z

这证实了上述假设指标。在

很明显,ndarray的第一个维度如何对应于图像线或Y轴,第二个维度对应于图像列或X轴(第三个维度显然对应于RGB像素值)。在

所以,为了匹配“坐标系”,要么。。。在。。。轴需要“交换”

。。。数据需要“交换”

。。。轴心解释需要“交换”

让我们看看:

1。只需在写入ndarray时交换索引变量:# red pixel with NumPy

grid[y, x] = [255, 0, 0]

预期结果[[[ 0 0 0]

[ 0 0 0]]

[[255 0 0]

[ 0 0 0]]]

以及

当然包装器函数可以做到这一点。在

2.Transposing该数组作为suggested by zch,在三维数组上不容易工作,因为该函数默认影响所有维度:grid = np.transpose(grid)

print("transposed\n", grid)

print("shape:", grid.shape)

结果[[[ 0 0]

[255 0]]

[[ 0 0]

[ 0 0]]

[[ 0 0]

[ 0 0]]]

shape: (3, 2, 2)

由于指定了枕头RGB图像模式,因此引发了一个异常:ValueError: not enough image data

但是np.transpose,axes还有一个附加参数:...permute the axes according to the values given.

我们只想交换0和1,而不是{},因此:grid = np.transpose(grid, (1,0,2))

还有其他类似的功能,例如grid = np.swapaxes(grid,0,1)

3。改变解释?

枕头的^{}可以用来解释ndarray与交换的轴吗?除了颜色的mode之外,它没有任何其他参数(实际上,请参见source code)。在Creates an image memory from an object exporting the array interface using the buffer protocol).

If obj is not contiguous, then the tobytes method is called and frombuffer() is used.

该函数计算出如何调用^{}(source),它为“解码器”提供了更多选项。在

TL;DR

只需交换索引变量(任意一个)!在

进一步阅读:

-https://docs.scipy.org/doc/numpy-dev/user/quickstart.html

python画图怎么确定坐标_像素坐标与绘图坐标相关推荐

  1. 【Python画图01】一张图上两条线,坐标图例设置

    一.学习背景 最近在学习python制图,准备做个模板好出图 目录 一.学习背景 二.参考 三.代码学习 1.figure语法说明 2. 一张图上2条线 3. 坐标轴取值范围.坐标轴标题.坐标轴小标 ...

  2. python提取cad坐标_怎么提取cad中坐标?CAD批量提取坐标点的三种方法

    经常有一些小伙伴问,CAD中怎么批量提取坐标点,今天给大家总结三种方法. 方法一:多段线顺序连接并提取. 1.多段线pl连接点: 2.li命令提取坐标: 3.将点位粘贴至excel,利用数据,分列,最 ...

  3. python画图程序没有图_解决python中使用plot画图,图不显示的问题

    解决python中使用plot画图,图不显示的问题 对以下数据画图结果图不显示,修改过程如下 df3 = {'chinese':109, 'American':88, 'German': 66, 'K ...

  4. 我的世界java版怎么tp坐标_我的世界tp坐标-我的世界怎么传送坐标

    我的世界怎么输入坐标指令? 在游戏中,小伙伴们如果想要传送自己到某个地方的话,有个很便捷的方法,就是直接使用坐标传送就可以啦.那么具体要怎么做呢??? 首先,在输入的时候,小伙伴们得先确认自己的坐标在 ...

  5. 相机计算坐标公式_相机标定后,从图像坐标(像素)向物理坐标的转换计算,...

    各位大侠,本人用1组35张图片,标定相机参数.分别用MATLAB和OPENCV分别标定,标定结果基本一致. 现在,我希望从标定的一副图像中(使用这幅图像标定的相机外参),计算图像上几个红点之间的在3维 ...

  6. python聚类dbscan案例经纬度_用DBSCAN聚类经纬度坐标

    用基于密度的聚类算法,计算坐标点聚集地,很好用. import pandas as pd import numpy as np from sklearn.cluster import DBSCAN f ...

  7. python提取cad坐标_教你一个CAD坐标提取的小技巧

    原标题:教你一个CAD坐标提取的小技巧 经常用CASS计算土石方的小伙伴,经常会遇到一个很大的拦路虎:拿到一张甲方提供的dwg图纸,要求用CASS进行土石方计算.顿时感觉无从下手了. 遇到这样的问题, ...

  8. python什么可以画像素图_像素级别画画—Python语言与Excel VBA的浪漫

    你伤害了Word心,还Excel而过~ 说到Excel,大部分人可能觉得没什么神秘的,不就是画个表,最多写几个函数优化吗.实在是too young too simple,前几天77岁的日本艺术家Tat ...

  9. python画图决策树算法分类_分类算法之决策树(理论篇)

    起步 决策树(decision tree)是一个树结构,可以是二叉树或非二叉树,也可以把他看作是 if-else 规则的集合,也可以认为是在特征空间上的条件概率分布. 决策树的结构 以一个简单的用于是 ...

  10. java 剪切图片点坐标_详细介绍java根据坐标截取图片的实例代码

    这篇文章主要介绍了java 根据坐标截取图片实例代码的相关资料,需要的朋友可以参考下 java 根据坐标截取图片 实例代码:代码中有不是注释,很好看懂!package com.json.test; i ...

最新文章

  1. 【Qt】Qt项目常用代码总结
  2. python多重继承
  3. page fault in nonpaged area 蓝屏_由于错误的更新,安装Windows 10 KB4549951后蓝屏死机解决办法...
  4. linux raid auto 软raid parted,linux下的raid5配置方法.doc
  5. 成功解决mnist.py:110: dense_to_one_hot (from tensorflow.contrib.learn.python.learn.datasets.mnist) is de
  6. echarts 图表配置tooltip 的formatter
  7. ROS中阶笔记(九):Movelt!机械臂控制
  8. 串口接收到的浮点数(解码后出现的错误)
  9. 独立博客网站FansUnion.cn运营2年的经验和教训以及未来规划
  10. Linux 下杀毒软件 CPU 占用率为何持续升高
  11. QoS队列调度技术详解
  12. 51nod 1130 N的阶乘的长度 V2(斯特林近似)
  13. No package ‘libpeas-1.0‘ found/No package ‘libpeas-gtk-1.0‘
  14. 剖析 |数据现代化-富国银行的数据转型之路
  15. 易优CMS:arcview的基础用法
  16. python+pdf2docx+tkinter PDF转word小工具打包成exe
  17. html5小游戏代码-2048游戏
  18. CrossApp_01
  19. 数据统计获取一年 有多少个自然周,起止时间,当前是第几个周
  20. SD卡与TF卡基础知识

热门文章

  1. leetcode刷题记录(32)-简单
  2. 物联网PaaS平台大盘点
  3. 对数幅度谱图像matlab,幅度谱 fft2绘制图像的对数幅度谱,比较图像旋转、平移和缩放后的频谱...
  4. 2022年数据分析与可视化10大案例总结
  5. STM32F103 用CS1237 /HX711 芯片制作电子秤
  6. Latex 环境配置(TexLive + Texstudio)
  7. 微信开发(六):微信卡券
  8. python 批量下载视频_python实现抖音视频批量下载
  9. Struts2,Hibernate,Spring框架学习总结
  10. amazeui学习笔记--js插件(UI增强)--警告框Alert