sách gpt4 ai đã đi

Thuật toán C++ Flood Fill cho hình ảnh nhị phân

In lại 作者:太空宇宙 更新时间:2023-11-03 10:20:48 27 4
mua khóa gpt4 Nike

我正在尝试模拟一个 matlab 函数“imfill”来填充二进制图像(1 和 0 的二维矩阵)。

我想在矩阵中指定一个起点,并像 imfill 的 4 连接版本那样进行洪水填充。

这是否已经存在于 C++ 世界的某个地方?如果不是,最有效的实现方式是什么?

1 Câu trả lời

如果您的图像只是 1 和 0 的二维数组,那么我认为您不需要实际的图形库。

过去,当我填写简单的网格时,我只是使用 STL 队列来存储点列表,然后处理这些点。队列将从初始点开始,然后我会测试相邻的点。如果相邻点需要包含在“洪水”中,则将它们添加到队列中。有点像这样:

// using this data structure
struct Point {
số nguyên x;
int y;
};

//
void fillGrid(Point orig, byte** grid, int width, int height) {
std::queue q;
q.push(orig);

// the main flood loop
while(!q.empty()) {
Point pnt = q.front();
q.pop();

// grab adjacent points
Point adj[4];
adj[0].x = pnt.x; adj[0].y = pnt.y-1; // up
adj[1].x = pnt.x+1; adj[1].y = pnt.y; // right
adj[2].x = pnt.x; adj[2].y = pnt.y+1; // down
adj[3].x = pnt.x-1; adj[3].y = pnt.y; // left

for(int i = 0; i < 4; i++) {
// don't forget boundaries!
if(adj[i].x < 0 || adj[i].x >= width ||
adj[i].y < 0 || adj[i].y >= height)
continue;

// if adjacent point meets some criteria, then set
// its value and include it in the queue
if(includePoint(adj[i], grid)) {
setPoint(adj[i], grid);
q.push(adj[i]);
}
}
}
}

关于二值图像的泛洪填充C++算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5941471/

27 4 0
Bài viết được đề xuất: c++ - 如何从函数返回数组并循环遍历它?
Bài viết được đề xuất: android - ViewPager 中的可滚动 TextView
Bài viết được đề xuất: Android BLE,不能真正写特性
Bài viết được đề xuất: C++ 函数调用与堆栈上推送/弹出的新 block
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com