什么相当于OpenCV2中的cvCreateMat函数使用python3

Posted

技术标签:

【中文标题】什么相当于OpenCV2中的cvCreateMat函数使用python3【英文标题】:What is equivalent of cvCreateMat function in OpenCV2 using python3 【发布时间】:2019-02-15 10:55:13 【问题描述】:

我正在将一段用 c/cpp 编写的旧代码转换成 python。它使用 cvCreateMat 函数。从this link 我相信OpenCV2 不支持cvCreateMat 函数。我不知道如何使用 OpenCV2/numpy 来做到这一点。或者我需要的只是python中的以下行。

cv::Mat a = cvCreateMat(3*numberOfMatrices, 6,CV_64FC1);

【问题讨论】:

只需创建一个你需要的形状和数据类型的numpy数组 cv.CreateImage 怎么样 answers.opencv.org/question/30037/cv2createmat-in-python 这应该对你有帮助。 @Miki 我不知道我会输入什么。如果numberOfMatrices 是6,那么我猜cvCreateMat 将创建一个18 行6 列的矩阵,初始化为0。我也不确定我需要np.array 还是np.matrix @Spinkoo 我想要等效的,因为后面的函数会利用这些数据。我相信 cvCreateMat 被 numpy 取代。 【参考方案1】:

我认为应该这样做

// the third 3 is so it has 3 dimensions which i suppose what you need
size = 3*numberOfMatrices, 6
img = np.zeros(size, dtype=np.float64)

这是创建的正确格式

【讨论】:

是的,我想类似的东西,但我发现这个link 给出了一些不同的格式。 不会是`img = np.zeros((3*numberOfMatrices, 6), dtype=np.float64) 它可以创建 0 的矩阵,但我不确定它是否等同于 cvCreateMat?你知道吗?如果是,我会接受它作为答案。 是的,它相当于在 python 中执行此操作,如果您愿意,也可以使用 np.ones 调用它 嗨 Spinkoo 请从size = 3*numberOfMatrices, 6, 3 中删除最后 3 个。应该是size = 3*numberOfMatrices, 6

以上是关于什么相当于OpenCV2中的cvCreateMat函数使用python3的主要内容,如果未能解决你的问题,请参考以下文章

懂opencv中的cvmat的请进啊

cvCreateMat 内存泄漏(OpenCV)

【OpenCV】用cvCalibrateCamera2函数做标定出错,大家帮忙看下吧

openCV2中的SCalar的详细用法和用处能介绍下么?

opencv2.4.8里没有fisheye怎么办

OpenCV2.3.0在VS中的配置