OpenCV自学笔记2:访问图像数据

访问图像数据

引言:
由于图像在计算机中的表示是一个矩阵,因此我们时不时需要访问或修改矩阵中的数据,实现基本的图像处理。同时Python提供了一个开源计算库:numpy,可以非常方便地用于矩阵计算。

# -*- coding:utf-8 -*-

import cv2

# imread函数用于读入一幅图像,该函数的返回值是一个矩阵
image = cv2.imread('images/test.jpg')

# numpy.array提供了item()函数,可以访问矩阵中特定位置的特定通道的像素值
# 函数有三个参数:x, y 和通道
print(image.item(150, 120, 0)) # 输出一个整数,我这里是216

# itemset()函数可设定像素值
# 函数有两个参数:一个三元组(x, y 和通道)和要设定的像素值
image.itemset((150, 120, 0), 255)

print(image.item(150, 120, 0)) # 输出新设定的值,255

cv2.waitKey(0)

程序的运行结果如下:

这里写图片描述

————————————————————————–

将指定通道(B、G、R中的G)的值置为0

# -*- coding:utf-8 -*-

import cv2

image = cv2.imread('images/test.jpg')
cv2.namedWindow("Image")

# 获得所有行和列的全部像素,1是B、G、R中G的下标
image[:, :, 1] = 0 # B、G、R中的G

cv2.imshow("Image", image)

cv2.waitKey(0)

程序的运行结果如下:

这里写图片描述

————————————————————————–

将感兴趣区域涂黑

import cv2

image = cv2.imread('images/test.jpg')
cv2.namedWindow("Image")

# 我们设置(0,0)到(100,100)的正方形区域为感兴趣区
roi = image[0:100, 0:100] 
roi[:] = 0 #将roi区域内的全部像素设置为0,0表示黑色

cv2.imshow("Image", image)

cv2.waitKey(0)

程序的运行结果如下,我们可以看到(0,0)到(100,100)的正方形区域被置为黑色:

这里写图片描述

————————————————————————–

复制感兴趣区域

# -*- coding:utf-8 -*-


import cv2

image = cv2.imread('images/test.jpg')
cv2.namedWindow("Image")

roi = image[0:100, 0:100] #设置感兴趣区域

# 将感兴趣区域的像素复制给(200, 200)到(300, 300)的正方形区域
# 两个区域的大小需要相同,大小不仅包括长宽,还要求通道数也相等
image[200:300, 200:300] = roi 

cv2.imshow("Image", image)

cv2.waitKey(0)

程序的运行结果如下,我们可以看到(200,200)到(300,300)的正方形区域 与 (0,0)到(100,100)的正方形区域具有相同的像素值:

这里写图片描述

下一节,将介绍使用OpenCV进行图像的边缘检测

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值