首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用OpenCV读取2D数组或列表

用OpenCV读取2D数组或列表
EN

Stack Overflow用户
提问于 2021-03-12 10:06:44
回答 2查看 2.4K关注 0票数 0

在python中使用OpenCV有问题,因为我对它非常陌生。我正在尝试使用一个带有OpenCV的二维数组来查找其中的线条。我从未做过的数据是一个图像文件,我不想创建一个图像只是为了将它重新编码到一个数组中。基本上,我为img = cv2.imread(file_path)搜索数组替代方案。这可能是显而易见的方法,但我找不到适合我的目的。

我计划要做的事情的简约例子:

代码语言:javascript
运行
复制
import numpy as np
import cv2

my_list = np.array([[1,0,1],[2,0,1],[2,0,2]])
img = cv2.imread(my_list) # this is what I need to replace
edges = cv2.Canny(gray,70,110,apertureSize = 3)
#and so on
lines = cv2.HoughLines(edges,1,np.pi/180,150)

长话短说:如何在OpenCV中使用数组。

EN

Stack Overflow用户

回答已采纳

发布于 2021-03-12 10:24:10

我想这就是你要找的。您需要使用np.expand_dims在点列表中再添加一个维度。

代码语言:javascript
运行
复制
import numpy as np
import cv2

my_list = np.array([[1, 0, 1], [2, 0, 1], [2, 0, 2]], dtype=np.uint8)
img = np.expand_dims(my_list, axis=0)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 70, 110, apertureSize=3)
# and so on
lines = cv2.HoughLines(edges, 1, np.pi / 180, 150)

编辑:

正如您已经澄清的,您的输入列表的值来自灰色空间。您只需将数组数据类型更改为np.uint8,就可以工作了。

代码语言:javascript
运行
复制
import numpy as np
import cv2

my_list = np.array([[1, 0, 1], [2, 0, 1], [2, 0, 2]], dtype=np.uint8)
edges = cv2.Canny(my_list, 70, 110, apertureSize=3)
# and so on
lines = cv2.HoughLines(edges, 1, np.pi / 180, 150)
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66597852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档