小编ntd*_*ntd的帖子

AttributeError: 模块“cv2”没有属性“createStereoBM”

我试图运行 OpenCV 文档中的代码来从左右立体图像创建视差图像,但它给了我一个错误。这是我运行的代码。

import cv2
from matplotlib import pyplot as plt

imgL = cv2.imread(r'D:\left.png', 0)
imgR = cv2.imread(r'D:\right.png', 0)

stereo = cv2.createStereoBM(numDisparities=16, blockSize=15)
disparity = stereo.compute(imgL, imgR)
plt.imshow(disparity, 'gray')
plt.show()
Run Code Online (Sandbox Code Playgroud)

我在行中遇到错误

stereo = cv2.createStereoBM(numDisparities=16, blockSize=15)
Run Code Online (Sandbox Code Playgroud)

这是错误

AttributeError: module 'cv2' has no attribute 'createStereoBM'
Run Code Online (Sandbox Code Playgroud)

我尝试了之前在 stackoverflow、github 和其他论坛上列出的许多其他解决方案,但似乎没有一个有效。

可以在此处找到 OpenCV 文档的链接

任何帮助将不胜感激。谢谢。

python opencv stereo-3d

7
推荐指数
1
解决办法
5366
查看次数

如何在PyTorch中清除Cuda内存

我正在尝试获取已经训练过的神经网络的输出。输入是大小为300x300的图像。我使用的批量大小为1,但是CUDA error: out of memory成功获取25张图像的输出后,仍然出现错误。

我在网上搜索了一些解决方案并遇到了torch.cuda.empty_cache()。但这似乎仍不能解决问题。

这是我正在使用的代码。

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

train_x = torch.tensor(train_x, dtype=torch.float32).view(-1, 1, 300, 300)
train_x = train_x.to(device)
dataloader = torch.utils.data.DataLoader(train_x, batch_size=1, shuffle=False)

right = []
for i, left in enumerate(dataloader):
    print(i)
    temp = model(left).view(-1, 1, 300, 300)
    right.append(temp.to('cpu'))
    del temp
    torch.cuda.empty_cache()
Run Code Online (Sandbox Code Playgroud)

这种for loop运行给内存错误之前为25次,每次时间。

每次,我都会在网络中发送一个新图像进行计算。因此,在循环中的每次迭代之后,我实际上都不需要将先前的计算结果存储在GPU中。有什么办法可以做到这一点?

任何帮助将不胜感激。谢谢。

python pytorch

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

PyTorch 中的 Concat 张量

我有一个称为data形状的张量,[128, 4, 150, 150]其中 128 是批量大小,4 是通道数,最后两个维度是高度和宽度。我有另一个称为fakeshape 的张量[128, 1, 150, 150]

我想list/array从 的第二维中删除最后一个data;数据的形状现在是[128, 3, 150, 150]; 并将其连接起来fake,将连接的输出维度设为[128, 4, 150, 150]

基本上,换句话说,我想连接datawith的前 3 个维度fake以给出一个 4 维张量。

我正在使用 PyTorch 并遇到了这些功能torch.cat()torch.stack()

这是我编写的示例代码:

fake_combined = []
        for j in range(batch_size):
            fake_combined.append(torch.stack((data[j][0].to(device), data[j][1].to(device), data[j][2].to(device), fake[j][0].to(device))))
fake_combined = torch.tensor(fake_combined, dtype=torch.float32)
fake_combined = fake_combined.to(device)
Run Code Online (Sandbox Code Playgroud)

但是我在行中遇到错误:

fake_combined = torch.tensor(fake_combined, dtype=torch.float32)
Run Code Online (Sandbox Code Playgroud)

错误是:

ValueError: only …
Run Code Online (Sandbox Code Playgroud)

python machine-learning pytorch tensor

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

标签 统计

python ×3

pytorch ×2

machine-learning ×1

opencv ×1

stereo-3d ×1

tensor ×1