首页 > 其他分享 >OpenCV(cv::bitwise_not())

OpenCV(cv::bitwise_not())

时间:2024-09-21 12:13:57浏览次数:8  
标签:取反 bitwise 像素 OpenCV 按位 图像 cv 255

目录



cv::bitwise_not() 是 OpenCV 中用于对图像或矩阵进行按位取反操作的函数。它将输入图像的每个像素的值进行按位反转,生成输出图像。按位取反是对每个位进行反转,即将二进制数中的 0 变为 1,1 变为 0。



1. 函数定义

void cv::bitwise_not(InputArray src, OutputArray dst, InputArray mask = noArray());

参数:

  1. src:输入图像或矩阵,类型可以是 8 位、16 位或 32 位整型、浮点型(单通道或多通道)。输入图像必须是单通道或多通道的矩阵。每个像素的每个位都会被反转。

  2. dst:输出图像或矩阵,大小和类型与输入图像 src 相同。即 dst 是按位反转后的结果图像。

  3. mask(可选):操作的掩码图像。类型为 8 位单通道图像。如果提供了 mask,则只有掩码中非零值对应的位置会被进行取反操作,其他地方保持不变。如果不提供掩码,整个图像的所有像素都会被反转。



2. 工作原理

cv::bitwise_not() 会对输入图像的每个像素值执行按位取反操作。如果输入图像是灰度图像,像素值为 0 到 255 的范围,取反后每个像素的值会变为 255 - 原像素值。对于彩色图像,函数会对每个通道分别进行按位取反操作。

  • 灰度图像的例子
    对于灰度图像,像素值为 8 位无符号整型 (0 到 255)。假设某个像素值是 100,它的二进制形式是 01100100,取反后变为 10011011,即 255 - 100 = 155

  • 彩色图像的例子
    对于彩色图像,cv::bitwise_not() 会对每个通道(R、G、B)分别进行操作。例如,某个像素值为 (100, 150, 200),取反后变为 (255-100, 255-150, 255-200),即 (155, 105, 55)



3. 示例

#include <opencv2/opencv.hpp>

int main() {
    // 读取输入图像
    cv::Mat src = cv::imread("input.jpg", cv::IMREAD_COLOR);

    // 检查图像是否成功加载
    if (src.empty()) {
        std::cout << "Error: Could not open or find the image!" << std::endl;
        return -1;
    }

    // 创建输出图像
    cv::Mat dst;

    // 对图像进行按位取反操作
    cv::bitwise_not(src, dst);

    // 显示原图像和处理后的图像
    cv::imshow("Original Image", src);
    cv::imshow("Bitwise Not Image", dst);

    // 等待按键
    cv::waitKey(0);

    return 0;
}

关键点总结:

  • cv::bitwise_not() 对图像的每个像素进行逐位取反。
  • 可以选择通过掩码 mask 控制操作的范围,只有掩码中非零的部分会被按位取反。
  • 输入图像与输出图像必须大小和类型相同。

这个函数常用于图像处理中的一些特定操作,比如生成负片图像、在掩码中反转某些区域等。



标签:取反,bitwise,像素,OpenCV,按位,图像,cv,255
From: https://www.cnblogs.com/keye/p/18423831

相关文章

  • Shiro-认证绕过漏洞(CVE-2020-1957)
    目录漏洞原理源码分析与复现影响版本漏洞原理核心点就是shiro和spring对uri进行配合匹配的时候有缺陷导致的,shiro中很轻易就能绕过,其次spring中对;分号好像情有独钟,被大牛们发现后也就一下子绕过了。主流payload:/xxx/..;/admin/具体后台路由不一定是admin,得看情况而定,但是下面......
  • Shiro-721—漏洞分析(CVE-2019-12422)
    目录PaddingOracleAttack原理PKCS5填充怎么爆破攻击漏洞原理源码分析漏洞复现本文基于shiro550漏洞基础上分析,建议先看上期内容:https://blog.csdn.net/weixin_60521036/article/details/142373353PaddingOracleAttack原理网上看了很多,感觉写的对我们这种对密码学不敏......
  • 使用opencv画框,标出坐标
    importcv2importnumpyasnpdrawing,start_x,start_y=False,-1,-1prev_point=None#上一个点history=list()defdraw_box(points,color=(0,255,0),thickness=1):ifpoints:p1,p2=pointstop_left,top_right,bottom_right,b......
  • OpenCV(YCrCb 和 HSV 颜色空间比较)
    目录1.YCrCb颜色空间1.1YCrCb颜色空间的定义1.2YCrCb的转换1.3应用场景2.HSV颜色空间2.1HSV颜色空间的定义2.2HSV的转换2.3应用场景3.YCrCb和HSV颜色空间的比较4.总结在图像处理领域中,除了传统的RGB颜色空间之外,YCrCb和HSV颜色空间被广泛应用于各种图......
  • 智慧安防监控EasyCVR视频汇聚管理平台如何修改视频流分辨率?
    智慧安防监控EasyCVR视频管理平台能在复杂的网络环境中,将前端监控设备进行统一集中接入与汇聚管理。EasyCVR平台支持H.264/H.265视频压缩技术,可在4G/5G/WIFI/宽带等网络环境下,传输720P/1080P/2K/4K高清视频。视频流经平台处理后,能对外分发RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HL......
  • 视频存储EasyCVR视频监控汇聚管理平台设备录像下载报错404是什么原因?
    EasyCVR视频监控汇聚管理平台是一款针对大中型项目设计的跨区域网络化视频监控集中管理平台。该平台不仅具备视频资源管理、设备管理、用户管理、运维管理和安全管理等功能,还支持多种主流标准协议,如GB28181、RTSP/Onvif、RTMP、部标JT808、GA/T1400协议等,以及支持厂家的私有协议......
  • 【操作教程】视频监控系统EasyCVR视频汇聚管理平台如何添加用户和角色?
    视频监控平台/视频监控系统EasyCVR视频汇聚管理平台以其强大的拓展性、灵活的部署方式、高性能的视频能力和智能化的分析能力,为各行各业的视频监控需求提供了优秀的解决方案。通过简单的配置和操作,用户可以轻松地进行远程视频监控、存储和查看,满足各种复杂场景下的监控需求。近......
  • 香橙派5Pro+虚拟机Ubuntu18.04交叉编译+Opencv4.7
    1.基础工具安装①Ubuntu虚拟机下交叉编译工具链安装香橙派5Pro为Arm64位架构,因此需要安装g++-aarch64-linux-gnu以及gcc-aarch64-linux-gnu(有其它交叉编译器,本文以此编译器为例)更新软件源sudoaptupdatesudoaptupgrate点击查看交叉编译工具链安装apt-cachesearcha......
  • EasyCVR视频汇聚管理平台如何添加用户和角色?
    近期很多用户咨询,在安防监控EasyCVR视频汇聚平台中,如何添加角色或用户。今天我们来介绍一下操作步骤。视频汇聚平台EasyCVR是更偏向于能力层的产品,其核心是视频的汇聚管理与流媒体分发,因此,目前能分配给用户的是【视频调阅】和【录像回放】权限,其他功能资源的分配还在产品开发计划中......
  • OpenCV(cv::equalizeHist())
    目录1.函数定义2.函数原理3.示例4.应用场景5.注意事项6.实际效果cv::equalizeHist()是OpenCV中用于图像直方图均衡化的函数。该函数主要用于增强图像的对比度,尤其是在图像的光照条件不均匀或整体对比度较低的情况下,直方图均衡化可以有效改善图像的细节。1.函数定......