OpenCV(python)——一键入门--第2篇(最值和均值方差)

举报
拓佑豪 发表于 2021/07/16 12:34:43 2021/07/16
【摘要】 主要介绍像素点的遍历,最大最小值的计算,以及均值方差计算

如果你还对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的表

716aa9c5b87438975d237222b269e1e.png


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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200