北京网站设计公司jq成都柚米科技15临沂天元建设集团
web/
2025/10/3 20:37:06/
文章来源:
北京网站设计公司jq成都柚米科技15,临沂天元建设集团,南通市建设局网站6,个人简历网页模板下载目录
一、图像的基础知识
二、NumPy模块
三、图像色彩变化
3.1 RGB图像的分通道显示
3.2 HSV图像的分通道显示 一、图像的基础知识
总结的笔记#xff1a; 二值图: 每个像素取值 0或1,图像显示出来只有黑白色; 黑色:0 白色:1
灰度图: …目录
一、图像的基础知识
二、NumPy模块
三、图像色彩变化
3.1 RGB图像的分通道显示
3.2 HSV图像的分通道显示 一、图像的基础知识
总结的笔记 二值图: 每个像素取值 0或1,图像显示出来只有黑白色; 黑色:0 白色:1
灰度图: 每个像素8位表示(0~255)单通道显示亮度; 黑色:0 白色:255
彩色图: 每个像素有RGB三个通道分量表示,每个分量0~255,每个通道单拿出来都是一张灰度图;黑色(0,0,0) 白色(255,255,255)
RGB: R:红色 G:绿色 B:蓝色
Image(BGR),Merge(RGB): 三个图层的顺序不同,由上到下
HSV: H:色相 S:饱和度 V:明度OpenCV的 HSV格式中, H(色彩/色度)的取值范围是 [0,180],
S(饱和度)的取值范围 [0,255], V(亮度)取值范围 [0,255]图像色彩空间转换:cv2.cvtColor(img,code)img: 要更改其色彩空间的图像code: 色彩空间转换的代码cv2.COLOR_BGR2GRAY: 表示从 BGR转换为灰度图像cv2.COLOR_BGR2HSV: 表示从 BGR转换为 HSV图像图层(通道)分离:cv2.split(img)img: 要分离的图像图层(通道)合并:cv2.merge((a,b,c))a,b,c: 要合并的色彩通道 二、NumPy模块
NumPyNumerical Python是Python科学计算的核心库之一提供了高性能的多维数组对象ndarray和用于数组操作的函数。它还包括用于处理线性代数、傅里叶变换和随机数生成的工具。
下面是一些常用的 numpy 模块函数的表格
函数描述numpy.array()创建一个数组numpy.zeros()创建一个指定形状和数据类型的全零数组numpy.ones()创建一个指定形状和数据类型的全1数组numpy.arange()创建一个指定范围和步长的数组numpy.linspace()创建一个指定范围内等间距的数组numpy.reshape()改变数组的形状numpy.ndim()返回数组的维度numpy.size()返回数组中的元素数目numpy.dtype()返回数组的数据类型numpy.min()返回数组的最小值numpy.max()返回数组的最大值numpy.mean()返回数组的平均值numpy.sum()返回数组的和numpy.var()返回数组的方差numpy.std()返回数组的标准差numpy.dot()计算两个数组的点积numpy.transpose()反转数组的维度numpy.vstack()垂直堆叠数组numpy.hstack()水平堆叠数组numpy.concatenate()按指定的维度连接数组numpy.split()将数组分割为多个子数组numpy.insert()将元素插入到数组的指定位置numpy.delete()删除数组中的指定元素numpy.copy()复制数组numpy.sort()对数组进行排序numpy.unique()返回数组中的唯一值numpy.where()返回满足条件的数组元素的坐标numpy.isnan()检查数组元素是否为 NaNnumpy.isinf()检查数组元素是否为无穷大
这只是一小部分 numpy 模块函数的示例numpy 模块提供了许多其他功能强大的函数。你可以在 numpy 官方文档中找到更多信息https://numpy.org/doc/https://numpy.org/doc/ 三、图像色彩变化
图像颜色通道是指图像中的每个像素所包含的颜色信息。
在彩色图像中通常有三个颜色通道分别是红色通道R通道、绿色通道G通道和蓝色通道B通道。每个通道都包含着图像中相应颜色的亮度信息通过对这些通道的组合和调整可以得到不同的颜色效果和色彩变化。
除了RGB颜色模式外还有其他的颜色模式如CMYK模式青、品红、黄、黑等这些颜色模式也有对应的通道。在灰度图像中只有一个颜色通道代表灰度级别。
示例简易代码
import cv2# 加载图像
image cv2.imread(image.jpg) # 在运行代码时将image.jpg替换为您的图像文件路径# 分割图像的RGB通道
blue, green, red cv2.split(image)# 修改蓝色通道为0
blue blue * 0# 修改绿色通道为255
green green * 0 255# 修改红色通道为0
red red * 0# 合并修改后的通道
modified_image cv2.merge((blue, green, red))# 显示修改后的图像
cv2.imshow(Modified Image, modified_image)
cv2.waitKey(0) # 等待用户按下任意键
cv2.destroyAllWindows()
复杂代码需理解
import cv2
import numpy as np# 读取图像
image cv2.imread(image.png) # 在运行代码时将image.png替换为您的图像文件路径# 提取RGB颜色通道
red_channel image[:,:,2]
green_channel image[:,:,1]
blue_channel image[:,:,0]# 将RGB颜色通道转换为不同颜色值
red_channel np.zeros(red_channel.shape, dtypenp.uint8) # 设置红色通道为0
green_channel np.zeros(green_channel.shape, dtypenp.uint8) # 设置绿色通道为0
blue_channel np.ones(blue_channel.shape, dtypenp.uint8) * 255 # 设置蓝色通道为255# 将修改后的颜色通道重新组合成图像
new_image cv2.merge((blue_channel, green_channel, red_channel))# 显示原始图像和修改后的图像
cv2.imshow(Original Image, image) # 名称可修改
cv2.imshow(Modified Image, new_image) # 名称可修改# 保存修改后的图像
cv2.imwrite(output.jpg, new_image)# 等待按下任意键关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows() 3.1 RGB图像的分通道显示
在OpenCV中图像通道表示图像中的颜色信息。通常一个彩色图像会有三个通道分别是红色通道、绿色通道和蓝色通道。每个通道都表示了图像中对应颜色的亮度或强度。
在OpenCV中可以使用函数cv2.split()来将彩色图像分离为各个通道。这个函数将返回一个包含各个通道的列表。
以下是一个使用OpenCV分离RGB图像通道的例子
import cv2# 读取彩色图像
image cv2.imread(image.jpg)# 分离通道
b, g, r cv2.split(image)# 显示分离的通道
cv2.imshow(Blue, b)
cv2.imshow(Green, g)
cv2.imshow(Red, r)# 等待按下任意按键继续程序
cv2.waitKey(0)
cv2.destroyAllWindows()在上面的例子中cv2.split()函数将彩色图像分离为红色通道r 通道、绿色通道g 通道和蓝色通道b 通道。我们通过cv2.imshow()函数将每个通道显示出来。
注意
在将通道分离后每个通道的数据类型是uint8并且只包含该通道的像素值。 3.2 HSV图像的分通道显示
cv2.cvtColor()函数是OpenCV库中用于图像颜色空间转换的函数。该函数的返回值是转换后的图像。它的原型为
cv2.cvtColor(src, code[, dst[, dstCn]]) - dst参数解释
src输入图像可以是NumPy数组或图片文件的路径。code颜色空间转换的代码可以是下面这些之一 cv2.COLOR_BGR2GRAYBGR彩色图像转灰度图。cv2.COLOR_BGR2HSVBGR彩色图像转HSV颜色空间。cv2.COLOR_BGR2RGBBGR彩色图像转RGB颜色空间。cv2.COLOR_BGR2LABBGR彩色图像转Lab颜色空间。cv2.COLOR_BGR2YCrCbBGR彩色图像转YCrCb颜色空间。dst可选参数输出的图像数组。如果不提供该参数函数会自动创建一个与输入图像相同类型和大小的数组。dstCn可选参数输出图像的通道数。如果该参数为0则输出图像和输入图像通道数相同。否则输出图像将被重新处理为指定的通道数。
以下是一个使用OpenCVBGR转换为 HSV图像再进行分离图像通道的例子 import cv2 as cvimg cv.imread(D:/Open_CV/OpenCV_demo/Pictures/r4.png,1)
# 或 img cv.imread(Pictures/r4.png,cv.IMREAD_COLOR)img cv.resize(img,(320,320),interpolationcv.INTER_AREA) # 图像缩放 (长,宽)R,G,B cv.split(img)
MergeRGB cv.merge((R,G,B)) # 三个图层的顺序不同,由上到下
MergeBGR cv.merge((B,G,R))hsv_img cv.cvtColor(img,cv.COLOR_BGR2HSV) # 表示从 BGR转换为 HSV图像
H,S,V cv.split(hsv_img) # 图层(通道)分离成 H,S,V
MergeHSV cv.merge((H,S,V)) # 将 H,S,V 合并cv.imshow(R4,img)
cv.imshow(B,B)
cv.imshow(G,G)
cv.imshow(R,R)
cv.imshow(MergeRGB,MergeRGB)
cv.imshow(MergeBGR,MergeBGR)cv.imshow(H,H)
cv.imshow(S,S)
cv.imshow(V,V)
cv.imshow(MergeHSV,MergeHSV)xin cv.waitKey(0) # 按 ESC键关闭所有窗口
if xin 27: cv.destroyAllWindows()运行结果
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86410.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!