Justheartyoung 发表于 2023-8-8 11:32:30

已有代码实现了将提取结果叠在原始影像上导出,现在还想让提取结果单独导出成。

请帮忙添加代码,以实现提取结果的单独导出。
代码:
from tifffile import imread, imwrite
from skimage import filters, feature, color, morphology
import matplotlib.pyplot as plt
import numpy as np

# 读取TIFF格式无人机影像数据
image = imread('C:\\Users\\WINDOWS\\Desktop\\taiyuan\\python\\1=quick_dom.tif')
# 转换为灰度图像
gray_image = color.rgb2gray(image)
# 边缘检测,提取沙丘脊线
edges = filters.sobel(gray_image)
# 设置合适的阈值来确定沙脊线的二值化图像
threshold = 0.005
binary = edges > threshold

# 使用腐蚀和膨胀操作消除噪音
binary = morphology.binary_erosion(binary, morphology.disk(1))# 腐蚀操作
binary = morphology.binary_dilation(binary, morphology.disk(1))# 膨胀操作
# 叠加沙脊线在原始影像上
overlay = np.copy(image)
overlay = # 将沙脊线部分标记为红色
# 导出结果
imwrite('ed1sobel_005.tif', overlay)






isdkz 发表于 2023-8-8 11:32:41

要实现提取结果的单独导出,你可以使用以下代码:

# 导出二值化图像
imwrite('binary_image.tif', binary.astype(np.uint8) * 255)


在这个代码中,我们使用 imwrite 函数将二值化图像保存为TIFF格式。 binary 是一个布尔数组,我们通过将其转换为无符号整数类型,并乘以255来将其转换为灰度图像。然后,我们将其保存为 binary_image.tif 文件。

请注意,为了使用 imwrite 函数,你需要确保已经安装了 tifffile 库。你可以使用以下命令在终端中安装它:

pip install tifffile


希望这可以帮助到你!如果你有任何其他问题,请随时问我。

陶远航 发表于 2023-8-8 11:32:47

要实现提取结果的单独导出,需要对代码进行修改。以下是修改后的代码:

from tifffile import imread, imwrite
from skimage import filters, feature, color, morphology
import numpy as np

# 读取TIFF格式无人机影像数据
image = imread('C:\\Users\\WINDOWS\\Desktop\\taiyuan\\python\\1=quick_dom.tif')

# 转换为灰度图像
gray_image = color.rgb2gray(image)

# 边缘检测,提取沙丘脊线
edges = filters.sobel(gray_image)

# 设置合适的阈值来确定沙脊线的二值化图像
threshold = 0.005
binary = edges > threshold

# 使用腐蚀和膨胀操作消除噪音
binary = morphology.binary_erosion(binary, morphology.disk(1))
binary = morphology.binary_dilation(binary, morphology.disk(1))

# 导出结果
imwrite('ed1sobel_005.tif', binary)# 单独导出二值化结果


在上述代码中,我将原来的overlay变量改为了binary变量,并使用imwrite()函数直接将二值化结果导出为ed1sobel_005.tif文件。

这样修改后的代码将会单独导出提取结果的二值化图像。请确保指定的导出路径是正确的,并存储为适当的图像格式(如.tif)。
如果问题已经解决,请设置最佳答案

学习编程中的Ben 发表于 2023-8-8 11:32:50

【非代码部分】

标题:添加代码以实现提取结果的单独导出

要实现提取结果的单独导出,可以使用imwrite()函数将结果保存为单独的图像文件。在现有代码的基础上,需要添加一些步骤来实现这个功能。

【代码部分】

下面是修改后的代码,完成了提取结果的单独导出:

from tifffile import imread, imwrite
from skimage import filters, feature, color, morphology
import matplotlib.pyplot as plt
import numpy as np

# 读取TIFF格式无人机影像数据
image = imread('C:\\Users\\WINDOWS\\Desktop\\taiyuan\\python\\1=quick_dom.tif')
# 转换为灰度图像
gray_image = color.rgb2gray(image)
# 边缘检测,提取沙丘脊线
edges = filters.sobel(gray_image)
# 设置合适的阈值来确定沙脊线的二值化图像
threshold = 0.005
binary = edges > threshold

# 使用腐蚀和膨胀操作消除噪音
binary = morphology.binary_erosion(binary, morphology.disk(1))# 腐蚀操作
binary = morphology.binary_dilation(binary, morphology.disk(1))# 膨胀操作
# 叠加沙脊线在原始影像上
overlay = np.copy(image)
overlay = # 将沙脊线部分标记为红色
# 导出结果
imwrite('ed1sobel_005.tif', overlay)

# 单独导出提取结果
result_image = np.zeros_like(image)# 创建一个与原始影像相同大小的全黑图像
result_image = image# 将沙脊线部分的像素值复制到结果图像中
imwrite('result_image.tif', result_image)


在上述代码中,我们添加了以下步骤来实现提取结果的单独导出:

1. 创建一个与原始影像相同大小的全黑图像,命名为result_image。
2. 使用布尔掩码binary来选择沙脊线部分的像素,将这部分像素从原始影像中复制到result_image中。
3. 使用imwrite()函数将result_image保存为单独的图像文件,命名为result_image.tif。

通过以上修改,你可以将提取结果单独导出为result_image.tif文件。请确保文件名和保存路径适合你的需求,并且你的计算机上已安装所需的库(如tifffile)以正确运行代码。

如果回答对你有帮助,请给我一个最佳答案!{:10_254:}{:10_254:}{:10_254:}

Mike_python小 发表于 2023-8-8 11:32:54

【非代码部分】

标题:如何实现提取结果的单独导出?

要将提取结果单独导出,你可以使用imwrite()函数将结果保存为一个单独的图像文件。以下是修改后的完整代码:

【代码部分】

from tifffile import imread, imwrite
from skimage import filters, feature, color, morphology
import matplotlib.pyplot as plt
import numpy as np

# 读取TIFF格式无人机影像数据
image = imread('C:\\Users\\WINDOWS\\Desktop\\taiyuan\\python\\1=quick_dom.tif')
# 转换为灰度图像
gray_image = color.rgb2gray(image)
# 边缘检测,提取沙丘脊线
edges = filters.sobel(gray_image)
# 设置合适的阈值来确定沙脊线的二值化图像
threshold = 0.005
binary = edges > threshold

# 使用腐蚀和膨胀操作消除噪音
binary = morphology.binary_erosion(binary, morphology.disk(1))# 腐蚀操作
binary = morphology.binary_dilation(binary, morphology.disk(1))# 膨胀操作
# 叠加沙脊线在原始影像上
overlay = np.copy(image)
overlay = # 将沙脊线部分标记为红色

# 导出结果
imwrite('ed1sobel_005.tif', overlay)

# 单独导出提取结果
result = np.zeros_like(image)
result = # 将沙脊线部分标记为红色

# 导出单独的结果图像
imwrite('extracted_result.tif', result)


在上述代码中,我添加了以下部分来实现提取结果的单独导出:

1. 在叠加沙丘脊线部分的代码后面,我创建了一个名为result的新变量,它是一个与原始影像大小和数据类型相同的全零数组。

2. 使用提取结果binary将result数组中对应位置的像素设为红色,这将仅在提取结果处生成红色标记。

3. 最后,使用imwrite()函数将result保存为名为extracted_result.tif的单独结果图像文件。

通过运行修改后的代码,你将得到两个输出文件:ed1sobel_005.tif包含叠加沙丘脊线的原始影像,而extracted_result.tif则是提取结果的单独导出图像。

如果回答对你有帮助,请给我一个最佳答案!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 已有代码实现了将提取结果叠在原始影像上导出,现在还想让提取结果单独导出成。