吉林市做网站,安陆网站建设推广,合肥电子商务开发网站建设,唐山网站建设哪家优惠Python学习笔记第八十天 OpenCV图像操作图像读取与显示像素值访问与修改图像属性获取ROI定义与处理通道拆分与合并图像边框设置 后记 OpenCV图像操作
图像读取与显示
在开始任何图像处理之前#xff0c;我们需要先读取图像。OpenCV提供了cv2.imread函数用于读取图像。这个函… Python学习笔记第八十天 OpenCV图像操作图像读取与显示像素值访问与修改图像属性获取ROI定义与处理通道拆分与合并图像边框设置 后记 OpenCV图像操作
图像读取与显示
在开始任何图像处理之前我们需要先读取图像。OpenCV提供了cv2.imread函数用于读取图像。这个函数接受两个参数图像的路径和读取模式例如是否以彩色或灰度模式读取。
import cv2
img cv2.imread(image.jpg)读取图像后我们可以使用cv2.imshow函数在窗口中显示图像。cv2.imshow需要两个参数窗口名称和要显示的图像。此外cv2.waitKey函数用于等待用户按键而cv2.destroyAllWindows则用于关闭所有打开的窗口。
cv2.imshow(Image Window, img)
cv2.waitKey(0) # 等待用户按键0表示无限等待
cv2.destroyAllWindows() # 关闭所有窗口像素值访问与修改
在OpenCV中你可以像访问数组一样访问图像的像素值。对于彩色图像像素值是一个包含三个通道BGR值的元组。你可以使用索引来访问特定位置的像素值。
pixel_value img[100, 100] # 访问坐标(100, 100)的像素值要修改像素值只需将新的值赋给相应的位置
img[100, 100] [255, 0, 0] # 将坐标(100, 100)的像素设置为红色BGR如果你想按通道访问像素值可以使用cv2.atchannel函数。例如要访问像素(x, y)的B通道值可以使用
b_value cv2.atuchar(y, x)[0] # 注意通道顺序为BGR所以索引为[0]表示B通道。图像属性获取
使用shape属性可以获取图像的维度和通道数。shape属性返回一个包含三个元素的元组分别表示图像的高度、宽度和通道数。
height, width, channels img.shape[:3] # 获取图像的高度、宽度和通道数ROI定义与处理
ROI感兴趣区域是图像处理中的一个重要概念它允许你处理图像的一部分而不是整个图像。你可以使用cv2.rectangle函数在图像上绘制矩形ROI。这个函数接受四个参数图像、矩形左上角的坐标、矩形的宽度和高度以及可选的线条颜色和线条宽度。如果你希望绘制一个填充的矩形可以将线条宽度设置为-1。
对于ROI的处理例如对ROI内的像素应用某些操作可以使用NumPy的切片语法。例如要获取矩形ROI内的像素值可以使用以下代码
roi img[50:50100, 50:50100] # 获取ROI的像素值通道拆分与合并
OpenCV中的彩色图像是按BGR顺序存储的。这意味着像素值包含蓝色、绿色和红色通道的值。如果你想单独处理这些通道可以使用cv2.split函数拆分通道。这个函数将返回一个通道列表。例如
channels cv2.split(img) # 将BGR通道拆分到三个通道中。有时你可能需要将通道合并为单通道或多通道图像。你可以使用cv2.merge函数合并通道。这个函数接受一个通道列表作为参数并返回合并后的图像。例如
img_merged cv2.merge([r, g, b]) # 合并通道注意通道顺序应为BGR所以需要将r, g, b的顺序改为r, g, b。图像边框设置
除了之前提到的在图像上绘制矩形边框外还可以使用cv2.copyMakeBorder函数添加边框。这个函数接受六个参数输入图像、输出图像、边框宽度、边框类型、可选的填充值和可选的边界值。边框类型可以是几种不同的选项之一包括常量、平铺重复和镜像反射等。例如
# 为图像添加5个像素的边框边框颜色为白色类型为矩形。
img_with_border cv2.copyMakeBorder(img, 5, 5, 5, 5, cv2.BORDER_CONSTANT, value[255, 255, 255])后记
今天学习的是Python OpenCV图像操作学会了吗。 今天学习内容总结一下
图像读取与显示像素值访问与修改图像属性获取ROI定义与处理通道拆分与合并图像边框设置