【发布时间】:2014-01-03 21:06:46
【问题描述】:
我使用 Canny 边缘检测器成功识别给定图像的边缘。我正在努力寻找这条检测到的边缘线上的特定点。
我的做法:
我在opencv中使用了cv::canny函数,输出以cv::Mat格式存储。我想遍历矩阵的所有值并识别存在边缘的所有像素,以便我可以检测到检测到的边缘线上的特定点。
使用的功能:
cv::Canny(frame_gray,contours,50,150);
输出存储在contours,类型为CV_8UC3
要访问像素值,试过了
contours.at<int>(i,j) != 0
还有
contours.at<uchar>(i,j) != 0
非常感谢上述帮助。如果方法是正确的并且遗漏了一些东西,或者我应该尝试另一种方法 谢谢
编辑:
for(int i=0;i<img_width;i++)
{
if((int)contours.at<uchar>(i,neckcenter.y) > 0 )
{
Point multipoints(i,neckcenter.y);
circle( contours, multipoints, neckpoint, Scalar( 255, 0, 0 ),4, 8, 0 );
cout << (int)contours.at<uchar>(i,neckcenter.y) << endl;
}
}
我正在使用上面的代码,它形成一个半径为 1 的小圆圈(由颈点定义),它在其中检测到一个点和边缘。颈部中心.y 是从早期计算得出的常数值。我在这里做错了什么?
代码的输出-
【问题讨论】:
标签: c++ opencv image-processing