获取图像OpenCV中像素的HSV值

时间:2017-02-21 23:52:06

标签: java image opencv

我正在使用Rubik的侧扫描仪来确定立方体所处的状态。我对计算机视觉和使用它都很陌生,因此它有点挑战。到目前为止我所做的是我使用视频捕获并在某些帧捕获该帧并保存它以进行图像处理。这是它的样子。enter image description here

拍摄照片时,立方体每次都处于相同的位置,因此我不必担心找到贴纸。 我无法做的是在每个方格中获得一小部分像素以确定其HSV。

我知道HSV的范围大致是

WindowInsets

因此,在我捕获图像后,我将其加载并分割图像的HSV值,但不知道如何获取图像的某些像素坐标。我该怎么办?

Red = Hue(0...9) AND Hue(151..180)
Orange = Hue(10...15)
Yellow = Hue(16..45)
Green = Hue(46..100)
Blue = Hue(101..150)
White = Saturation(0..20) AND Value(230..255)

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你就知道你感兴趣的所有领域的坐标。将有关每个区域的信息保存到cvRect objects

您可以通过循环遍历矩形区域。做一个双循环。在外循环中从rect.y开始并在rect.y + rect.height之前停止。在内循环中,在x方向上做类似的事情。在循环内部,使用CV_IMAGE_ELEM macro访问单个像素值并计算您需要的任何内容。

但有一条建议:在使用OpenCV时,使用Mat代替IplImage有几个好处。我建议你开始使用' Mat'当然,除非你有特殊的理由这样做。 Click to see the documentation并查看一个构造函数,其中一个Mat和一个Rect作为参数。这个构造函数是你的好朋友 - 你可以创建一个新的Mat对象(不复制任何数据),它只包含矩形内的区域。