OpenCV 基于Numpy对图像进行基础操作


title: OpenCV 基于Numpy对图像进行基础操作

OpenCV 基于Numpy对图像进行基础操作

学习代码如下(可直接复制使用):

import numpy as np
import cv2 as cv

image = cv.imread(r'C:\Users\Admin\Desktop\opencv\jumao-001.jpg')
'''
访问和修改像素值:

你可以通过行和列坐标来访问像素值。
对于 BGR 图像,它返回一个由蓝色、绿色和红色值组成的数组。
对于灰度图像,只返回相应的灰度。
px = image[x, y]  -> 获取图像中x行,y列的像素值,BGR返回(blue, green, red),grad返回灰度值
px = image[x, y, number]
x: 行坐标
y: 列坐标
number: 取值范围0~2,既对应通道的返回值
        0:blue, 1: green, 2: red
'''
px = image[100, 100]
print(px)
# 仅访问蓝色像素
blue = image[100, 100, 0]
print(blue)
print(image.item(100, 100, 0))
'''
使用numpy修改图像像素值,此方法用于修改一整行或者一整列的像素值
不适合单个像素值修改!
Numpy是用于快速数组计算的优化库。
因此,简单地访问每个像素值并对其进行修改将非常缓慢,因此不建议使用
'''
image[100] = [255, 255, 255]    # 第100行的BGR值设置为255
print(image[100, 100])
print(image[90, 100])
'''
注意 上面的方法通常用于选择数组的区域,例如前5行和后3列。
对于单个像素访问,Numpy数组方法array.item()和array.itemset())被认为更好,但是它们始终返回标量。
如果要访问所有B,G,R值,则需要分别调用所有的array.item()
'''
# 访问 RED 值
image.item(10, 10, 2)
# 修改 RED 值
image.itemset((10, 10, 2), 100)
image.item(10, 10, 2)
'''
访问图像属性
图像属性包括行数,列数和通道数,图像数据类型,像素数等。
'''
# image.shape,它返回行,列和通道数的元组(如果图像是彩色的)
print(image.shape)
# 像素总数访问 image.size
print(image.size)
# 图像数据类型 image.dtype
print(image.dtype)
'''
图像感兴趣区域ROI
'''
#          左上坐标   右下坐标
eye = image[140:60, 175:85]
image[10:10, 50:50] = eye
cv.imshow('image', image)
'''
拆分和合并图像通道
cv.split()是一项耗时的操作(就时间而言)。
因此,仅在必要时才这样做。否则请进行Numpy索引
'''
b, g, r = cv.split(image)   # 拆分为blue,green,red
image = cv.merge((b, g, r))     # 合
# 或者
b = image[:, :, 0]  # 拆出blue通道,其他通道类似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值