OpenCV02_矩阵的掩膜操作

矩阵的掩膜操作

  • 获取图像像素指针
    • CV_Assert(myImage.depth()==CV_8U);
    • Mat.ptr(int i = 0)获取像素矩阵的指针,索引i表示第几行,从0开始计行数.
      • ptr(point)指针,unchar一个字节
      • 获取的是地址,而不是一个具体的值
    • 获得当前行指针const uchar* current = myImage.ptr(row);
    • 获取当前像素点P(row,col)的像素值p(row,col) = current[col]
  • 像素范围处理saturate_cast
    * 在0~255返回正常值,小于0返回0,大于255返回255
    • 这个函数的功能是确保RGB值的范围在0~255之间
      • saturate_cast(-100),返回0.
      • saturate_cast(288),返回255
      • saturate_cast(100),返回100
  • 掩膜(mask)操作
    • 如3*3,即邻域操作
    • I(i,j)=5*I(i,j)-[I(i-1,j)+I(i+1,j)+I(i,j-1)+I(i,j+1)]
    • 通过掩膜操作重新计算每个像素值,提高图像的对比度
    //获取图像的高度跟宽度
    int cols = (src.cols-1)*src.channels();             //实际的col值为图像col*图像的通道数
    int offsetx = src.channels();                       //开始的像素
    int rows = src.rows;                                
OpenCV中的掩膜操作是一种图像处理技术,用于将图像的某些区域设置为特定的或通过其他方式对其进行操作掩膜通常是一个与原始图像具有相同大小的二进制图像或具有相同通道数的矩阵。 要进行掩膜操作,可以使用以下步骤: 1. 创建一个与原始图像大小相同的掩膜图像,其中包含要操作区域。可以使用OpenCV提供的函数(例如cv2.threshold())或手动创建二进制图像。 2. 将掩膜应用于原始图像。可以使用OpenCV中的位运算函数(例如cv2.bitwise_and())将掩膜与原始图像进行逐位与操作,以保留掩膜中的像素。 以下是一个简单的示例代码,演示如何进行掩膜操作: ```python import cv2 import numpy as np # 读取原始图像 image = cv2.imread('image.jpg') # 创建掩膜图像 mask = np.zeros(image.shape[:2], dtype=np.uint8) cv2.circle(mask, (image.shape[1]//2, image.shape[0]//2), 100, (255), -1) # 应用掩膜 masked_image = cv2.bitwise_and(image, image, mask=mask) # 显示结果 cv2.imshow('Original Image', image) cv2.imshow('Masked Image', masked_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在上面的代码中,我们首先加载原始图像,然后创建一个与原始图像相同大小的掩膜图像。在这个例子中,我们使用`cv2.circle()`函数创建了一个圆形掩膜。 然后,我们使用`cv2.bitwise_and()`函数将掩膜应用于原始图像。最后,我们显示原始图像和应用掩膜后的图像。 请注意,掩膜可以用于各种不同的图像处理任务,例如图像分割、背景提取和特定区域操作等。上述示例只是其中的一种用法,具体取决于您的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值