我正在研究瞳孔检测项目。我找到了此链接,该链接可使用此链接中提供的图像渐变方法跟踪眼睛中心。
链接-http://thume.ca/projects/2012/11/04/simple-accurate-eye-center-tracking-in-opencv/
他已经用C ++实现了这个想法,我想将其转换为python代码。一切都会顺利进行,直到我了解到这个void 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);
}
我将如何在python中转换此cv :: mat(4,6,CV_32F,kEyeCornerKernel)?
任何帮助将不胜感激。
答案 0 :(得分:2)
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]])
答案 1 :(得分:0)
为了找到解决方案,我一直在为此做更多的工作。正如@stormzhou所建议的那样,我终于能够解决问题。
回答我自己的问题,python中的void createCornerkernels()函数将是
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