CV5 numpy入门及图像的基本操作

简介: 复制法,即复制最边缘的像素。
+关注继续查看

一 访问和改变像素点的值


  • 单独对一个像素操作


# 通过行列坐标来访问像素值
# 定义图片的一个像素点
px = img[100,100]
# 打印出这个像素的BGR数值
print(px)


  • 仅访问像素点的单个通道


# 仅访问蓝色像素
blue = img[100,100,0]
print(blue)


  • 改变像素点的颜色


# 对像素点单独变色
img[100,100] = [255,255,255]
print(img[100,100])


  • 调用函数改变像素


print(img.item(10,10,2))
img.itemset((10,10,2),100)
print(img.item(10,10,2))


二 访问图片属性


  • 返回图片大小(长宽像素点个数),颜色通道数


print(img.shape)


  • 返回总像素点个数


print(img.size)


  • 返回图像数据类型


print(img.dtype)


三 为图像设置边框(填充)


如果要在图像周围创建边框(如相框),则可以使用 cv.copyMakeBorder() 函数


对于这个函数


def copyMakeBorder(src: Any,
                   top: Any,
                   bottom: Any,
                   left: Any,
                   right: Any,
                   borderType: Any,
                   dst: Any = None,
                   value: Any = None) -> None


  1. src:需要填充的图像,即图像名
  2. top:图像上面填充边界的长度
  3. bottom:图像上下面填充边界的长度
  4. left:图像左面填充边界的长度
  5. right :图像右面填充边界的长度
  6. borderType:边界的类型


示例:


replicate = cv2.copyMakeBorder(img,300,300,300,300,cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(img,100,100,100,100,cv2.BORDER_REFLECT)


我们需重点讨论边界类型borderType

  • BORDER_REPLICATE


复制法,即复制最边缘的像素。例如:aaaa|abcdefg|ggggg


6f62d91d145ec04b.png


可以看到四边的像素点颜色都一样;原因是程序把最靠边的那个像素点都复制粘贴过去了


  • BORDER_REFLECT


反射法,即以最边缘的像素为对称轴。例如:fedcba|abcdefg|gfedec


466beb64ee1be84f.png


可以看到,以边界为轴,各个像素点镜像复制过去


  • BORDER_REFLECT_101、

反射法,也是最边缘的像素为对称轴,但与BORDER_REFLECT有区别。例如:fedcb|abcdefg|fedec


466beb64ee1be84f.png


  • BORDER_WRAP


外包装法,即以图像的左边界与右边界相连,上下边界相连。例如:cdefgh|abcdefgh|abcdefg


466beb64ee1be84f.png


  • BORDER_CONSTANT


常量法


b6209ab02bb12db9.png


完整代码:


import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
BLUE = [255,0,0]
img1 = cv.imread('opencv-logo.png')
replicate = cv.copyMakeBorder(img1,10,10,10,10,cv.BORDER_REPLICATE)
reflect = cv.copyMakeBorder(img1,10,10,10,10,cv.BORDER_REFLECT)
reflect101 = cv.copyMakeBorder(img1,10,10,10,10,cv.BORDER_REFLECT_101)
wrap = cv.copyMakeBorder(img1,10,10,10,10,cv.BORDER_WRAP)
constant= cv.copyMakeBorder(img1,10,10,10,10,cv.BORDER_CONSTANT,value=BLUE)
plt.subplot(231),plt.imshow(img1,'gray'),plt.title('ORIGINAL')
plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('REPLICATE')
plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('REFLECT')
plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('REFLECT_101')
plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('WRAP')
plt.subplot(236),plt.imshow(constant,'gray'),plt.title('CONSTANT')
plt.show()


相关文章
|
4月前
|
索引 Python
Python 数学运算库Numpy入门基础(一)创建数组
Python 数学运算库Numpy入门基础(一)创建数组
36 0
|
9月前
|
机器学习/深度学习 C++ Python
图注意力网络入门:从数学理论到到NumPy实现
图注意力网络入门:从数学理论到到NumPy实现
161 0
图注意力网络入门:从数学理论到到NumPy实现
|
11月前
|
机器学习/深度学习 C++ 索引
python机器学习入门之numpy的用法(超详细,必看)
python机器学习入门之numpy的用法(超详细,必看)
72 0
|
存储 人工智能 数据挖掘
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—NumPy—Numpy 入门(一)
你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,
105 0
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—NumPy—Numpy 入门(一)
|
数据挖掘 Python
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—NumPy—Numpy 入门(二)
你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,
86 0
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—NumPy—Numpy 入门(二)
|
数据挖掘 索引 Python
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—NumPy—Numpy 入门(三)
你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,
81 0
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—NumPy—Numpy 入门(三)
|
存储 数据挖掘 Python
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—NumPy—Numpy 入门(四)
你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,
79 0
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—NumPy—Numpy 入门(四)
|
数据挖掘 索引 Python
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—NumPy—Numpy 入门(五)
你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,
72 0
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—NumPy—Numpy 入门(五)
|
数据挖掘 Python
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—NumPy—Numpy 入门(六)
你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,
97 0
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—NumPy—Numpy 入门(六)
|
Python
NumPy入门(六)
本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 NumPy入门,后续还会单独发一篇 NumPy高级 内容供读者学习。
1476 0
NumPy入门(六)
相关产品
云迁移中心
推荐文章
更多