我正在开发一个需要 OpenCV 函数来绘制图像的项目。我正在尝试在 Google Colab 中使用以下代码显示图像。但输出中没有显示任何内容。有人可以帮我解决这个问题吗?
%pylab notebook
import cv2
testim = imread('butterfly.jpg')
figure()
imshow(testim)
plt.show()
Run Code Online (Sandbox Code Playgroud)
截屏:
当我使用ffmpeg转换m3u8为 时mp4,我收到一些警告,
ffmpeg -i xx.m3u8 -c copy demo.mp4
Run Code Online (Sandbox Code Playgroud)
警告是
Non-monotonous DTS in output stream 0:1; previous: 3277744, current: 3276712; changing to 3277745. This may result in incorrect timestamps in the output file.
Non-monotonous DTS in output stream 0:1; previous: 3277745, current: 3277736; changing to 3277746. This may result in incorrect timestamps in the output file.
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能解决它?
我有很多webp format images in a folder but with .jpg` 扩展名
abc-test.jpg
Run Code Online (Sandbox Code Playgroud)
这是一个webp格式图像。我希望它以.png相同名称的格式转换,因为我使用了这个命令并且它有效
find . -name "*.jpg" -exec dwebp {} -o {}.png \;
Run Code Online (Sandbox Code Playgroud)
它将所有webp图像转换为,.png但问题是它正在保存这样的图像:
abc-test.jpg.png
Run Code Online (Sandbox Code Playgroud)
如何在没有.jpg扩展名的情况下保存它
abc-test.png
Run Code Online (Sandbox Code Playgroud) 我在找一些例子显示之间的差异numpy.asanyarray()和numpy.asarray()?在什么情况下我应该专门使用 asanyarray()?
为什么numpy.polyfit和numpy.polynomial.polynomial.polyfit
在下面的测试产生不同的情节?
import numpy as np
from numpy.polynomial.polynomial import polyfit
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 50)
y = 5 * x + 10 + (np.random.random(len(x)) - 0.5) * 5
plt.scatter(x, y,marker='.', label='Data for regression')
plt.plot(np.unique(x), np.poly1d(np.polyfit(x, y, 1))(np.unique(x)),
label='numpy.polyfit')
plt.plot(np.unique(x), np.poly1d(polyfit(x, y, 1))(np.unique(x)),
label='polynomial.polyfit')
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
当在底图投影(或 cartopy 投影)上使用 pcolormesh 绘制数据时,我注意到当我将 alpha 值设置为小于 1 时,会出现奇怪的线条。
示例代码:
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
plt.clf()
dpp =1 # degrees per pixel
lons = np.arange(-180,180+dpp,dpp)
lats = -1*np.arange(-90,90+dpp,dpp)
m = Basemap(projection='robin',lon_0=0)
data = np.random.random((np.size(lats), np.size(lons)))
lons, lats = np.meshgrid(lons, lats)
x, y = m(lons, lats)
im = m.pcolormesh(x, y, x, latlon=False, cmap='RdBu')
#im = m.pcolormesh(lons, lats, data, latlon=True, cmap='RdBu')
m.colorbar(im)
plt.show()
Run Code Online (Sandbox Code Playgroud)
输出显示出现奇怪的行:
如果我设置 alpha=1,线条就会消失并且行为符合预期:
关于如何让 pcolormesh 使用非零 alpha 值有什么想法吗?
在发布问题之前我浏览了以下链接。
我无法为我的示例复制提供的解决方案。
这是我的数据框和代码。我想将图例保存为单独的图像。
df=pd.DataFrame(index=['A','B','C','D'], columns=['Values'])
df['Values'] = [0.45,0.28,0.21,0.3]
fig=plt.figure(figsize=(8,8))
ax1 = plt.subplot(121, aspect='equal')
df['Values'].dropna().plot(kind='pie', autopct='%1.0f%%', startangle=220, labels=None,
colors=['#002c4b','#392e2c','#92847a','#ccc2bb','#6b879d'])
patches, labels = ax1.get_legend_handles_labels()
pp = ax1.legend(patches, labels=df.index, loc='center right', bbox_to_anchor=(0, 0.5),
fontsize=8, frameon=False, labelspacing=4)
ax1.axis('off')
plt.ylabel('')
img_name = 'unit1.png'
plt.savefig(img_name,bbox_inches='tight', dpi = 300)
plt.close(fig)
Run Code Online (Sandbox Code Playgroud)
请提出前进的方向。
我不明白为什么polynomial.Polynomial.fit()给出的系数与预期系数非常不同:
import numpy as np
x = np.linspace(0, 10, 50)
y = x**2 + 5 * x + 10
print(np.polyfit(x, y, 2))
print(np.polynomial.polynomial.polyfit(x, y, 2))
print(np.polynomial.polynomial.Polynomial.fit(x, y, 2))
Run Code Online (Sandbox Code Playgroud)
给出:
import numpy as np
x = np.linspace(0, 10, 50)
y = x**2 + 5 * x + 10
print(np.polyfit(x, y, 2))
print(np.polynomial.polynomial.polyfit(x, y, 2))
print(np.polynomial.polynomial.Polynomial.fit(x, y, 2))
Run Code Online (Sandbox Code Playgroud)
前两个结果都可以,感谢这个答案,我明白为什么两个数组的顺序相反。
但是,我不明白第三个结果的含义。尽管我以这种方式得到的多项式似乎给出了正确的预测值,但系数看起来是错误的。
我正在编写一个条形图函数,并遇到了另一个小问题。我有一些 ytick 标签太长,导致我的 y 轴标签看不到。只有当我大幅减小 ytick 标签的大小时,我才能看到 y 标签。
def bar_plot(data, x, y, title):
sns.set_style('darkgrid')
data = data.sort_values(ascending=False, by=x)
data = data.head(n=10)
if (data[x]>1000000).any():
data[x] = data[x] / 1000000
ax = sns.barplot(data=data, x=x, y=y)
ax.set_title(title, size=35)
ax.set_xlabel(x + ' ($ Millions)', size=15)
ax.set_ylabel(y, size=15)
ax.set_yticklabels(data[y].head(n=10), wrap=True)
else:
ax = sns.barplot(data=data, x=x, y=y)
ax.set_xlabel(x, size=15)
ax.set_ylabel(y, size=15)
ax.set_title(title, size=35)
ax.set_yticklabels(data[y].head(n=10), wrap=True)
Run Code Online (Sandbox Code Playgroud)
我尝试过ax.set_yticklabels(data[y].head(n=10), wrap=True)将文本换行。虽然它有效,但它对文本的换行还不够。有没有办法告诉wrap=Truex 个字符后换行?我试过用谷歌搜索这个,但找不到任何有效的东西。
编辑
我正在使用的数据框的格式类似于
def bar_plot(data, x, y, title):
sns.set_style('darkgrid')
data = data.sort_values(ascending=False, by=x)
data …Run Code Online (Sandbox Code Playgroud) 我试图将两个图表绘制到一个图形上,两个图表都来自同一个数据框,但一个表示为堆积条形图,另一个表示为简单的折线图。
当我使用以下代码创建绘图时:
combined.iloc[:, 1:10].plot(kind='bar', stacked=True, figsize=(20,10))
combined.iloc[:, 0].plot(kind='line', secondary_y=True, use_index=False, linestyle='-', marker='o')
plt.legend(loc='upper left', fancybox=True, framealpha=1, shadow=True, borderpad=1)
plt.show()
Run Code Online (Sandbox Code Playgroud)
随着combined数据帧寻找这样的:
我得到以下图像:
我试图将两个图例合二为一,并将图例放置在左上角,以便所有图表都可见。
有人可以解释为什么plt.legend()似乎只编辑与combined.iloc[:, 0]我的combined数据框切片相对应的折线图吗?如果有人能看到一种快速简便的组合和重新定位图例的方法,请告诉我!我将不胜感激。