小编Yas*_*ash的帖子

使用matplotlib显示图像序列

我有这个简单的python脚本使用OpenCV从文件夹加载图像并在循环中显示它们.我想用这个效果重现这个效果matplotlib.

import cv2 as cv
import os

im_files = [for f in os.listdir('.') if f[-3:] == 'png']

for f in im_files:
    im = cv.imread(f, 0) #read image in greyscale
    cv.imshow('display', im)
    cv.waitKey(1)

cv.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

我尝试了以下脚本,但打开以显示图表的pyplot窗口变得无法响应.

import pylab as pl
import os

files = [f for f in os.listdir('.') if f[-3:] == 'png']
pl.ion()
for f in files:
    im=pl.imread(f)
    pl.imshow(im)
    pl.draw()
Run Code Online (Sandbox Code Playgroud)

我google了很多但找不到任何解决方案.我该怎么做呢?我在Windows 8上使用Anaconda 1.6 32bit.

python opencv matplotlib

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

OpenCL矩阵乘法 - 得到错误的答案

这是一个简单的OpenCL矩阵乘法内核,它让我发疯:

顺便说一句,我正在使用pyopencl.

__kernel void matrixMul(  __global int* C,
                          __global int* A,
                          __global int* B,
                          int wA, int wB){

                int row = get_global_id(1); //2D Threas ID x
                int col = get_global_id(0); //2D Threas ID y

                //Perform dot-product accumulated into value
                int value = 0;
                for ( int k = 0; k < wA; k++ ){
                    value += A[row*wA + k] * B[k*wB+col];
                }
                C[row*wA+col] = value; //Write to the device memory
            }
Run Code Online (Sandbox Code Playgroud)

哪里(输入)

A = [72 45
     75 61]
B = …
Run Code Online (Sandbox Code Playgroud)

python opencl pyopencl

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

有没有办法将pyplot.imshow()对象转换为numpy数组?

我需要可视化2D numpy数组.我正在使用pyplot.这是代码:

import cv2 as cv
import numpy as np
from matplotlib import pyplot

img = pyplot.imshow( radiance_val )
#radiance_val is a 2D numpy array of size = ( 512, 512 ) 
#filled with np.float32 values

pyplot.show()
Run Code Online (Sandbox Code Playgroud)

我按预期获得输出.

现在我的问题是,有没有办法将上面的代码中的"img"从pyplot类型转换为numpy类型.我需要这个,以便我可以将可视化加载为opencv图像并对其执行进一步处理.我正在使用python 2.7,32位.

请帮助

谢谢


编辑1:在Thorsten Kranz的解决方案之后

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
import PIL
from cStringIO import StringIO

frame1 = plt.gca()
frame1.axes.get_xaxis().set_visible(False)
frame1.axes.get_yaxis().set_visible(False)
plt.imshow(np.random.random((10,10)))

buffer_ = StringIO()
plt.savefig( buffer_, format = "png", bbox_inches = 'tight', pad_inches …
Run Code Online (Sandbox Code Playgroud)

python opencv numpy matplotlib

5
推荐指数
2
解决办法
8768
查看次数

python中有OpenCV colormap吗?

我知道OpenCV中Matlab,matplotlib样式色彩映射.该文档解释了它对C++的用法.我想知道是否存在使用cv2的python这样的选项.我google了很多,什么都没发现.我知道matplotlib的colormap选项,我可以使用,但如果cv2提供这样的选项,我可以消除将matplotlib色彩映射转换为opencv图像的开销.它笨拙.我需要它用于我的项目.

python opencv

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

使用pyplot返回复杂值的绘图函数

我在Facebook上发现了这个图像,想要绘制它,因为我认为这将是一个学习新东西的好机会.

 爱情配方

代码:

import numpy as np
import scipy.special
import pylab

x = np.linspace( -1.0, 1.0, 200 )
y = np.sqrt(  1-np.square(np.complex64(x) ) ) + np.complex64( scipy.special.cbrt( np.square( x ) ) )
pylab.plot( np.complex64( x ), y )
pylab.show()
Run Code Online (Sandbox Code Playgroud)

输出:

IMG http://i45.tinypic.com/33ab5g2.png

我无法获得图中给出的情节.为了绘图,我将公式重新排序为y = f(x)表格并将其翻译成上面的代码.

python numpy matplotlib scipy

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

使用python的h5py包读取hdf文件时出错

我想从我从MODIS网站下载的hdf文件中提取数据。链接中提供了一个样本文件。我正在使用以下代码行读取hdf文件:

>>> import h5py
>>> f = h5py.File( 'MYD08_M3.A2002182.051.2008334061251.psgscs_000500751197.hdf', 'r' )
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

Traceback (most recent call last):
    File "<pyshell#3>", line 1, in <module>
f = h5py.File( 'MYD08_M3.A2002182.051.2008334061251.psgscs_000500751197.hdf', 'r' )
    File "C:\Python27\lib\site-packages\h5py\_hl\files.py", line 165, in __init__
fid = make_fid(name, mode, userblock_size, fapl)
    File "C:\Python27\lib\site-packages\h5py\_hl\files.py", line 57, in make_fid
fid = h5f.open(name, h5f.ACC_RDONLY, fapl=fapl)
    File "h5f.pyx", line 70, in h5py.h5f.open (h5py\h5f.c:1640)
IOError: unable to open file (File accessability: Unable to open file)
Run Code Online (Sandbox Code Playgroud)

我已经尝试了其他来自不同来源的其他hdf文件,但是却遇到了相同的错误。这似乎是什么错?

python h5py

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

运行通过ssh嵌套引号的shell命令

我有以下shell命令:

ssh user@host "df | grep /dev/ | \
awk 'BEGIN{print "DISK", "%USAGE", "STATUS"} {split($5, a, "%"); \
var="GREEN"; print $1, $5, var}' | column -t"
Run Code Online (Sandbox Code Playgroud)

我需要在ssh上运行它,但由于嵌套的双引号和单引号的存在,我得到语法错误.

我在引号的开头和结尾之前尝试了转义符,但它没有解决问题.

但是,在运行本地系统时,将提供以下输出:

$ df | grep /dev/ | \
awk 'BEGIN{print "DISK", "%USAGE", "STATUS"} {split($5, a, "%"); \
var="GREEN"; print $1, $5, var}' | column -t
DISK       %USAGE  STATUS
/dev/sda1  95%     GREEN
Run Code Online (Sandbox Code Playgroud)

bash shell quoting

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

如何在matlab风格中复制numpy数组

在matlab/GNU Octave(我实际上正在使用)中,我使用此方法将2D数组的特定元素复制到另一个2D数组:

B(2:6, 2:6) = A
Run Code Online (Sandbox Code Playgroud)

哪里

size(A) = (5, 5)
Run Code Online (Sandbox Code Playgroud)

我的问题是,"如何在使用numpy的python中实现这一目标?" 目前,例如,我在python中使用以下嵌套循环:

>>> import numpy as np
>>> a = np.int32(np.random.rand(5,5)*10)
>>> b = np.zeros((6,6), dtype = np.int32)

>>> print a
[[6 7 5 1 3]
 [3 9 7 2 0]
 [9 3 7 6 7]
 [9 8 2 0 8]
 [8 7 7 9 9]]
>>> print b
[[0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0],
 [0, 0, …
Run Code Online (Sandbox Code Playgroud)

python matlab

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

Scikit的ExtraTreeRegressor考虑的特征学习构建随机森林

我遇到了这个涉及测试数据集完成面的示例.这里,32for 的值max_features传递给ExtraTreesRegressor()函数.我了解到构造了决策树,它从输入数据集中选择随机特征.对于上述链接的示例,图像用作训练和测试数据集.此Wiki页面描述了各种类型的图像功能.现在,我无法理解剂量sklearn.ensemble.ExtraTreeRegressor寻找的哪些特征或从作为输入提供的图像数据集中提取以构建随机森林.此外,如何确定值32是最佳的max_features.请帮我解决一下这个.

python machine-learning random-forest scikit-learn

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

错误:pyopencl:为特定设备创建上下文

我想在我的平台上为特定设备创建上下文.但是我收到了一个错误.

码:

import pyopencl as cl
platform = cl.get_platforms()
devices = platform[0].get_devices(cl.device_type.GPU)
ctx = cl.Context(devices[0])
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

Traceback (most recent call last):
  File "D:\Programming\Programs_OpenCL_Python\Matrix Multiplication\3\main3.py", line 16, in <module>
    ctx = cl.Context(devices[0])
AttributeError: 'Device' object has no attribute '__iter__'
Run Code Online (Sandbox Code Playgroud)

如果我使用以下程序编译并执行没有任何错误和警告:

ctx = cl.create_some_context()
Run Code Online (Sandbox Code Playgroud)

但是每次执行程序时我都必须手动选择设备类型.我可以设置以下环境变量

PYOPENCL_CTX='0'
Run Code Online (Sandbox Code Playgroud)

使用此功能,我将无法根据要求为不同的设备创建上下文.对于我创建的所有上下文,它将默认设置为设备0.

有人可以帮我解决这个问题.

谢谢

python opencl pyopencl

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