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)
相关文章
|
3月前
|
算法 计算机视觉
基于qt的opencv实时图像处理框架FastCvLearn实战
本文介绍了一个基于Qt的OpenCV实时图像处理框架FastCvLearn,通过手撕代码的方式详细讲解了如何实现实时人脸马赛克等功能,并提供了结果展示和基础知识回顾。
112 7
基于qt的opencv实时图像处理框架FastCvLearn实战
|
19天前
|
计算机视觉 开发者 Python
利用Python进行简单的图像处理
【10月更文挑战第36天】本文将引导读者理解如何使用Python编程语言和其强大的库,如PIL和OpenCV,进行图像处理。我们将从基本的图像操作开始,然后逐步深入到更复杂的技术,如滤波器和边缘检测。无论你是编程新手还是有经验的开发者,这篇文章都将为你提供新的视角和技能,让你能够更好地理解和操作图像数据。
|
2月前
|
计算机视觉 Python
python利用pyqt5和opencv打开电脑摄像头并进行拍照
本项目使用Python的PyQt5和OpenCV库实现了一个简单的摄像头应用。用户可以通过界面按钮打开或关闭摄像头,并实时预览视频流。点击“拍照”按钮可以捕捉当前画面并保存为图片文件。该应用适用于简单的图像采集和处理任务。
115 0
python利用pyqt5和opencv打开电脑摄像头并进行拍照
|
2月前
|
机器学习/深度学习 算法 计算机视觉
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
75 2
|
3月前
|
机器学习/深度学习 计算机视觉 Python
opencv环境搭建-python
本文介绍了如何在Python环境中安装OpenCV库及其相关扩展库,包括numpy和matplotlib,并提供了基础的图像读取和显示代码示例,同时强调了使用Python虚拟环境的重要性和基本操作。
|
2月前
|
算法 数据可视化 计算机视觉
Python中医学图像处理常用的库
在Python中,医学图像处理常用的库包括:ITK(及其简化版SimpleITK)、3D Slicer、Pydicom、Nibabel、MedPy、OpenCV、Pillow和Scikit-Image。这些库分别擅长图像分割、配准、处理DICOM和NIfTI格式文件、图像增强及基础图像处理等任务。选择合适的库需根据具体需求和项目要求。
65 0
|
2月前
|
数据挖掘 计算机视觉 Python
基于Python的简单图像处理技术
【10月更文挑战第4天】在数字时代,图像处理已成为不可或缺的技能。本文通过Python语言,介绍了图像处理的基本方法,包括图像读取、显示、编辑和保存。我们将一起探索如何使用PIL库进行图像操作,并通过实际代码示例加深理解。无论你是编程新手还是图像处理爱好者,这篇文章都将为你打开一扇新窗,让你看到编程与创意结合的无限可能。
WK
|
4月前
|
计算机视觉 Python
如何使用OpenCV进行基本图像处理
使用OpenCV进行基本图像处理包括安装OpenCV,读取与显示图像,转换图像颜色空间(如从BGR到RGB),调整图像大小,裁剪特定区域,旋转图像,以及应用图像滤镜如高斯模糊等效果。这些基础操作是进行更复杂图像处理任务的前提。OpenCV还支持特征检测、图像分割及对象识别等高级功能。
WK
51 4
|
4月前
|
计算机视觉 开发者 Python
使用Python进行简单图像处理
【8月更文挑战第31天】 本文将介绍如何使用Python编程语言来处理图像。我们将通过代码示例来展示如何读取、显示、编辑和保存图像文件。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供一个清晰的指引,帮助你开始自己的图像处理项目。
|
4月前
|
机器学习/深度学习 人工智能 监控
利用Python和OpenCV实现实时人脸识别系统
【8月更文挑战第31天】本文将引导您了解如何使用Python结合OpenCV库构建一个简易的实时人脸识别系统。通过分步讲解和示例代码,我们将探索如何从摄像头捕获视频流、进行人脸检测以及识别特定个体。本教程旨在为初学者提供一条明晰的学习路径,帮助他们快速入门并实践人脸识别技术。