首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV -奇数HSV距离检测

OpenCV -奇数HSV距离检测
EN

Stack Overflow用户
提问于 2015-05-27 13:03:42
回答 1查看 692关注 0票数 0

我有一个Qt应用程序,我必须找到HSV范围的几个像素左右点击坐标,以跟踪稍后。我就是这样做的:

代码语言:javascript
复制
    cv::Mat temp;
    cv::cvtColor(frame, temp, CV_BGR2HSV); //frame is pulled from a video or jpeg
    cv::Vec3b hsv=temp.at<cv::Vec3b>(frameX,frameY); //sometimes SIGSEGV?
    qDebug() << hsv.val[0]; //look up H
    qDebug() << hsv.val[1]; //look up S
    qDebug() << hsv.val[2]; //look up V
    //just base values so far, will work on range later
    emit hsvDownloaded(hsv.val[0], hsv.val[0]+5, hsv.val[1], 255, hsv.val[2], 255); //send to GUI which automaticly updates worker thread

现在一切都很奇怪。这些是结果(红色圆圈表示单击位置):

红色是奇怪的,形状的上半部是正确的,下半部分是不正确的,尽管它是相同颜色的固体质量。

为了一个实际的测试

它检测HSV {95,196,248},坦白地说这是荒谬的(基值太高)。检测到的像素中没有一个是被单击的像素。100%的时间来检测这个球的最佳值是H:35-141 S:0-238 V:65-255。我一直想从归一化直方图中得到HSV的范围,但我甚至不能得到正确的基值。出什么事啦?当OpenCV使用kalibrowanyPlik.read(frame);拉出一个框架时,默认的颜色方案是BGR,对吗?

为什么颜色检测会这么随意?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-28 08:48:03

正如berak所提到的,您的代码看起来像是使用了索引来以错误的顺序访问像素。

这意味着您的像素位置是错误的,除了位于对角线上的像素,因此将正确地检测到位于对角线周围的单击对象,而所有其他对象都不会被检测到。

为了避免一次又一次地感到困惑,我希望您理解为什么OpenCV对索引使用(row,col)排序:

OpenCV使用矩阵来表示图像。在数学中,2D矩阵使用(行、行)索引,查看arrays并观察索引。因此,对于矩阵,通常首先使用行索引,然后使用列索引。

不幸的是,图像和像素通常有一个(x,y)索引,它对应于数学图形和坐标系中的x/y轴/方向。在这里,首先使用x位置,然后是y位置。

幸运的是,OpenCV提供了两个不同版本的.at方法,一个用于访问像素位置,另一个用于访问矩阵元素(它们最终都是完全相同的元素)。

代码语言:javascript
复制
matrix.at<type>(row,column) // matrix indexing to access elements
// which equals
matrix.at<type>(y,x)

代码语言:javascript
复制
matrix.at<type>(cv::Point(x,y)) // pixel/position indexing to access elements

由于第一个版本的效率应该稍微高一些,如果位置还没有给定为cv::Point对象,则应该更好。所以最好的方法通常是记住,openCV使用矩阵来表示图像,并且使用矩阵索引符号来访问元素。

顺便说一句,我看到人们在了解到matrix.at<type>(cv::Point(y,x))图像使用了“错误的排序”之后,会想知道为什么openCV没有按预期的方式工作。我希望这个问题不要在我解释之后才提出来。

还有一点:在学校里,我已经在想,为什么矩阵索引第一行,而函数图首先是x轴。我发现不对两者使用“相同”的命令是愚蠢的,但我仍然不得不接受它:D (最后,两者都与另一个没有多大关系)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30483325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档