利用cv2和matplotlib.pyplot读取tif格式文件不能显示原图的问题:欢迎留言

一、代码如下

import cv2
import matplotlib.pyplot as plt
import numpy as np

#读取文件
tif_path = (r"D:\IMG_S2_20200820.tif")
img = cv2.imread(tif_path,-1)#tif编码格式为16位,使用cv.imread时自动转成unit8,3通道,需要保留其原始格式

#opencv默认的imread是以BGR的方式进行存储的,而matplotlib的imshow默认则是以RGB格式展示,所以需要对图片的通道进行转换
trans_img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#设置显示格式
plt.imshow(np.flip(trans_img.astype(np.uint8),axis=2))
plt.axis("off")#去除坐标轴
#文件显示
plt.show()

二、影像显示
1)原始影像
在这里插入图片描述2)python窗口中显示的影像效果

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以给你提供Python代码来实现这个任务。首先需要导入一些必要的库,如下所示: ``` python import numpy as np import cv2 import matplotlib.pyplot as plt ``` 然后,我们可以使用OpenCV库来读取原始图像和添加高斯噪声。具体实现如下: ``` python # 读取原始图像 img = cv2.imread('astronaut.tif', cv2.IMREAD_GRAYSCALE) # 添加高斯噪声 mean = 0 var = 100 sigma = var ** 0.5 gauss = np.random.normal(mean, sigma, (512, 512)) noisy_img = img + gauss # 显示原始图像和加噪图像 plt.subplot(121), plt.imshow(img, cmap='gray'), plt.title('Original') plt.xticks([]), plt.yticks([]) plt.subplot(122), plt.imshow(noisy_img, cmap='gray'), plt.title('Noisy') plt.xticks([]), plt.yticks([]) plt.show() ``` 接下来,我们可以使用均值滤波器来处理加噪图像。具体实现如下: ``` python # 定义一个3x3的均值滤波器 kernel = np.ones((3, 3), np.float32) / 9 # 对加噪图像进行滤波处理 filtered_img = cv2.filter2D(noisy_img, -1, kernel) # 显示原始图像、加噪图像和处理后的图像 plt.subplot(131), plt.imshow(img, cmap='gray'), plt.title('Original') plt.xticks([]), plt.yticks([]) plt.subplot(132), plt.imshow(noisy_img, cmap='gray'), plt.title('Noisy') plt.xticks([]), plt.yticks([]) plt.subplot(133), plt.imshow(filtered_img, cmap='gray'), plt.title('Filtered') plt.xticks([]), plt.yticks([]) plt.show() ``` 最后,我们可以将三张图像在同一窗口显示,具体实现如下: ``` python # 显示原始图像、加噪图像和处理后的图像 plt.subplot(131), plt.imshow(img, cmap='gray'), plt.title('Original') plt.xticks([]), plt.yticks([]) plt.subplot(132), plt.imshow(noisy_img, cmap='gray'), plt.title('Noisy') plt.xticks([]), plt.yticks([]) plt.subplot(133), plt.imshow(filtered_img, cmap='gray'), plt.title('Filtered') plt.xticks([]), plt.yticks([]) plt.show() ``` 完整的代码如下所示: ``` python import numpy as np import cv2 import matplotlib.pyplot as plt # 读取原始图像 img = cv2.imread('astronaut.tif', cv2.IMREAD_GRAYSCALE) # 添加高斯噪声 mean = 0 var = 100 sigma = var ** 0.5 gauss = np.random.normal(mean, sigma, (512, 512)) noisy_img = img + gauss # 定义一个3x3的均值滤波器 kernel = np.ones((3, 3), np.float32) / 9 # 对加噪图像进行滤波处理 filtered_img = cv2.filter2D(noisy_img, -1, kernel) # 显示原始图像、加噪图像和处理后的图像 plt.subplot(131), plt.imshow(img, cmap='gray'), plt.title('Original') plt.xticks([]), plt.yticks([]) plt.subplot(132), plt.imshow(noisy_img, cmap='gray'), plt.title('Noisy') plt.xticks([]), plt.yticks([]) plt.subplot(133), plt.imshow(filtered_img, cmap='gray'), plt.title('Filtered') plt.xticks([]), plt.yticks([]) plt.show() ``` 希望这可以帮助到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值