OpenCV-Python学习备忘录(1)----图像处理基础

OpenCV-Python实战(1)——OpenCV简介与图像处理基础icon-default.png?t=O83Ahttps://blog.csdn.net/LOVEmy134611/article/details/119489496?spm=1001.2014.3001.5506

以下为本人在学习博主盼小辉OpenCV系列教程时的粗略笔记,供自己复习备忘使用。

目录

一 加载图像

二 BGR转换RGB

三 彩色与灰度图像的加载

四 图像信息的读取

五 访问图像某一区域

六 展示图片的两种方法:

七 拼接图像

八 本次学习实例代码:

九 演示过程图:


一 加载图像

import cv2
img = cv2.imread('anime.png')

此时img即为一个表示图像的numpy数组,例如img[120,45,2]代表x=45,y=120像素处绿色通道的像素强度。

二 BGR转换RGB

1.使用cv2.split方法分离b,g,r三个通道,再通过cv2.merge方法按r,g,b顺序融合为新图像

b,g,r = cv2.split(img)
img_rgb = cv2.merge([r,g,b])

2.手动切片分离

b = img[:,:,0]
g = img[:,:,1]
r = img[:,:,2]
img_rgb = cv2.merge([r,g,b])

3.使用numpy数组处理方法直接将BGR数组倒置为RGB

img_rgb = img[:, :, ::-1]

4.直接使用cv2.cvtColor(image, cv2.COLOR_BGR2RGB)进行转换

三 彩色与灰度图像的加载

gray_img = cv2.imread('anime.png', cv2.IMREAD_GRAYSCALE)

只需在cv2.imshow函数中填入第二个可选参数即可,不填时默认加载彩色图像

四 图像信息的读取

  1. img.shape 行、列和通道的数量(如果图像是彩色的)
  2. img.size 图像的大小(图像高度 × 图像宽度 × 图像通道数)

五 访问图像某一区域

可以使用切片选取,如:

top_left_corner = img[0:50, 0:50]

六 展示图片的两种方法:

1.使用opencv自带方法展示:

cv2.imshow('img_bgr',img)
cv2.imshow('img_rgb',img_rgb)
cv2.waitKey(0)
cv2.destroyAllWindows()

此方法会根据图像大小确定窗口大小,对于高分辨率图像展示出来会很大

2.使用matplotlib库进行展示:

from matplotlib import pyplot as plt

plt.subplot(1,2,1)
plt.imshow(img)
plt.subplot(1,2,2)
plt.imshow(img_rgb)
plt.show()

其中plt.subplot用于确定放置图像的位置。

七 拼接图像

可以使用numpy的concatenate方法,第一个参数传入要连接的图像元组,第二个参数指定连接的方向

img_concats = np.concatenate((img,img_rgb),axis=1)

八 本次学习实例代码:

import cv2  # 导入OpenCV库,用于图像处理  
from matplotlib import pyplot as plt  # 导入matplotlib的pyplot模块,用于绘图  
import numpy as np  # 导入numpy库,用于数组和矩阵操作  
  
# 读取名为'anime.png'的图像文件  
img = cv2.imread('anime.png')  
  
# 从图像中分离出蓝色、绿色和红色通道(注意:OpenCV默认使用BGR顺序)  
# b,g,r = cv2.split(img)  # 这行代码也可以达到相同的目的  
b = img[:,:,0]  # 获取蓝色通道  
g = img[:,:,1]  # 获取绿色通道  
r = img[:,:,2]  # 获取红色通道  
  
# 打印蓝色通道的数据(通常不这样做,因为数据量很大,但这里为了示例)  
print(b)  
  
# 将分离的红色、绿色、蓝色通道重新合并成RGB图像  
# 注意:由于OpenCV默认使用BGR,所以这里直接合并会得到错误的颜色顺序,但这里故意这么做为了展示  
img_rgb = cv2.merge([r,g,b])  # 这将产生一个与原始图像颜色不同的图像(因为颜色通道顺序被改变了)  
  
# 使用matplotlib显示原始BGR图像和“错误”的RGB图像  
plt.subplot(1,2,1)  # 创建一个1行2列的子图,并激活第一个  
plt.imshow(img)  # 显示原始BGR图像  
plt.subplot(1,2,2)  # 激活第二个子图  
plt.imshow(img_rgb)  # 显示错误顺序的RGB图像(应为BGR)  
plt.show()  # 显示所有子图  
  
# 使用OpenCV的imshow函数显示原始BGR图像和错误顺序的RGB图像  
cv2.imshow('img_bgr',img)  # 显示原始BGR图像  
cv2.imshow('img_rgb',img_rgb)  # 显示错误顺序的RGB图像(在OpenCV中看起来颜色也是错误的)  
cv2.waitKey(0)  # 等待任意键按下  
cv2.destroyAllWindows()  # 关闭所有OpenCV创建的窗口  
  
# 将原始BGR图像和错误顺序的RGB图像在水平方向上拼接  
img_concats = np.concatenate((img,img_rgb),axis=1)  
# 使用OpenCV显示拼接后的图像  
cv2.imshow('imgconcats',img_concats)  
cv2.waitKey(0)  # 等待任意键按下  
cv2.destroyAllWindows()  # 关闭窗口

九 演示过程图:

继续加油~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值