鱼C论坛

 找回密码
 立即注册
查看: 2154|回复: 4

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

[复制链接]
发表于 2023-8-8 11:32:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请帮忙添加代码,以实现提取结果的单独导出。
代码:
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[binary] = [255, 0, 0]  # 将沙脊线部分标记为红色
# 导出结果
imwrite('ed1sobel_005.tif', overlay)






最佳答案
2023-8-8 11:32:47
要实现提取结果的单独导出,需要对代码进行修改。以下是修改后的代码:

  1. from tifffile import imread, imwrite
  2. from skimage import filters, feature, color, morphology
  3. import numpy as np

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

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

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

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

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

  16. # 导出结果
  17. imwrite('ed1sobel_005.tif', binary)  # 单独导出二值化结果
复制代码


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

这样修改后的代码将会单独导出提取结果的二值化图像。请确保指定的导出路径是正确的,并存储为适当的图像格式(如.tif)。
如果问题已经解决,请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-8-8 11:32:41 | 显示全部楼层
要实现提取结果的单独导出,你可以使用以下代码:

  1. # 导出二值化图像
  2. imwrite('binary_image.tif', binary.astype(np.uint8) * 255)
复制代码


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

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

  1. pip install tifffile
复制代码


希望这可以帮助到你!如果你有任何其他问题,请随时问我。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-8 11:32:47 | 显示全部楼层    本楼为最佳答案   
要实现提取结果的单独导出,需要对代码进行修改。以下是修改后的代码:

  1. from tifffile import imread, imwrite
  2. from skimage import filters, feature, color, morphology
  3. import numpy as np

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

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

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

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

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

  16. # 导出结果
  17. imwrite('ed1sobel_005.tif', binary)  # 单独导出二值化结果
复制代码


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

这样修改后的代码将会单独导出提取结果的二值化图像。请确保指定的导出路径是正确的,并存储为适当的图像格式(如.tif)。
如果问题已经解决,请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-8 11:32:50 | 显示全部楼层
【非代码部分】

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

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

【代码部分】

下面是修改后的代码,完成了提取结果的单独导出:
  1. from tifffile import imread, imwrite
  2. from skimage import filters, feature, color, morphology
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. # 读取TIFF格式无人机影像数据
  6. image = imread('C:\\Users\\WINDOWS\\Desktop\\taiyuan\\python\\1=quick_dom.tif')
  7. # 转换为灰度图像
  8. gray_image = color.rgb2gray(image)
  9. # 边缘检测,提取沙丘脊线
  10. edges = filters.sobel(gray_image)
  11. # 设置合适的阈值来确定沙脊线的二值化图像
  12. threshold = 0.005
  13. binary = edges > threshold
  14. # 使用腐蚀和膨胀操作消除噪音
  15. binary = morphology.binary_erosion(binary, morphology.disk(1))  # 腐蚀操作
  16. binary = morphology.binary_dilation(binary, morphology.disk(1))  # 膨胀操作
  17. # 叠加沙脊线在原始影像上
  18. overlay = np.copy(image)
  19. overlay[binary] = [255, 0, 0]  # 将沙脊线部分标记为红色
  20. # 导出结果
  21. imwrite('ed1sobel_005.tif', overlay)
  22. # 单独导出提取结果
  23. result_image = np.zeros_like(image)  # 创建一个与原始影像相同大小的全黑图像
  24. result_image[binary] = image[binary]  # 将沙脊线部分的像素值复制到结果图像中
  25. imwrite('result_image.tif', result_image)
复制代码

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

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

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

如果回答对你有帮助,请给我一个最佳答案!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-8 11:32:54 | 显示全部楼层
【非代码部分】

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

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

【代码部分】
  1. from tifffile import imread, imwrite
  2. from skimage import filters, feature, color, morphology
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. # 读取TIFF格式无人机影像数据
  6. image = imread('C:\\Users\\WINDOWS\\Desktop\\taiyuan\\python\\1=quick_dom.tif')
  7. # 转换为灰度图像
  8. gray_image = color.rgb2gray(image)
  9. # 边缘检测,提取沙丘脊线
  10. edges = filters.sobel(gray_image)
  11. # 设置合适的阈值来确定沙脊线的二值化图像
  12. threshold = 0.005
  13. binary = edges > threshold
  14. # 使用腐蚀和膨胀操作消除噪音
  15. binary = morphology.binary_erosion(binary, morphology.disk(1))  # 腐蚀操作
  16. binary = morphology.binary_dilation(binary, morphology.disk(1))  # 膨胀操作
  17. # 叠加沙脊线在原始影像上
  18. overlay = np.copy(image)
  19. overlay[binary] = [255, 0, 0]  # 将沙脊线部分标记为红色
  20. # 导出结果
  21. imwrite('ed1sobel_005.tif', overlay)
  22. # 单独导出提取结果
  23. result = np.zeros_like(image)
  24. result[binary] = [255, 0, 0]  # 将沙脊线部分标记为红色
  25. # 导出单独的结果图像
  26. imwrite('extracted_result.tif', result)
复制代码

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

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

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

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

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

如果回答对你有帮助,请给我一个最佳答案!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 03:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表