我正在研究视频镜头检测的边缘变化率算法。我已经掌握了算法的基本思想,并使用OpenCV实现了其中的一部分,其中包括使用坎尼算法识别边缘。
但我对如何找到两个视频帧之间的边缘像素和进入和退出像素的数量感到困惑。我正在做OpenCV,请帮助我做一些代码或逻辑或OpenCV函数
谢谢
发布于 2013-05-02 22:19:02
就我所理解的problem...If而言,您的灰度图像是frameg,那么下面的API将生成带边缘的图像。
Canny(frameg,frameEdge,50,150,3,false);其中frameEdge是包含边缘的图像。frameEdge是一个二进制图像,边缘像素为白色(255),其他像素为黑色(0)。
for(int r = 0;r<frameEdge.rows;r++)
{
for(int c=0;c<frameEdge.cols;c++)
{
if( *(frameEdge.data + frameEdge.cols*r + c) == (uchar)255 )
{
Point edgepixel;
edgepixel.x = c; edgepixel.y = r;
myedges.push_back(edgepixel);
}
}
} 因此,您可以轻松地扫描图像并找到白色像素并存储它们的位置。这样你就可以找到边缘像素。创建一个数组vector<Point> myedges来存储边缘像素位置。对视频中的每一帧执行此操作,并进行必要的比较。注意:我已经将图片作为cv::Mat。您也可以使用IplImage。
https://stackoverflow.com/questions/16328345
复制相似问题