使用opencv相关函数增强图像(空间域)

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



img = cv2.imread('img/bridge-3729954_1280.jpeg')
#绘制黑白图像的直方图。
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#plt.imshow(gray_img, cmap='gray')
gray_hist = plt.hist(gray_img.ravel(), bins = 256)
plt.xlabel('灰阶 $n$')
plt.ylabel('$h(n)$')
plt.show()
max(gray_hist[0])
list(gray_hist[0]).index(8233.0)

#在 RGB 色域中绘制图像直方图
img = cv2.imread('img/saint-petersbourg-1936035_1280.jpeg')
RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.hist(RGB_img[:, :, 0].ravel(), bins = 256, color = 'Red', alpha = 0.5)
plt.hist(RGB_img[:, :, 1].ravel(), bins = 256, color = 'Green', alpha = 0.5)
plt.hist(RGB_img[:, :, 2].ravel(), bins = 256, color = 'Blue', alpha = 0.5)
plt.legend(['Red (R)', 'Green(G)', 'Blue(B)'])
plt.xlabel(' $n$')
plt.ylabel('H(n)')
plt.show()
#比较 R、G 和 B 通道的强度分布密度估计值
plt.hist(RGB_img[:, :, 0].ravel(), bins = 256, color = 'Red', alpha = 0.5, density=True)
plt.hist(RGB_img[:, :, 1].ravel(), bins = 256, color = 'Green', alpha = 0.5, density=True)
plt.hist(RGB_img[:, :, 2].ravel(), bins = 256, color = 'Blue', alpha = 0.5, density=True)
plt.hist(RGB_img.ravel(), bins = 256, color = 'orange', alpha = 0.5, density=True)
plt.legend(['Red (R)', 'Green(G)', 'Blue(B)','合计'])
plt.xlabel(' $n$')
plt.ylabel('频率(n)')
plt.show()
#输入三个通道中的最高密度值:
max(plt.hist(RGB_img[:, :, 2].ravel(), bins = 256, color = 'Blue', alpha = 0.5, density=True)[0])


#线性归一化并扩展到 R、G 和 B 通道上的直方图范围。

img = cv2.imread('img/russia-2396022_1280.jpeg')
RGB_img_new = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
RGB_img_new[:, :, 0] = (RGB_img_new[:, :, 0] - np.min(RGB_img_new[:, :, 0]))/(np.max(RGB_img_new[:, :, 0]) - np.min(RGB_img_new[:, :, 0]))*255
RGB_img_new[:, :, 1] = (RGB_img_new[:, :, 1] - np.min(RGB_img_new[:, :, 1]))/(np.max(RGB_img_new[:, :, 1]) - np.min(RGB_img_new[:, :, 1]))*255
RGB_img_new[:, :, 2] = (RGB_img_new[:, :, 2] - np.min(RGB_img_new[:, :, 2]))/(np.max(RGB_img_new[:, :, 2]) - np.min(RGB_img_new[:, :, 2]))*255
#确定位于图像矩阵表示的行和列433,635交叉点的像素的 R、G、B 通道的强度。
RGB_img_new[433,635]

#将图像转换为 RGB 调色板并使用 cv2.GaussianBlur() 方法应用高斯内核,内核大小
img = cv2.imread('img/st-petersburg-3393467_1280.jpeg')
RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
RGB_img_new = cv2.GaussianBlur(RGB_img, (13,5), 5)
plt.imshow(RGB_img_new)
plt.show()
#图像轮廓
RGB_img_remaining = RGB_img - RGB_img_new
plt.imshow(RGB_img_remaining)
plt.show()
RGB_img_new2 = cv2.GaussianBlur(RGB_img_new, (13,5), 5)
RGB_img_remaining = RGB_img_new - RGB_img_new2
plt.imshow(RGB_img_remaining)
plt.show()

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


img = cv2.imread('img/blur_st-petersburg-3393467_1280.jpeg')
img_new = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img_new = cv2.medianBlur(img_new, 11)
plt.imshow(img_new, cmap='gray')
plt.show()

#
# img_new2 = cv2.GaussianBlur(img_new, (13,5), 3)
# img_remaining = img_new-img_new2
# # plt.imshow(img_remaining, cmap='gray')
# # plt.show()
# img_final = cv2.addWeighted(img_new, 1.5, img_remaining, -0.5,0)
# # kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
# # img_final = cv2.filter2D(img, -1, kernel)
# plt.imshow(img_final,cmap='gray')
# plt.show()


bridge-3729954_1280.jpeg

saint-petersbourg-1936035_1280.jpeg 

russia-2396022_1280.jpeg 

 st-petersburg-3393467_1280

blur_st-petersburg-3393467_1280.jpeg 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

фора 快跑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值