Как использовать cv :: Mat в python? - PullRequest
0 голосов
/ 21 мая 2019

Я работаю над проектом по обнаружению зрачка. Я нашел эту ссылку для отслеживания центра глаза, используя метод градиента изображения, представленный в этой ссылке.

ссылка- http://thume.ca/projects/2012/11/04/simple-accurate-eye-center-tracking-in-opencv/

Он реализовал эту идею в C ++, и я хочу преобразовать ее в код Python. Все идет гладко, пока я не получу эту пустую функцию createCornerKernel ().

cv::Mat *leftCornerKernel;
cv::Mat *rightCornerKernel;

// not constant because stupid opencv type signatures
float kEyeCornerKernel[4][6] = {
  {-1,-1,-1, 1, 1, 1},
  {-1,-1,-1,-1, 1, 1},
  {-1,-1,-1,-1, 0, 3},
  { 1, 1, 1, 1, 1, 1},
};

void createCornerKernels() {
  rightCornerKernel = new cv::Mat(4,6,CV_32F,kEyeCornerKernel);
  leftCornerKernel = new cv::Mat(4,6,CV_32F);
  // flip horizontally
  cv::flip(*rightCornerKernel, *leftCornerKernel, 1);
}

Как мне преобразовать этот cv :: mat (4, 6, CV_32F, kEyeCornerKernel) в python?

Любая помощь будет оценена.

Ответы [ 2 ]

2 голосов
/ 22 мая 2019
rightCornerKernel = np.array([[-1, -1, -1, 1, 1, 1],
                              [-1, -1, -1, -1, 1, 1],
                              [-1, -1, -1, -1, 0, 3],
                              [1, 1, 1, 1, 1, 1]])
0 голосов
/ 22 мая 2019

Я немного больше работал над этим, чтобы найти решение. Как подсказал @stormzhou, я наконец смог решить проблему.

Отвечая на мой собственный вопрос, функция void createCornerkernels () в python будет иметь значение

def createCornerkernels():
    leftCornerkernel = None

    rightCornerKernel = np.array([[-1, -1, -1, 1, 1, 1],
                                  [-1, -1, -1, -1, 1, 1],
                                  [-1, -1, -1, -1, 0, 3],
                                  [1, 1, 1, 1, 1, 1]])

    leftCornerKernel = cv2.flip(rightCornerkernel, 1)

    return leftCornerKernel, rightCornerKernel
...