我试图运行 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 文档的链接
任何帮助将不胜感激。谢谢。
我正在尝试获取已经训练过的神经网络的输出。输入是大小为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中。有什么办法可以做到这一点?
任何帮助将不胜感激。谢谢。
我有一个称为data
形状的张量,[128, 4, 150, 150]
其中 128 是批量大小,4 是通道数,最后两个维度是高度和宽度。我有另一个称为fake
shape 的张量[128, 1, 150, 150]
。
我想list/array
从 的第二维中删除最后一个data
;数据的形状现在是[128, 3, 150, 150]
; 并将其连接起来fake
,将连接的输出维度设为[128, 4, 150, 150]
。
基本上,换句话说,我想连接data
with的前 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)