从头学习opencv(2)--numpy数组操作

在这里插入图片描述

代码

import cv2 as cv
import numpy as np


def access_pixels(image):
    print(image.shape)
    height=image.shape[0]
    width=image.shape[1]
    # 管道数
    channels=image.shape[2]
    print("height:%s width:%s channels:%s "%(height,width,channels))
    # range默认从0开始,到height
    for row in range(height):
        for col in range(width):
            for c in range(channels):
                # 一个三维数组
                pv=image[row,col,c]
                image[row,col,c]=255-pv
    cv.imshow("pixels_demo",image)


def create_image():
    #三维多通道
    # 创建一个全0数组
    img=np.zeros([400,400,3],np.uint8)
    # 第一通道改变,变为蓝色
    # 255代表白色,0代表黑色
    img[:,:,0]=np.ones([400,400])*255
    # 第二通道改变,变为绿色
    img[:, :, 1] = np.ones([400, 400]) * 255
    # 第三通道改变,变为红色
    img[:, :, 2] = np.ones([400, 400]) * 255
    #cv.imshow("image",img)

    #三维单通道
    img=np.zeros([400,400,1],np.uint8)
    # 127代表灰色
    img[:,:,0]=np.ones([400,400])*127
    # 上面两式可以简写成
    #img=np.ones([400,400,1],np.uint8)
    #img=img*127
    cv.imshow("image", img)

    #二维
    m1=np.ones([3,3],np.uint8)
    m1.fill(12222.388)
    print(m1)

    #一维
    #通过reshape,将二维变为一维
    m2=m1.reshape([1,9])
    print(m2)

   #也可以直接创建一个数组
    m3=np.array([2,3,4],[4,5,6],[7,8,9],np.uint32)
    m3.fill(9)
    print(m3)

src = cv.imread("C:/Users/Administrator/Desktop/demo.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
# CPU到当前所转的时间圈数
t1=cv.getTickCount()
create_image()
# access_pixels(src)
t2=cv.getTickCount()
# 圈数除以频率就是所用的时间。单位是ms,所以乘1000
print("time:%s ms"%(((t2-t1)/cv.getTickFrequency())*1000))
cv.waitKey(0)
cv.destroyAllWindows()
print("Hi,python!")

感觉代码注释都说的比较清楚了,没有什么补充的

上面的函数access_pixels(image),是一个取反色的函数,可以直接用另外一个函数inverse代替

def inverse(image):
    dst=cv.bitwise_not(image)
    cv.imshow("inverse demo",dst)

之后引用这个函数就可以了

inverse(src)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值