【问题标题】:TypeError: expected str, bytes or os.PathLike object, not numpy.ndarrayTypeError:预期的 str、字节或 os.PathLike 对象,而不是 numpy.ndarray
【发布时间】:2021-03-05 19:40:45
【问题描述】:

我正在尝试这段代码

from PIL import Image

import numpy as np

from lsd import *

import cv2

im = cv2.imread('/home/lenovo/Downloads/python-lsd-master/test_data/chairs.pgm')

#fullName = '1.jpg'

folder, imgName = os.path.split(im)

src = cv2.imread(im, cv2.IMREAD_COLOR)

gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

lines =lsd.__module__

#path1=os.path.normpath('/home/lenovo/pylsd/example/751626ntl.txt')

for i in range(lines.shape[0]):

    pt1 = (int(lines[i, 0]), int(lines[i, 1]))

    pt2 = (int(lines[i, 2]), int(lines[i, 3]))

    width = lines[i, 4]

    cv2.line(src, pt1, pt2, (0, 0, 255), int(np.ceil(width / 2)))

cv2.imwrite(os.path.join(folder, 'cv2_' + imgName.split('.')[0] + '.jpg'), src)

ValueError: TypeError: 预期的 str、bytes 或 os.PathLike 对象,而不是 numpy.ndarray

你能帮忙吗

【问题讨论】:

  • 请格式化您的信息

标签: python python-3.x python-2.7 python-requests


【解决方案1】:

您首先在这里阅读图片:

im = cv2.imread('/home/lenovo/Downloads/python-lsd-master/test_data/chairs.pgm')

然后你再次读取图像,但由于某种原因,这里不是函数期望的路径,而是提供表示上一步加载的图像的数组:

src = cv2.imread(im, cv2.IMREAD_COLOR)

这会导致我相信的错误。不知道您为什么要尝试读取图像两次。

【讨论】:

  • 因为我的项目是“具有改进的长期短期记忆的基于视觉的速度驼峰/凹凸检测”所以我需要线段检测器所以我正在尝试图像读取
  • 是的,但是imread() 函数需要两个参数——一个文件路径和一个标志。这里不是提供文件路径,而是给它一个已经加载的图像作为参数:src = cv2.imread(im, cv2.IMREAD_COLOR)。相反,它应该是cv2.imread('path/to/your/file', cv2.IMREAD_COLOR)
【解决方案2】:

如果使用 Jupyter Notebooks,对于这样的代码,您只能运行一次单元格。如果必须再次运行单元,请在此之前再次加载图像数据。它实际上对我有用。

【讨论】:

猜你喜欢
  • 2017-10-23
  • 2020-07-12
  • 2019-04-11
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
相关资源
最近更新 更多