python-3.x - 如何用OpenCV增强图片中的局部亮度
问题描述
我是 python 新手,我正在做一些研究,以通过 python 自动从 Bite-Wing 射线照相中找到问题。
我这里有一张照片。 在此处输入图像描述
我想增强图片右半部分的亮度,因此我可以得到一个完整的二值化图像。
但是网上的解决方案只能增强图片的对比度。
这是我的代码,我想知道我可以改进什么?也许我可以改变阈值?
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('299.jpg',0)
img = cv2.equalizeHist(img)
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
cl1 = clahe.apply(img)
res = np.hstack((img, cl1))
img = cl1
ret1,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
ret2,th2 = cv2.threshold(img,100,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
blur = cv2.GaussianBlur(img,(5,5),0)
ret3,th3 = cv2.threshold(blur,100,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
images = [img, 0, th1,
img, 0, th2,
blur, 0, th3]
titles = ['Original Noisy Image','Histogram','Global Thresholding (v=127)',
'Original Noisy Image','Histogram',"Otsu's Thresholding",
'Gaussian filtered Image','Histogram',"Otsu's Thresholding"]
for i in range(3):
plt.subplot(3,3,i*3+1),plt.imshow(images[i*3],'gray')
plt.title(titles[i*3]), plt.xticks([]), plt.yticks([])
plt.subplot(3,3,i*3+2),plt.hist(images[i*3].ravel(),256)
plt.title(titles[i*3+1]), plt.xticks([]), plt.yticks([])
plt.subplot(3,3,i*3+3),plt.imshow(images[i*3+2],'gray')
plt.title(titles[i*3+2]), plt.xticks([]), plt.yticks([])
plt.show()
解决方案
推荐阅读
- spring-boot - Oauth2.0 授权代码流与现有 Spring 启动应用程序
- python - matplotlib python中带有三个y轴的三个条形图
- ios - 将 IAP 的 Apple 订阅状态更新到我们的服务器
- c# - 使用源标准实现 LINQ min
- c# - C# 中 CSV 文件的多维数组
- microsoft-graph-api - 邮件地址在 odata 过滤器中包含 # 使其无效
- amazon-web-services - 在 AWS ElasticBeanstalk Nginx 中使用 gzip
- perl - 使用 Strawberry Perl 安装 DBD::Sybase
- javascript - 不允许使用 XMLHttpRequest 405 方法
- java - Collections.sort 方法抛出 class java.lang.Integer cannot be cast to class java.lang.Double 错误