opencv图像处理基础(python)

简介: opencv图像处理基础(python)

numpy 访问图像

Numpy.array库是Python处理图像的基础。

在OpenCV中,通道的顺序是B→G→R

在OpenCV中,最小的数据类型是无符号的8位数

可以使用image[0,0]访问图像image第0行第0列位置上的像素点

先行后列: img[行,列]

使用Numpy库中的函数zeros()可以生成一个元素值都是0的数组,并可以直接使用数组的索引对其进行访问、修改。

img=np.zeros((8,8), dtype=np.uint8)

RGB模式的彩色图像在读入OpenCV内进行处理时,会按照行方向依次读取该RGB图像的B通道、G通道、R通道的像素点,并将像素点以行为单位存储在ndarray的列中。

在OpenCV内以BGR模式的三维数组形式存储

可以使用表达式访问数组内的值。

例如,可以使用image[0,0,0]访问图像image的B通道内的第0行第0列上的像素点,式中:

● 第1个索引表示第0行。

● 第2个索引表示第0列。

第3个索引表示第0个颜色通道。

绿色通道值 : green[:, :,1]=255

item()和itemset()

使用numpy.array访问像素

numpy.array提供了item()和itemset()函数来访问和修改像素值

函数item()能够更加高效地访问图像的像素点,该函数的语法格式为:

item(行,列)

函数itemset()可以用来修改像素值,其语法格式为:

itemset(索引值,新值)
import cv2
import numpy as np 
//使用Numpy中的random.randint可以生成一个随机数组
img = np.random.randint(10,99,size=[5,5],dtype=np.uint8)
value = img.item(3,2)
img.itemset((3,2),255)
print(value)
print(img)

函数item()访问RGB模式图像的像素值时,其语法格式为:

item(行,列,通道)

函数itemset()修改(设置)RGB模式图像的像素值时,其语法格式为:

itemset(三元组索引值,新值)

需要注意,针对RGB图像的访问,必须同时指定行、列以及行列索引(通道),例如img.item(a, b, c)。

仅仅指定行和列是不可以的。

感兴趣区域

ROI: Region of Interest, ROI

将一个感兴趣区域A赋值给变量B后,可以将该变量B赋值给另外一个区域C,从而达到在区域C内复制区域A的目的。

获取右侧的ROI: img[200:400,600:800] 先行后列

通道操作

Opencv中通道是按B->G->R的顺序存储的。

通道拆分

  • 通过索引拆分
b = img[ : , : , 0 ]
g = img[ : , : , 1 ]
r = img[ : , : , 2 ]
  • 通过函数拆分
b, g, r=cv2.split(img)
b=cv2.split(a)[0]
g=cv2.split(a)[1]
r=cv2.split(a)[2]

通道合并

bgr=cv2.merge([b, g, r])

获取图像属性

  • shape
    如果是彩色图像,则返回包含行数、列数、通道数的数组
    如果是二值图像或者灰度图像,则仅返回行数和列数。
  • size
    返回图像的像素数目。其值为“行×列×通道数”,灰度图像或者二值图像的通道数为1。
  • dtype
    返回图像的数据类型
print("图像的属性")
print(img.shape)
print(img.size)
print(img.dtype)
----------------------
图像的属性
(5, 5)
25
uint8

例子

import cv2
import numpy as np 
img = np.random.randint(10,99,size=[5,5,3],dtype=np.uint8)
value = img.item(3,2,0)
img.itemset((3,2,0),255)
print("-----------")
print("img")
print(img)
print("-----------")
print("split")
b,g,r = cv2.split(img)
print("b")
print(b)
print("g")
print(g)
print("r")
print(r)
print("-----------")
print("merge")
img_m = cv2.merge([b,g,r])
print(img_m)
print("-----------")
print("图像的属性")
print(img.shape)
print(img.size)
print(img.dtype)
相关文章
|
2月前
|
存储 计算机视觉 异构计算
使用python&C++对bubbliiiing的yolo系列进行opencv.dnn进行推理部署
使用python&C++对bubbliiiing的yolo系列进行opencv.dnn进行推理部署
36 0
|
2月前
|
存储 数据库 计算机视觉
Python图像处理库:学会Pillow再也不用PS啦
Python图像处理库:学会Pillow再也不用PS啦
|
2月前
|
人工智能 Linux API
OpenCV这么简单为啥不学——1.1、图像处理(灰度图、模糊图片、GaussianBlur函数、提取边缘、边缘膨胀、边缘细化)
OpenCV这么简单为啥不学——1.1、图像处理(灰度图、模糊图片、GaussianBlur函数、提取边缘、边缘膨胀、边缘细化)
42 0
|
7天前
|
机器学习/深度学习 人工智能 算法
图像处理与分析:Python中的计算机视觉应用
【4月更文挑战第12天】Python在计算机视觉领域广泛应用,得益于其丰富的库(如OpenCV、Pillow、Scikit-image)和跨平台特性。图像处理基本流程包括获取、预处理、特征提取、分类识别及重建生成。示例代码展示了面部和物体检测,以及使用GAN进行图像生成。
|
6天前
|
计算机视觉 Python
如何利用Python实现简单的图像处理功能
本文介绍了如何使用Python编程语言和相关库实现简单的图像处理功能。通过学习本文,读者将了解如何读取图像文件、调整图像大小、修改图像亮度和对比度、应用滤镜效果以及保存处理后的图像。这些技术将帮助读者快速入门图像处理领域,并为他们进一步探索更高级的图像处理技术打下基础。
|
9天前
|
算法 Serverless 计算机视觉
opencv 直方图处理(python)
opencv 直方图处理(python)
|
1月前
|
机器学习/深度学习 人工智能 算法
用于图像处理的Python顶级库 !!
用于图像处理的Python顶级库 !!
23 1
|
1月前
|
算法 数据可视化 计算机视觉
使用Python实现图像处理中的边缘检测算法
图像处理中的边缘检测是计算机视觉和图像识别领域的重要技术之一。本文将介绍如何利用Python语言实现常见的边缘检测算法,包括Sobel、Canny等,并结合实例演示其在图像处理中的应用。
|
2月前
|
C++ 计算机视觉 Python
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)
38 0
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)
|
2月前
|
编解码 算法 自动驾驶
探索OpenCV:图像处理的利器
探索OpenCV:图像处理的利器
30 0

热门文章

最新文章