小编Sae*_*eed的帖子

Pytorch Conv1d 处理简单的一维信号

手动完成一维卷积非常简单。然而,我想用它来实现这里nn.Conv1d所做的事情,这对我来说并不简单。在此示例中,h=[1,2,-1],x=[4,1,2,5],输出将为 y=[4,9,0,8,8,-5]。为了使用 Pytorch 做到这一点,我们需要定义h=nn.Conv1d(in, out, k)和 ,x=torch.tensor(*)并且y=h(x)应该是结果。

注意:请不要使用nn.Conv2d它来实现它。

pytorch

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

如何使用“mysql.connector”使用“pd.read_sql”

我知道我们可以sql使用不同的包来读取,mysql.connector但因为我只知道mysql.connector,我想用它来读取表格sql并将其保存为dataframepandas。我的代码如下。

import mysql.connector
import pandas as pd

mydb = mysql.connector.connect(
    host = 'localhost',
    user = 'root',
    passwd = '*',
    database = 'mydatabase'
)

mycursor = mydb.cursor()

query = "SELECT * FROM my table"
df = pd.read_sql(query, mycursor)

Run Code Online (Sandbox Code Playgroud)

我不确定最后一行,即df = pd.read_sql(query, mycursor). 我想我在这里遗漏了一些论点。你能帮我吗?

python mysql sql

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

将包含 if 的函数应用于 pandas 中数据帧的每一行,无需 for 循环

给定一个数据帧,我想获取每行的非零值,然后找到绝对值的最小值。我想要一个用户定义的函数来为我执行此操作。另外,我不想使用任何 for 循环,因为数据很大。

我的尝试

np.random.seed(5)
data = np.random.randn(16)
mask = np.random.permutation(16)[:6]
data[mask] = 0
df = pd.DataFrame(data.reshape(4,4))

          0         1         2         3
0  0.441227 -0.330870  2.430771  0.000000
1  0.000000  1.582481 -0.909232 -0.591637
2  0.000000 -0.329870 -1.192765  0.000000
3  0.000000  0.603472  0.000000 -0.700179


def udf(x):
  if x != 0:
    x_min = x.abs().min()
  return x_min
df.apply(udf, axis=1)
Run Code Online (Sandbox Code Playgroud)

我明白了ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

问题 如何解决以上问题?

期望的答案如下:

0.330870
0.591637
0.329870
0.603472
Run Code Online (Sandbox Code Playgroud)

python apply dataframe pandas

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

cv2 中的可变 fps(每秒帧数)

我用于cv2从我拥有的不同帧创建视频。创建视频时,我无法更改 fps(每秒帧数)。我希望视频在开始时较慢,但到结束时较快,这意味着开始时的 fps 较小,但到最后时较大。但是,当我实例化时,cv2.VideoWriter我无法再更改 fps。我应该怎么办?

可复制的代码

import numpy as np
import cv2, os
import matplotlib

image_size = 200
def create_image_array(image_size):
  image_array = np.random.randn(image_size, image_size)
  row = np.random.randint(0, image_size)
  image_array[row, :] = 100
  return image_array

frame_numbers = 200
for i in range(frame_numbers):
  image_array = create_image_array(image_size)
  matplotlib.image.imsave(f'./shots/frame_{i:03d}.png', image_array)

def make_a_video(shots_folder, video_path):

    shots_folder = 'shots'
    fps = 25
    images = [img for img in os.listdir(shots_folder) if img.endswith(".png")]

    images = sorted(images)[:]
    frame = cv2.imread(os.path.join(shots_folder, images[0]))
    height, width, layers = frame.shape …
Run Code Online (Sandbox Code Playgroud)

python opencv ffmpeg video-processing computer-vision

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

将视频转换为帧时,如何在使用“cv2”时更改每秒帧数(FPS)?

目前我正在使用2017_08_31_0121.mp4一个 21 秒长的视频作为我的视频,一旦我将其分解为帧,我会得到 504 帧。这意味着每秒帧数设置为 24。我想更改帧数,但我不知道以下代码的哪一部分负责设置每秒帧数。

问题:

  1. 我想了很长一段时间,默认 FPS 是 25,但现在我有 24,你能告诉我默认 FPS 在哪里设置以及它是什么吗?

  2. 如果我想使用自定义 FPS(假设为 10),我该如何修改以下代码来做到这一点?

import cv2
vidcap = cv2.VideoCapture('/content/2017_08_31_0121.mp4')
success, image = vidcap.read()
count = 0
while success:
  if count<10:
    id = f'00{count}'
  elif count < 100:
    id = f'0{count}'
  else:
    id = count
  cv2.imwrite(f"./new_frames/frame{id}.jpg", image)    # save frame as JPEG file      
  success, image = vidcap.read()
  count += 1
Run Code Online (Sandbox Code Playgroud)

python opencv

-1
推荐指数
1
解决办法
7703
查看次数