小编Ala*_*air的帖子

Python中图像的交互式像素信息?

简短版本:是否有用于显示图像的Python方法,该图像实时显示像素指数和强度?因此,当我将光标移到图像上时,我会不断更新显示,例如pixel[103,214] = 198(灰度)或pixel[103,214] = (138,24,211)rgb?

长版:

假设我打开一个保存为ndarray的灰度图像im并使用imshowmatplotlib 显示它:

im = plt.imread('image.png')
plt.imshow(im,cm.gray)
Run Code Online (Sandbox Code Playgroud)

我得到的是图像,在窗口框架的右下角,是像素索引的交互式显示.除了它们不完全,因为值不是整数:x=134.64 y=129.169例如.

如果我以正确的分辨率设置显示器:

plt.axis('equal')
Run Code Online (Sandbox Code Playgroud)

x和y值仍然不是整数.

imshow从方法spectral包做一个更好的工作:

import spectral as spc
spc.imshow(im)
Run Code Online (Sandbox Code Playgroud)

然后在右下角我现在有了pixel=[103,152]例如.

但是,这些方法都没有显示像素值.所以我有两个问题:

  1. 可以强制imshowfrom matplotlib(和imshowfrom scikit-image)显示正确的(整数)像素索引吗?
  2. 可以扩展这些方法中的任何一个以显示像素值吗?

python image image-processing matplotlib scikit-image

24
推荐指数
2
解决办法
2万
查看次数

Python:类型和dtypes之间的混淆

假设我输入:

a = uint8(200)
a*2
Run Code Online (Sandbox Code Playgroud)

然后结果是400,并且重铸为uint16类型.

然而:

a = array([200],dtype=uint8)
a*2
Run Code Online (Sandbox Code Playgroud)

结果是

array([144], dtype=uint8)
Run Code Online (Sandbox Code Playgroud)

乘法已经以256为模进行,以确保结果保持在一个字节中.

我对"类型"和"dtypes"感到困惑,其中一个用于优先于另一个.如您所见,类型可能会对输出产生显着影响.

例如,我可以创建单个数量的dtype uint8,以便对该数字的操作将以256为模进行吗?或者,我可以创建一个类型(不是dtype)uint8的数组,以便对它的操作产生超出0-255范围的值吗?

python types numpy unsigned-integer

10
推荐指数
3
解决办法
5110
查看次数

在Octave中显示图像的像素值?

例如,如果我加载并显示图像

c = imread('cameraman.tif');
imshow(c)
Run Code Online (Sandbox Code Playgroud)

然后在绘图窗口中,在图像本身下,有两个数字表示当前光标位置的形式

[39.25, 120.6]
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 是否可以调整显示以使位置为整数?那么每个屏幕像素一个像素?
  2. 此信息是否可以包含像素的灰度/ rgb值,例如

    [23, 46] = 127

    要么

    [23, 46] = (46,128,210)

我试过摆弄"轴"命令,但我找不到任何有用的东西.

我想我想要的是类似Matlab的"像素信息工具" impixelinfo:http: //www.mathworks.com.au/help/images/ref/impixelinfo.html虽然我知道来自octave图像wiki的http:// wiki .octave.org/Image_packageimpixelinfo不是在目前八音实施.但也许有另一种方法可以达到相同的效果?

我在linux(Ubuntu 12.04)下使用Octave-3.8.0,图像包2.2.0.

plot image octave pixels

7
推荐指数
1
解决办法
2506
查看次数

Python 模块:函数相互调用

我让自己很困惑。我有一组 python 函数,所有这些函数都放在一个名为 (假设) 的文件中useful.py。然后我可以将模块读入我的 ipython

 import useful as uf
Run Code Online (Sandbox Code Playgroud)

然后我可以访问各个功能

 uf.meaning_of_life()
Run Code Online (Sandbox Code Playgroud)

等等。标准的东西。

但是 - 此文件中的某些函数会调用其他函数。我可以随时使用 调用单个函数uf.,但是相互调用的函数呢?如果一个被调用的函数eat引用了另一个被调用的函数chew,如何eat知道在哪里找到chew?我可以调用 asuf.eatuf.chew

我可以通过简单地执行execfile('useful.py')非常有效的操作来忽略所有这些,但我想更多地了解模块系统。

目前,当import我尝试使用我的函数时会产生错误;当我使用时execfile一切正常。

我很欣赏这可能会被解释为初学者的问题,但我是从 Matlab 背景开始接触 Python 的,我自然倾向于使用execfile. 非常欢迎指向信息的指针。

python python-import execfile

6
推荐指数
2
解决办法
4694
查看次数

在算术运算中将 NaN 视为零?

这是我正在努力解决的事情的一个简单示例:

In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: test = pd.DataFrame(np.random.randn(4,4),columns=list('ABCD'))
In [4]: for i in range(4):
  ....:    test.iloc[i,i] = np.nan

In [5]: test
Out[5]:
           A         B         C         D
0        NaN  0.136841 -0.854138 -1.890888
1  -1.261724       NaN  0.875647  1.312823
2   1.130999 -0.208402       NaN  0.256644
3  -0.158458 -0.305250  0.902756       NaN 
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用sum对行求和,所有NaN值都被视为零:

In [6]: test['Sum'] = test.loc[:,'A':'D'].sum(axis=1)

In [7]: test
Out[7]: 
          A         B         C         D       Sum
0       NaN  0.136841 -0.854138 -1.890888 …
Run Code Online (Sandbox Code Playgroud)

python nan pandas

5
推荐指数
1
解决办法
5870
查看次数

使用scikit-image进行图像过滤?

我正在从Matlab背景转向python,并且我还有一些基本的操作我还没有用Python/skimage来征服:

  1. 如何将用户生成的线性过滤器(以小型2d数组给出)应用于图像?我可以用scipy.ndimage.convolve来做,但是在skimage中有一个方法吗?

  2. 在Matlab中,图像过滤总是返回与其输入相同的数字类型的结果,无论是uint8还是float.skimage的行为方式是否相同?

  3. 在某处,skimage是否包含不清晰的遮蔽物?(我在PIL中发现了一个非锐化的屏蔽过滤器,但这有点痛苦,因为PIL使用自己的Image类,而不是ndarrays).

  4. 有没有一种方法,可能类似于Matlab的"colfilt",用户可以通过它将非线性滤镜应用于图像?这个想法是用户提供一个功能,从3x3阵列产生一个数字,比如说; 然后该功能作为空间滤镜应用于整个图像.

python python-imaging-library scikit-image

3
推荐指数
1
解决办法
8177
查看次数

Haskell:从ghci提示中读取表达式为Integers?

我正在尝试一些数论函数,并处理大整数.但是,我希望能够从提示符中读取表达式.我有一个定义的函数

factor :: Integer -> Integer
Run Code Online (Sandbox Code Playgroud)

如果我进入

ghci> factor 2047
Run Code Online (Sandbox Code Playgroud)

它工作正常.但我无法进入

ghci> factor 2^11-1
Run Code Online (Sandbox Code Playgroud)

因为表达式2^11-1没有被评估(在提示符下)到Integer.我可以绕过这个

ghci> factor (toInteger 2^11-1)
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有办法自动将表达式读作Integer值?

haskell types numbers

2
推荐指数
1
解决办法
85
查看次数

Zsh:从下划线更改行编辑光标吗?

如果我尝试编辑先前的shell命令(通过历史记录键获得),则光标变为下划线。如果该命令涉及目录或文件名,则已经加了下划线,因此光标就消失了。

我正在使用zprezto-如何更改光标字符或形状?

command-line zsh edit cursor

1
推荐指数
1
解决办法
1303
查看次数