【opencv-python 2】进行图像像素进行操作

用到的函数

t1 = cv.getTickCount() # 获取时间
(t2-t1)/cv.getTickFrequency() # 计算消耗的时间
cv.bitwise_not(image) # 像素取反
print(image.size) # 获取图像的尺寸信息
img = np.zeros([400,400,3],np.uint8) # 创建一个三通道的图像

因为python里面没有指针的操作,所以在对图像进行像素操作的时候,就无法使用指针。

在python-opencv里面,图像是一个Numpy数组的形式存储的,如何进行像素的读取和操作,请看下面的例子:

代码示例:

import cv2 as cv
import numpy as np

# 定义一个处理图像像素的函数
def acces_pixels(image):
    print(image.size)
    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))
    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.bitwise_not就可以实现

    cv.imshow('result',image)


# 生成一个图像
def creat_image():

    #3 channels,
    img = np.zeros([400,400,3],np.uint8)
    img[:,:,2] = np.ones([400,400])*255 # BGR

    cv.imshow('new image',img)

    # 1 channels
    img1 = np.ones([400,400,1],np.uint8)
    img1 = img1*255
    cv.imshow('img1',img1)

# load a existed image
src = cv.imread('./images/demo.png')
cv.namedWindow('input image',cv.WINDOW_AUTOSIZE)
cv.imshow('input image',src)

t1 = cv.getTickCount()# 计时开始

creat_image()

t2 = cv.getTickCount()
print("time:",(t2-t1)/cv.getTickFrequency()) # 单位是秒

# pause
cv.waitKey(0)
cv.destroyAllWindows()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值