当从OpenCV视频处理python教程运行示例时,它们都会弹出一个专用窗口.我知道IPython笔记本可以显示来自磁盘和YouTube的视频,所以我想知道是否有办法将OpenCV视频播放引导到Notebook浏览器并让它在输出单元中播放而不是单独的窗口(最好不保存它)到磁盘,然后从那里播放).
以下是OpenCV教程中的代码.
import cv2
cap = cv2.VideoCapture('/path/to/video')
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud) 我正在尝试找到一种最快的方法来从目录中读取一堆图像到一个numpy数组.我的最终目标是计算所有这些图像中像素的最大值,最小值和第n百分位数等统计数据.当所有图像中的像素都在一个大的numpy数组中时,这是直截了当的,因为我可以使用内置的数组方法,如.max和.min,以及np.percentile函数.
下面是一些具有25个tiff图像(512x512像素)的示例时序.这些基准测试来自%%timit于jupyter-notebook中的使用.差异太小,不足以对25张图片产生任何实际影响,但我打算将来阅读数千张图片.
# Imports
import os
import skimage.io as io
import numpy as np
Run Code Online (Sandbox Code Playgroud)
附加到列表
%%timeit
imgs = []
img_path = '/path/to/imgs/'
for img in os.listdir(img_path):
imgs.append(io.imread(os.path.join(img_path, img)))
## 32.2 ms ± 355 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
Run Code Online (Sandbox Code Playgroud)使用字典
%%timeit
imgs = {}
img_path = '/path/to/imgs/'
for img in os.listdir(img_path):
imgs[num] = io.imread(os.path.join(img_path, img))
## 33.3 ms ± 402 ms per loop (mean ± …Run Code Online (Sandbox Code Playgroud)在pandas和中seaborn,可以使用with关键字临时更改显示/绘图选项,该关键字仅将指定的设置应用于缩进代码,同时保持全局设置不变:
print(pd.get_option("display.max_rows"))
with pd.option_context("display.max_rows",10):
print(pd.get_option("display.max_rows"))
print(pd.get_option("display.max_rows"))
Run Code Online (Sandbox Code Playgroud)
日期:
60
10
60
Run Code Online (Sandbox Code Playgroud)
当我同样尝试with mpl.rcdefaults():或者with mpl.rc('lines', linewidth=2, color='r'):,我收到AttributeError: __exit__.
有没有办法临时更改matplotlib中的rcParams,以便它们只适用于选定的代码子集,还是我必须手动来回切换?
最近我正在学习Plotly express和Altair/Vega-Lite进行交互式绘图。他们两个都令人印象深刻,我想知道他们的优点和缺点是什么。特别是对于创建交互式情节,它们之间有什么大的区别,什么时候比另一个更合适?
我的数据帧为零,为最低值.我试图使用precision和include_lowest参数pandas.cut(),但我不能得到间隔由整数组成而不是浮点数与一个小数.我也不能让最左边的间隔停在零.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style='white', font_scale=1.3)
df = pd.DataFrame(range(0,389,8)[:-1], columns=['value'])
df['binned_df_pd'] = pd.cut(df.value, bins=7, precision=0, include_lowest=True)
sns.pointplot(x='binned_df_pd', y='value', data=df)
plt.xticks(rotation=30, ha='right')
Run Code Online (Sandbox Code Playgroud)
我已经尝试设置precision为-1,0和1,但它们都输出一个十进制浮点数.在pandas.cut()帮助没有提及的是,X-min和X-MAX值扩展与X系列的0.1%,但我想,也许include_lowest能在某种程度上抑制这种行为.我目前的解决方法涉及导入numpy:
import numpy as np
bin_counts, edges = np.histogram(df.value, bins=7)
edges = [int(x) for x in edges]
df['binned_df_np'] = pd.cut(df.value, bins=edges, include_lowest=True)
sns.pointplot(x='binned_df_np', y='value', data=df)
plt.xticks(rotation=30, ha='right')
Run Code Online (Sandbox Code Playgroud)
有没有办法在pandas.cut()不使用numpy的情况下直接获得非负整数作为区间边界?
编辑:我刚注意到指定right=False使最低间隔移到0而不是-0.4.它似乎优先于include_lowest,因为改变后者并没有任何明显的效果right=False.仍然使用一个小数点指定以下间隔.
在matplotlib中,除了整个图的标题集和每个单独的图的标题集之外,是否可以为每行子图设置一个单独的标题?这将对应于下图中的橙色文本.

如果没有,你会如何解决这个问题?在左侧创建一个单独的空子图列,并用橙色文本填充它们?
我知道可以使用text()或手动定位每个单独的标题annotate(),但这通常需要大量的调整,我有很多子图.有更顺畅的解决方案吗?
这是对我之前的问题的回答的后续跟进将数千个图像读入一个大的numpy数组的最快方法.
在第2.3章"ndarray的内存分配"中,Travis Oliphant写了以下关于如何在内存中访问C-ordered numpy数组的索引.
...按顺序移动计算机内存,最后一个索引首先递增,然后是倒数第二个索引,依此类推.
这可以通过对两个第一个或最后两个索引的二维数组的访问时间进行基准测试来确认(对于我的目的,这是加载500个大小为512x512像素的图像的模拟):
import numpy as np
N = 512
n = 500
a = np.random.randint(0,255,(N,N))
def last_and_second_last():
'''Store along the two last indexes'''
imgs = np.empty((n,N,N), dtype='uint16')
for num in range(n):
imgs[num,:,:] = a
return imgs
def second_and_third_last():
'''Store along the two first indexes'''
imgs = np.empty((N,N,n), dtype='uint16')
for num in range(n):
imgs[:,:,num] = a
return imgs
Run Code Online (Sandbox Code Playgroud)
基准
In [2]: %timeit last_and_second_last()
136 ms ± 2.18 ms per loop (mean …Run Code Online (Sandbox Code Playgroud) 我可以在单个系列条形图上绘制误差条,如下所示:
import pandas as pd
df = pd.DataFrame([[4,6,1,3], [5,7,5,2]], columns = ['mean1', 'mean2', 'std1', 'std2'], index=['A', 'B'])
print(df)
mean1 mean2 std1 std2
A 4 6 1 3
B 5 7 5 2
df['mean1'].plot(kind='bar', yerr=df['std1'], alpha = 0.5,error_kw=dict(ecolor='k'))
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,索引A的平均值与同一索引的标准偏差配对,误差条显示该值的+/-.
但是,当我尝试在同一个图中同时绘制'mean1'和'mean2'时,我不能以相同的方式使用标准偏差:
df[['mean1', 'mean2']].plot(kind='bar', yerr=df[['std1', 'std2']], alpha = 0.5,error_kw=dict(ecolor='k'))
Traceback (most recent call last):
File "<ipython-input-587-23614d88a3c5>", line 1, in <module>
df[['mean1', 'mean2']].plot(kind='bar', yerr=df[['std1', 'std2']], alpha = 0.5,error_kw=dict(ecolor='k'))
File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\tools\plotting.py", line 1705, in plot_frame
plot_obj.generate()
File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\tools\plotting.py", line 878, in generate
self._make_plot()
File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\tools\plotting.py", …Run Code Online (Sandbox Code Playgroud) 我正在使用Anaconda来管理我的R-installation.它适用于Anaconda提供的R-channel中可用的软件包,但我在安装Anaconda repos中未包含的软件包时遇到了麻烦.
我尝试了几种不同的方法,下面列出了它们的错误输出.
install.packages('rafalib')建议在这里工作conda - 如何安装"R-essentials"中没有的R包?.我的.libPaths()观点'/home/user/anaconda2/lib/R/library'.
日期:
--- Please select a CRAN mirror for use in this session ---
Error in download.file(url, destfile = f, quiet = TRUE) :
unsupported URL scheme
Error: .onLoad failed in loadNamespace() for 'tcltk', details:
call: fun(libname, pkgname)
error: Can't find a usable init.tcl in the following directories:
/opt/anaconda1anaconda2anaconda3/lib/tcl8.5 ./lib/tcl8.5 ./lib/tcl8.5 ./library ./library ./tcl8.5.18/library ./tcl8.5.18/library
This probably means that Tcl wasn't installed properly.
Run Code Online (Sandbox Code Playgroud)
我tcl从conda频道安装r-old …
我喜欢PerformanceAnalyticsR包的chart.Correlation功能中的这个相关矩阵:
我怎样才能在Python中创建它?我见过的相关矩阵图主要是热图,例如这个seaborn例子.