小编Mat*_*sse的帖子

如何使用matplotlib/numpy将数组保存为灰度图像?

我试图将128x128像素的numpy数组保存到灰度图像中.我只是认为pyplot.imsave函数可以完成这项工作,但事实并非如此,它以某种方式将我的数组转换为RGB图像.我试图在转换过程中将色彩映射强制为灰色,但即使保存的图像以灰度显示,它仍然具有128x128x4维度.这是我编写的代码示例,用于显示行为:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mplimg
from matplotlib import cm

x_tot = 10e-3
nx = 128

x = np.arange(-x_tot/2, x_tot/2, x_tot/nx)

[X, Y] = np.meshgrid(x,x)
R = np.sqrt(X**2 + Y**2)

diam = 5e-3
I = np.exp(-2*(2*R/diam)**4)

plt.figure()
plt.imshow(I, extent = [-x_tot/2, x_tot/2, -x_tot/2, x_tot/2])

print I.shape

plt.imsave('image.png', I)
I2 = plt.imread('image.png')
print I2.shape

mplimg.imsave('image2.png',np.uint8(I), cmap = cm.gray)
testImg = plt.imread('image2.png')
print testImg.shape
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,"打印"功能的结果是(128,128,4).

任何人都可以解释为什么imsave函数创建那些维度尽管我的输入数组是亮度类型?当然,有没有人有解决方案将阵列保存为标准灰度格式?

谢谢!

python arrays numpy image matplotlib

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

Tkinter Checkbutton和事件回调函数

这是我在Effbot网站上找到的一个小代码示例,它接近我想要在我的一个程序中执行的操作:

from Tkinter import *

fen =Tk()

class test_Tk_class:
    def __init__(self):
        self.var = IntVar()
        c = Checkbutton(
            fen, text="Enable Tab",
            variable=self.var,
            command=self.cb)
        c.pack()

    def cb(self,event):
        print "variable is", self.var.get()

    a = test_Tk_class()
    fen.mainloop()
Run Code Online (Sandbox Code Playgroud)

但是这段代码不起作用.回调函数cb不起作用,因为它需要2个参数而没有给出.你如何指定event参数?

python events tkinter

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

在 matplotlib 图像上清除覆盖散布

所以我又回到了另一个愚蠢的问题。考虑这段代码

x = linspace(-10,10,100);
[X,Y]=meshgrid(x,x)
g = np.exp(-(square(X)+square(Y))/2)
plt.imshow(g)
scat = plt.scatter(50,50,c='r',marker='+')
Run Code Online (Sandbox Code Playgroud)

有没有办法只清除图形上的散点而不清除所有图像?事实上,我正在编写一个代码,其中散点的外观与 Tkinter Checkbutton 绑定,我希望它在单击/取消单击按钮时出现/消失。

谢谢你的帮助!

python matplotlib

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

将 TForm 作为参数传递给函数

我有一个包含多个表单的应用程序。其中两个非常相似,它们具有共同的 VCL 对象(标签、图像等)形式的特征,我将其命名为相同的。我想在特定类中有一个函数,它可以接受这两个 Form 之一作为参数,以便修改它们共有的参数。我遇到的解决方案似乎不起作用。

由于我的应用程序非常大且复杂,我使用一个小示例复制了该问题。首先,下面是我的 MainForm 的一个例子:

在此处输入图片说明

以及一个子表单的示例(它们都以类似的方式排列)

在此处输入图片说明

我有一个额外的类,用于填写子表单上的编辑。这个类的代码如下:

#pragma hdrstop

#include "master_class.h"
#include "sub_Form2.h"
#include "sub_Form3.h"
#include "sub_Form4.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)

Master::Master(void)
{

}

Master::~Master(void)
{

 }

 void Master::WriteToForm(TForm* Form)
{
TForm2* curForm = static_cast<TForm2*>(Form);

TForm3* self = dynamic_cast<TForm3*>(Form);
TForm2* self2 = dynamic_cast<TForm2*>(Form);

if (self != NULL && self2 == NULL) {
    TForm3* curForm = static_cast<TForm3*>(Form);
}

else if (self == NULL && self2 != NULL) {
    TForm2* curForm = static_cast<TForm2*>(Form);
}

curForm -> Edit1 -> Text = …
Run Code Online (Sandbox Code Playgroud)

c++ vcl c++builder

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

标签 统计

python ×3

matplotlib ×2

arrays ×1

c++ ×1

c++builder ×1

events ×1

image ×1

numpy ×1

tkinter ×1

vcl ×1