OpenCV(python)——一键入门--第2篇(最值和均值方差)
【摘要】 主要介绍像素点的遍历,最大最小值的计算,以及均值方差计算
如果你还对OpenCV基础操作不熟悉,建议前往我的上一篇博客:OpenCV(python)——一键入门--第1篇
接下来还是简单和大家讨论一下OpenCV的各项基础操作:
1:像素点的遍历
我们可以使用numpy库,将各个像素进行像素遍历。下列代码是使用for循环,进行所有像素点取反的操作(需要导入cv2和numpy库)
src1 = cv.imread("d:/ma.jpg")
h, w, ch = src1.shape
for row in range(h):
for col in range(w):
b,g,r = src1[row,col]
b = 255 - b
r = 255 - r
g = 255 - g
src1[row,col] = [b,g,r]
cv.imshow("output-for",src1)
因为BGR的像素值都是0-255,所以减去255即可取反
2:色彩空间的知识点补充
hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV)
mask = cv.inRange(hsv, (35, 43, 46), (99, 255, 255))
cv.imshow("mask", mask)
使用方法如下:
···cvtColor(图像,转换的色彩空间)
···inRange(图像,色彩范围值lower,色彩范围值upper)
其中,inRange中后两个参数,是指:
图像中低于这个lower的值,高于这个upper的值,将其图像值变为0。在upper~lower之间的值变成255
比如我有一张光谱图像,经过inRange就可以得到如下图
如果使用均值来划分区域,代码如下
src4 = cv.imread("D:/p--1.jpg", cv.IMREAD_GRAYSCALE)#需要以灰度图像读取
means , stddev = cv.meanStdDev(src4)#计算均值与方差。stddev 是标准方差 mean 是均值
src4[np.where(src4 < means)] = 0
src4[np.where(src4 > means)] = 255
cv.imshow("binary", src4)
效果如图
附上一张hsv的表
3:计算图像均值方差
src4 = cv.imread("D:/p--1.jpg", cv.IMREAD_GRAYSCALE)#需要以灰度图像读取
min, max, minloc, maxloc = cv.minMaxLoc(src4)#给出最小值,最大值,最小值索引,最大值索引
means , stddev = cv.meanStdDev(src4)#计算均值方差
print("min: %.2f, max: %.2f"% (min, max))#打印最大最小值
print(f"minloc:{minloc} maxloc:{maxloc}")#打印最大最小值索引
print(f"means:{means} stddev :{stddev}")#打印均值方差
这里就不给出效果图,建议大家自行运行测试
4:colormap
'''
COLORMAP: --spring/summer/autumn/winter
--hot/cool/bone/rainbow/jet/pink/ocean/hsv
'''
divt = cv.applyColorMap(src2,cv.COLORMAP_OCEAN)#叠加colormap,注意大写
cv.imshow("color-map",divt)
比如下图,其效果就是叠加了海洋风格的colormap
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)