图像基本操作

图像基本操作

图像像素级处理
opencv
  • 读取像素
    • 返回值 = 图像(位置参数)
    • 灰度图像:返回灰度值——p=img[88, 142]——print(p)
    • RGB图像:返回BGR的值
      • blue=img[78, 125, 0] —— print(blue)
      • green=img[78, 125, 1] —— print(green)
      • red=img[78, 125, 2] —— print(red)
      • p=img[78, 125]——print(p)——三个值
  • 修改像素
    • 灰度图像:img[88, 99]=255
    • RGB图像:
      • img[88, 99, 0]=255
      • img[88, 99, 1]=255
      • img[88, 99, 2]=255
      • img[88, 99]=[255,255,255]
numpy
  • 读取像素
    • 返回值 = 图像.item(位置参数)
    • 灰度图像:返回灰度值——p=img.item(88, 142)——print(p)
    • RGB图像:返回BGR的值
      • blue=img.item(78, 125, 0) —— print(blue)
      • green=img.item(78, 125, 1) —— print(green)
      • red=img.item(78, 125, 2) —— print(red)
      • p=img.item(78, 125)——print(p)——三个值
  • 修改像素值
    • 图像名.itemset(位置, 新值)
    • 灰度图像:img.itemset((88, 99), 255)
    • RGB图像:
      • img.itemset((88, 99, 0), 255)
      • img.itemset((88, 99, 1), 255)
      • img.itemset((88, 99, 2), 255)
获取图像属性
  • 形状:行、列、通道数
    • shape可以获取图像的形状,返回包含行数、列数、通道数的元组
    • 灰度:返回行数、列数——img.shape——(512, 512)
    • 彩度:返回行数、列数、通道数——img.shape——(512, 512, 3)
  • 像素数目
    • size可以获取图像的像素数目
    • 灰度:返回 行数*列数——img.size
    • 彩度:返回 行数*列数*通道数
  • 图像的数据类型
    • dtype返回的是图像的数据类型
    • 例:img.dtype——uint8
图像ROI
  • ROI (region of interest),感兴趣区域
  • 从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域
  • 可以通过各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理
  • face=a[220:400, 250:350]——感兴趣区域——可以复制什么的
图像通道操作
  • 拆分通道
import cv2
img = cv2.imread('lena.png')
## 方式一
b = img[:, :, 0]
g = img[:, :, 1]
r = img[:, :, 2]
## 方式二
b, g, r = cv2.split(img)
## 方式三
b = cv2.split(a)[0]
g = cv2.split(a)[1]
r = cv2.split(a)[2]
  • 合并通道:cv2.merge([b,g,r])
    • 注意顺序
图像运算
加法运算

Numpy

  • 取模加法——运算方式:结果=图像1+图像2
    • 超过255:%255

OpenCV

  • 饱和运算——运算方式:结果=cv2.add(图像1,图像2)
    • 超过255:255

注意:

  • 参与运算的图像大小、类型必须一致
  • vs加法运算:有权重
  • 函数addWeightedcv2.addWeighted(src1, alpha, src2, beta, gamma)
    • src1:图像1
    • alpha:图像1权重
    • src2:图象2
    • beta:图像2权重
    • gamma:亮度调节值——不能省略——不想调,设0
  • 例:cv2.addWeighted(img1, 0.3, img2, 0.6, 0)
图像融合
  • 将2张或2张以上的图像信息的融合到1张图像上
  • 融合的图像含有更多的信息、能够更方便人来观察或计算机处理
几何变换
图像缩放
  • 函数resize
  • 格式:dst = cv2.resize(src, dsize[, dst[ ,fx[ ,fy[ ,interpolation]]]])
    • src:原始图像
    • dsize:缩放大小
      • 例:cv2.resize(a, (122, 123)):缩放成122列,123行
    • fx, fy:缩放大小
      • 例:cv2.resize(a, None, fx=0.5, fy=0.7)
图像翻转
  • 函数flip
  • 格式:dst = cv2.flip(src, flipCode)
    • src:原始图像
    • flipCode
      • =0:以X轴为对称轴翻转
      • >0:以Y轴为对称轴翻转
      • <0:以X轴、Y轴方向同时翻转
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值