Я искал во всем Интернете простой алгоритм прореживания и наткнулся на это: Алгоритм прореживания Проблема в том, что у меня нет слишком большого опыта работы с оператором разыменования. Кроме того, мой проект на 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) Могу ли я просто собрать ядра и сохранить их в списке? Если да, то как я могу это сделать?
UPDATE:
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], и это выдало мне ошибку. После быстрого поиска в Google я обнаружил, что вам нужно сначала проиндексировать массив и сделать это путем добавления. Я попробовал этот фрагмент кода, чтобы получить 8 базовых ядер размером 3х3, но я получил эту ошибку:
Traceback (последний последний вызов):
Файл "/home/krtzer/Documents/python_scripts/thinning.py", строка 14, в
kpw.append [i] = cv.CreateMat (3, 3, cv.CV_8UC1)
Ошибка типа: объект builtin_function_or_method не поддерживает назначение элемента
Означает ли это, что я не могу иметь матрицы в списках?