OpenCV---图像直方图
一:直方图的直接使用
from matplotlib import pyplot as plt
def plot_demo(image): print(image.ravel()) plt.hist(image.ravel(),256,[0,256]) #ravel将图像3维转一维数组,便于统计频率 # 统计为256个bin,显示0-256bin,意思是全部显示,我们可以设置只显示一部分 plt.show()
src = cv.imread("./1.png") #读取图片 cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) #创建GUI窗口,形式为自适应 cv.imshow("input image",src) #通过名字将图像和窗口联系 image_hist(src) cv.waitKey(0) #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作 cv.destroyAllWindows() #销毁所有窗口
二:联系OpenCV使用直方图
def image_hist(image):
color = ("blue","green","red")
for i,color in enumerate(color):
hist = cv.calcHist([image],[i],None,[256],[0,256])
plt.plot(hist,color=color) #传入直方图数据,设置显示颜色
plt.xlim([0,256]) #设定图标的上下限,默认是全选,可不用设置
plt.show()
1.def calcHist(images, channels, mask, histSize, ranges, hist=None, accumulate=None): # real signature unknown; restored from __doc__
images:输入图像 channels:需要统计直方图的第几通道 mask:掩膜,,计算掩膜内的直方图 ...Mat() histSize:指的是直方图分成多少个区间,就是 bin的个数 ranges: 统计像素值得区间 hist:输出的直方图数组 accumulate=false:在多个图像时,是否累计计算像素值得个数
根据直方图的波峰可以判断图像的主要特征,可以用于图像的分割,根据各个波峰
作者:山上有风景
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?