Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 在图像中查找网格_Image Processing_Opencv_Pattern Recognition - Fatal编程技术网

Image processing 在图像中查找网格

Image processing 在图像中查找网格,image-processing,opencv,pattern-recognition,Image Processing,Opencv,Pattern Recognition,有一个match-3游戏截图(例如),找到网格绑定框(带瓷砖的表格)的正确方法是什么?电路板不必是一个完美的矩形(如屏幕截图所示),但每个单元都是完全正方形的 我试过几个游戏,发现可以进行一些游戏图像转换来增强网格内的瓷砖(例如,在这个游戏中,它足以将V通道从HSV颜色空间中移除)。然后我可以放大瓷砖,使它们重叠,找到图像的最大轮廓,并从中得到绑定框 上述方法的问题是,每个游戏(甚至同一游戏中的关卡)都可能需要不同的转换来获得瓷砖。所以问题是-是否有一种标准的方法来增强网格内的瓷砖或网格线(我尝

有一个match-3游戏截图(例如),找到网格绑定框(带瓷砖的表格)的正确方法是什么?电路板不必是一个完美的矩形(如屏幕截图所示),但每个单元都是完全正方形的

我试过几个游戏,发现可以进行一些游戏图像转换来增强网格内的瓷砖(例如,在这个游戏中,它足以将V通道从HSV颜色空间中移除)。然后我可以放大瓷砖,使它们重叠,找到图像的最大轮廓,并从中得到绑定框

上述方法的问题是,每个游戏(甚至同一游戏中的关卡)都可能需要不同的转换来获得瓷砖。所以问题是-是否有一种标准的方法来增强网格内的瓷砖或网格线(我尝试过使用Hough变换查找线,但是,尽管网格看起来非常直观,但Hough没有找到)


另外,如果屏幕截图是用手机摄像头而不是桌面截图获得的呢?根据我的经验,拍摄的图像颜色不太清晰(这取决于光线),也可能会有一点失真,因为无法将手机准确地放在屏幕前面。

我将采用以下方法进行屏幕截图:

  • 例如,使用类似canny的边缘检测器查找图像中的角点
  • 执行hough线变换。这应该可以很好地处理边缘图像
  • 如果您有一些关于瓷砖大小的信息,您可以使用某种网格空间模型消除误报线(例如,与图像的x/y轴只有小角度的线和/或瓷砖边框的距离/角度)
  • 通过查找canny在找到的hough线下/旁边找到的边,识别找到的hough线下的平铺边界
  • 你使用了哪种hough变换实现?你是如何预处理图像的

    另一种方法是使用某种机器学习方法。当您在OpenCV中工作时,您可以使用类似Haar的特征检测器。使用类似Haar的特征进行人脸检测的示例如下:

    另一种机器学习方法是采用方向梯度直方图(Hog)方法与支持向量机(SVM)相结合。示例如下:

    有关猪检测的一般信息,请访问:


    我使用cv::HoughLinesP查找线条,或者有太多的线条可供选择(它们可以覆盖大部分图像),或者网格上的线找不到。使用Canny和HoughLinesP的参数,我可以减少误报的数量,但这些参数显然对其他游戏没有好处。我没有关于棋盘上瓷砖大小或数量的信息,因此没有简单的方法消除这些线。而且,我有我不认为我完全理解第四步。关于第四步:如果你对canny图像进行hough线变换,你可能会得到比你正在搜索的瓷砖之间的实际边界长的线。找到瓷砖实际范围的一种方法是沿着找到的hough线搜索canny的响应边缘检测器。