我是matlab的新手! 我正试图从帧序列中检测出瞳孔...我需要用这种方法来检测眼睛是否开放。
当我不使用侵蚀和扩张时,imfindcircles正在工作,但是侵蚀和扩张的步骤给我带来了一个非常酷的图像,它是白色背景上非常干净的黑色圆圈,霍夫会像魅力一样工作,但它没有,我真的找不到出路。 它不依赖于半径范围,因为如果我评论侵蚀和扩张它的工作原理。正如我刚才所说,侵蚀和扩张产生了完美的形象。任何提示?
rightEye = imcrop(videoFrame, rightEyeBox);
leftEye = imcrop(videoFrame, leftEyeBox);
% to grayscale
grayRightEye = rgb2gray(rightEye);
grayLeftEye = rgb2gray(leftEye);
% binarize
grayRightEye = im2bw(grayRightEye, 0.45);
% erode and dilate
finalRight = imdilate(grayRightEye, strel('disk', 7));
finalRight = imerode(finalRight, strel('disk', 11));
imshow(grayRightEye);
rightCircle = max(rightRows, rightCols);
[centers, radii] = imfindcircles(grayRightEye,[5 25])
答案 0 :(得分:0)
我已经通过强制转换finalRight来解决问题!