写C++代码将图片二值化生成数组用于A星寻路
时间: 2024-03-13 08:42:37 浏览: 77
下面是一个C++代码示例,用于将一张灰度图像进行二值化,并生成用于A星寻路的数组。
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读入灰度图像
Mat img_gray = imread("image_gray.png", IMREAD_GRAYSCALE);
// 设置阈值并进行二值化
int threshold_value = 127;
Mat img_binary;
threshold(img_gray, img_binary, threshold_value, 255, THRESH_BINARY);
// 将二值图像转化为数组
int rows = img_binary.rows;
int cols = img_binary.cols;
int **map_array = new int*[rows];
for (int i = 0; i < rows; i++) {
map_array[i] = new int[cols];
for (int j = 0; j < cols; j++) {
map_array[i][j] = img_binary.at<uchar>(i, j) / 255;
}
}
// 打印数组
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << map_array[i][j] << " ";
}
cout << endl;
}
// 释放内存
for (int i = 0; i < rows; i++) {
delete[] map_array[i];
}
delete[] map_array;
return 0;
}
```
在以上代码中,我们首先使用`imread`方法读入一张灰度图像,并将其存储在`img_gray`变量中。然后,我们使用`threshold`方法进行二值化,将灰度值大于阈值的像素设为白色,否则设为黑色,并将结果存储在`img_binary`变量中。接着,我们将二值图像转化为数组,并将数组打印出来。最后,我们释放了申请的内存。
阅读全文