栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

OpenCV-picturebyNumpy

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenCV-picturebyNumpy


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

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

import numpy as np
import cv2 as cv

image = cv.imread(r'C:UsersAdminDesktopopencvjumao-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通道,其他通道类似

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/929616.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号