gpt4 book ai didi

c++ - 我如何在 python 中取消引用? (使用openCV进行图像处理)

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:34 28 4
gpt4 key购买 nike

我一直在整个互联网上寻找一个简单的细化算法,我偶然发现了这个:Thinning algorithm问题是,我对取消引用运算符没有太多经验。此外,我的项目是在 python 中处理这种情况的不同方式。所以我有几个问题

1:这段代码在做什么?

void myThinningInit (CvMat ** kpw, CvMat ** kpb)
{
/ / Kernel for cvFilter2D
/ / The algorithm kpw kernel binary image and it has become a matching white, black,
/ / Convolution is divided into two sets of binary image was inverted kpb kernel, then take the AND
for (int i = 0; i <8; i + +) {
* (Kpw + i) = cvCreateMat (3, 3, CV_8UC1);
* (Kpb + i) = cvCreateMat (3, 3, CV_8UC1);
cvSet (* (kpw + i), cvRealScalar (0), NULL);
cvSet (* (kpb + i), cvRealScalar (0), NULL);
}.....

以及 2:我如何将这个内核创建转化为 python?

他最终制作了 8 个内核,但我不知道它们的矩阵形式是什么样的。我不明白“* (kpw + i)”或“* (kpb + i)”在程序的宏伟计划中的作用。

3) 我可以只制作内核并将它们存储在列表中吗?如果可以,我该怎么做?

更新:

k = [1, 2, 3, 5, 6, 7, 8]
kpw = []
kpb = []

for i in k:
kpw.append [i] = cv.CreateMat (3, 3, cv.CV_8UC1)
kpb.append [i] = cv.CreateMat (3, 3, cv.CV_8UC1)
cv.cvSet (kpw [i], cv.RealScalar (0), cv.NULL)
cv.cvSet (kpb [i], cv.RealScalar (0), cv.NULL)

起初我不只是有 kpw [i],它给我一个错误。经过快速谷歌搜索后,我发现您需要先为数组建立索引,而他们这样做的方式是通过追加。我尝试了这段代码以获得 8 个 3x3 大小的基本内核,但我收到了这个错误:

追溯(最近的调用最后):

文件“/home/krtzer/Documents/python_scripts/thinning.py”,第 14 行,位于 kpw.append [i] = cv.CreateMat (3, 3, cv.CV_8UC1)TypeError: 'builtin_function_or_method' 对象不支持项目分配

这是否意味着我不能在列表中包含矩阵?

最佳答案

取消引用只是创建一个 Matrix,没有初始化它的数据。通过 cvSet (* (kpw + i), cvRealScalar (0), NULL) 等行将数据手动设置为零。

在 python 中,您可以使用 numpy.zeros 一次完成相同的操作,然后使用 cv.fromarray。或者,使用 x = cv.CreateMat(3, 3, cv.CV_8UC1),然后使用 cv.set(x, 0.)

关于c++ - 我如何在 python 中取消引用? (使用openCV进行图像处理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9528548/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com