gpt4 book ai didi

opencv - 创建棋盘掩码以检查棋盘上方 block 的状态

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:43 25 4
gpt4 key购买 nike

我想从棋盘中提取正方形并根据它们的坐标标记每个正方形,即 a1、a2、... h8。我的目标是创建一个“掩码”来检查每个方 block 是否存在一 block 。我目前正在使用 Emgu CV 在 C# 中编写一个程序来执行此操作。

可以找到测试用的图片here .

enter image description here

由于没有计算机视觉方面的经验,我一直在遵循基本思想指导下的简单代码示例。我的第一个线索是这个 tutorial它告诉我如何制作一个简单的形状检测器。它不是很准确,因为测试图像比示例图像更复杂。

方形检测不准确(图像略有不同)

Example

结果有两个问题:1)并不是所有的方 block 都被检测为正方形; 2) 创建了 91 个框(而不是 64 个)来可视化检测到的方 block 。

为了解决问题 #1,我使用了带有膨胀和中值平滑的二元阈值来进一步“简化”图像,结果更好但不完整(由于噪声):

在应用二进制阈值、扩张、中值平滑和腐 eclipse 之后

binary threshold

可视化和计算正方形

enter image description here

由于我不知道的原因,似乎多次检测到相同的方 block (即问题 #2),我不知道如何解决这个问题。我最初的想法是在检测到方 block 后立即给每个方 block 一个标签,但现在看来不切实际。

问题

  1. 我可以使用什么方法去除方 block b3 和 g6 上的过滤后噪声?
  2. 我可以使用什么方法来正确地逐行对方 block 进行计数和排序?
  3. 假设我成功地标记了每个方 block ,那么我如何“保存”方 block 区域以重新用作新帧的 mask ?拥有 64 个独特的掩码在计算上是否昂贵?
  4. 如何最大限度地提高正方形的检测率?

最佳答案

关于我在原始问题中的评论,我实现了一些可以作为固定网格构造示例的东西:

#define SQUARE_SIZE 131
#define OFFSET_X 75
#define OFFSET_Y 75
#define NUM_SQUARES_X 8
#define NUM_SQUARES_Y 8

using namespace std;
using namespace cv;

int main(){

// Directory settings
const string pathToData = "../data/";

vector<string> filenames = std::vector<string>();

// Load filenames
glob(pathToData, filenames, false);

if(filenames.size() <= 0){
cout << "no images were found..." << endl;
return -1;
}


Mat chessboard = imread(pathToData+"chessboard.jpg", IMREAD_UNCHANGED);

for (int i=0;i<NUM_SQUARES_X;i++){
for (int j=0;j<NUM_SQUARES_Y;j++){

int startX = OFFSET_X + SQUARE_SIZE*i;
int startY = OFFSET_Y + SQUARE_SIZE*j;
int endX = startX + SQUARE_SIZE;
int endY = startY + SQUARE_SIZE;

rectangle(chessboard, Point(startX,startY), Point(endX,endY), Scalar(255,0,0), 3, 8, 0);
}
}

namedWindow("chessboard", WINDOW_NORMAL);
imshow("chessboard", chessboard);

cv::waitKey(0);

return 0;
}

以上代码的输出如下图所示:

enter image description here

当然,您必须微调参数(偏移和方形尺寸),因为我没有在这上面花太多时间。

关于opencv - 创建棋盘掩码以检查棋盘上方 block 的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31025284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com