(五)OpenCV入门,代码练习,详细注释【动态视频】【50行】【原创】

文章目录


代码

import cv2 as cv
import numpy as np#导入NumPy数组
#opencv调用读取的视频没有声音/处理每一帧读取图片/对象检测跟踪/对视频大小有限制

#下面循环图片每一个像素
def access_pixels(image):  # 获取图片高宽通道/输入参数image
    print(image.shape)#打印图像形状/# 即(414,500,3)/这个与下面打印三个%s有区别
    height = image.shape[0]#第一个维度高度
    width = image.shape[1]#第二个维度宽度
    channels = image.shape[2]#第三个维度通道/BGR三通道顺序/0黑色/255白色
    # 也可以直接写成:/也可以写成下面格式
    # height, width, channels = image.shape[:]
    print("width: %s, height: %s, channels: %s"%(width, height, channels))#打印出各三个维度

    new_image = image.copy()  # 复制image图片
    for row in range(height):#默认从0到高度/roe行
        for col in range(width):#默认从0到宽度/col列
            for c in range(channels):#通道
                pv = image[row, col, c]#获取每一个像素点各数值
                new_image[row, col, c] = 256 - pv  # 图像反转/这一步过后好像是黑色变白色/白色变黑色/是的和下面inverse函数一样
    cv.imshow('pixels_demo', new_image)#打印新窗口名称pixels_demo


def create_image():#创建像素点/创建三维数组/三通道数组
    """创建三维数组,0维为B,1维为G,2维为R"""
    img = np.zeros([400, 400, 3], np.uint8)#设置长宽为400/cat比它大
    img[:, :, 0] = np.ones([400, 400]) * 255#仅获取三通道中0通道/即蓝通道
    img2 = np.zeros([400,400,1],np.uint8)#获取单通道/单通道一般就是灰度图
    img2[:, :, 0] = np.ones([400,400]) * 256#单通道127灰度图/如果是0就是纯黑色/255白色
    cv.imshow("new_image", img)
    cv.imshow("new_image2",img2)


def inverse(image):
    dst = cv.bitwise_not(image)  # 按位取反,白变黑,黑变白,效果和new_image一样
    cv.imshow("inverse_demo",dst)


if __name__ == '__main__':

    src = cv.imread("E:/jupyter-notebook/cat.jpg")  # 读入图片放进src中
    cv.namedWindow("Crystal Liu", cv.WINDOW_AUTOSIZE)  # 创建窗口, 窗口尺寸自动调整
    cv.imshow("Crystal Liu", src)  # 将src图片放入该创建的窗口中
    create_image()#

    t1 = cv.getTickCount()#获取当前电脑时钟滴答数

    access_pixels(src)
    inverse(src)
    t2 = cv.getTickCount()#获取access_pixels函数执行后的时钟滴答数
    time = (t2 - t1)/cv.getTickFrequency()  # 函数执行前后滴答数之差与滴答频率之比为前后时间差/单位为秒
    print("time: %s ms"%(time * 1000))#将单位变为ms
    cv.waitKey(0)

#NumPy数组/线性代数/傅里叶变换/数组操作/遍历数组中每一个像素点
#data/dtype/size等等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值