使用Python的OpenCV库(cv2)提取图片的R、G、B颜色分量并分别显示

本文展示了如何使用Python的OpenCV库加载图像,分离BGR颜色通道,创建单独的红色、绿色和蓝色通道图像,并使用matplotlib展示结果,强调了从BGR到RGB颜色顺序转换的重要性。
摘要由CSDN通过智能技术生成
import cv2
import numpy as np
from matplotlib import pyplot as plt

# 加载图像文件(和代码文件在同一文件夹)
image = cv2.imread('./susu (1).jpg')

# OpenCV默认使用BGR颜色顺序
B, G, R = cv2.split(image)

# 创建全黑的图像用于仅显示一个颜色通道
zeros = np.zeros(image.shape[:2], dtype="uint8")

# 对于每个颜色分量,创建颜色的图像
img_red = cv2.merge([R, zeros, zeros])
img_green = cv2.merge([zeros, G, zeros])
img_blue = cv2.merge([zeros, zeros, B])

# 使用matplotlib显示结果
plt.figure(figsize=(10, 7))
# OpenCV默认使用BGR颜色顺序,因此在显示图像是要转换为RGB顺序,否则原图像的颜色会出错,可以自己试试
plt.subplot(1, 4, 1), plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)), plt.title('Original')
plt.subplot(1, 4, 2), plt.imshow(img_red), plt.title('Red component')
plt.subplot(1, 4, 3), plt.imshow(img_green), plt.title('Green component')
plt.subplot(1, 4, 4), plt.imshow(img_blue), plt.title('Blue component')
plt.show()

图中的coser:G44不会受伤

要在Python使用TVL1算法提取两张图片的光流特征水平分量、垂直分量和光应变,并将它们分别可视化为箭头图,可以使用OpenCV和Matplotlib。下面是一个示例代码: ```python import cv2 import numpy as np import matplotlib.pyplot as plt # 读取两张图片 image1 = cv2.imread('image1.jpg', 0) image2 = cv2.imread('image2.jpg', 0) # 创建一个TVL1光流对象 tvl1 = cv2.optflow.DualTVL1OpticalFlow_create() # 计算光流 flow = tvl1.calc(image1, image2, None) # 提取水平分量和垂直分量 flow_horizontal = flow[..., 0] flow_vertical = flow[..., 1] # 计算光应变 strain = np.sqrt(np.square(flow_horizontal) + np.square(flow_vertical)) # 创建水平分量的箭头图 fig, ax = plt.subplots() ax.imshow(image2, cmap='gray') ax.quiver(flow_horizontal, flow_vertical, color='red') # 显示水平分量的箭头图 plt.title("Horizontal Component") plt.show() # 创建垂直分量的箭头图 fig, ax = plt.subplots() ax.imshow(image2, cmap='gray') ax.quiver(flow_horizontal, flow_vertical, color='red') # 显示垂直分量的箭头图 plt.title("Vertical Component") plt.show() # 创建光应变的箭头图 fig, ax = plt.subplots() ax.imshow(image2, cmap='gray') ax.quiver(flow_horizontal, flow_vertical, color='red') # 显示光应变的箭头图 plt.title("Strain") plt.show() ``` 请确保你已经安装了OpenCV和Matplotlib,并将`image1.jpg`和`image2.jpg`替换为你要处理的图像文件。运行以上代码后,你将会看到分别表示水平分量、垂直分量和光应变的箭头图可视化结果。每个箭头的长度和方向表示了相应分量的大小和方向。 请注意,以上示例代码仅提供了基本的实现思路,你可以根据需要进行进一步的调整和优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值