我有这个简单的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.
这是一个简单的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) 我需要可视化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) 我知道OpenCV中的Matlab,matplotlib样式色彩映射.该文档解释了它对C++的用法.我想知道是否存在使用cv2的python这样的选项.我google了很多,什么都没发现.我知道matplotlib的colormap选项,我可以使用,但如果cv2提供这样的选项,我可以消除将matplotlib色彩映射转换为opencv图像的开销.它笨拙.我需要它用于我的项目.
我在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)
表格并将其翻译成上面的代码.
我想从我从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文件,但是却遇到了相同的错误。这似乎是什么错?
我有以下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) 在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) 我想在我的平台上为特定设备创建上下文.但是我收到了一个错误.
码:
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.
有人可以帮我解决这个问题.
谢谢