OpenCV_PY_1.6操作图片颜色值

一、操作灰度图

实验目的:实现灰度图颜色值的循环递增

相关代码

numpy.zeros(shape, dtype=float, order='C')

参数说明

  • shape:数组的形状,可以是一个整数,表示创建一个一维数组;也可以是一个整数元组,表示创建一个多维数组。
  • dtype:可选参数,指定数组的数据类型,默认为 float。
  • order:可选参数,指定数组在内存中的存储顺序,默认为 'C',即按行存储。

测试代码

import cv2
import numpy as np

img = np.zeros((460, 680), dtype=np.uint8)  # 创建一副高460,宽680的单通道黑色图
n = 0  # 初始化n
while True:
    cv2.imshow('GrayImg', img)  # 在GrayImg窗口显示图片img
    n += 20
    img[:, :] = n  # 图像全高和全宽的颜色值改为n
    print(img[1, 1])  # 打印图片颜色值
    key = cv2.waitKey(1000)
    if key == 27 or 255 - 20 < n:  # 设置退出循环条件
        break
cv2.destroyAllWindows()  # 关闭所有窗口

总结

为什么要使用numpy.zeros()创建numpy数组的方式创建黑色图片?

  • opencv中图片是个numpy数组
  • opencv中图片数组的数据类型可以是uint8、float32,这里使用np.uint8是因为要指定像素值的范围。np.uint8表示无符号8位整数,其范围为 0 到 255,0表示黑色,255表示白色。
  • zeros表示创建的数组的元素值为0

二、操作彩图

前提需知

关于img[h1:h2,w1:w2,c]的分析

图像的shape有HWC三个属性(高/宽;长;通道数),img[h1:h2,w1:w2,c]就是对应这三个属性

img[h1:h2,w1;w2,c] 表示图像 高h1至h2,长w1至w2的范围

img[:h2,w1;,c] 表示图像 高0至h2,长w1至图像最长处的范围

img[:,;,c] 表示图像 全高,全长的范围

实验目的:创建一副彩图,上中下三部分分别为蓝绿红,之后每隔1s轮换区域颜色

测试代码

# 创建一副彩色图像,上中下依次为蓝、绿、红,且每隔一秒轮换一次
import cv2
import numpy as np

img = np.zeros((450, 680, 3), np.uint8)  # 创建3通道的黑色图片
# 3通道彩图的通道顺序为bgr,img[:,:,0]这里调用的是img图片的b通道
a0 = 0
a1 = 1
a2 = 2
while True:
    img[:150, :, a0] = 255  # 将图片高:0-150区域的b通道初始像素值改为255,显示蓝色
    img[150:300, :, a1] = 255  # 将图片高:150-300区域的g通道初始像素值改为255,显示绿色
    img[300:, :, a2] = 255  # 将图片高:300-680区域的r通道初始像素值改为255,显示红色
    cv2.imshow('ColorImg', img)  # 显示图片
    key = cv2.waitKey(1000)  # 等待1秒
    img[:, :, :] = 0  # 将图片变为黑色,重置

    # 改变a0、a1、a2的值,即可改变对应的通道
    temp = a2
    a2 = a1
    a1 = a0
    a0 = temp
    if key == 27:
        break
cv2.destroyAllWindows()

总结

一张3通道彩图中的通道顺序是bgr,0代表b(蓝)通道;1代表g(绿)通道;2代表r(红)通道

具体例子请参考:http://t.csdnimg.cn/gGmQL

2023/07/25/17:40

OpenCV学习笔记,这个点吃饭要紧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值