OpenCV(cv::bitwise_not())

news/2024/9/21 12:14:57

目录
  • 1. 函数定义
  • 2. 工作原理
  • 3. 示例



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 控制操作的范围,只有掩码中非零的部分会被按位取反。
  • 输入图像与输出图像必须大小和类型相同。

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



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/62876.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

帝国cms所有数据库字段说明

帝国CMS(Empire CMS)是一款基于PHP和MySQL的开源内容管理系统,它提供了丰富的功能和灵活的扩展性,适用于构建多种类型的网站。下面是关于帝国CMS数据库字段的一些说明,这些信息主要集中在购物车数量限制、提交订单权限以及同一IP注册间隔限制等方面。购物车数量限制字段名…

帝国cms数据库在哪

帝国CMS(EmpireCMS,简称ECMS)的数据库文件和配置通常位于以下几个位置:数据库文件位置:帝国CMS的数据库通常是存放在MySQL数据库服务器中的,而不是以文件的形式存储在服务器上。不过,如果你指的是数据库备份文件,那么这些文件通常位于帝国CMS安装目录下的data目录中。例…

帝国cms更换域名后图片地址更换的方法

当帝国CMS更换域名后,图片地址也需要相应的更新,以确保图片能够正常显示。以下是更换域名后更新图片地址的一些方法: 1. 替换数据库中的图片路径 对于帝国CMS来说,图片路径通常存储在数据库中。因此,更换域名后,需要更新数据库中存储的图片路径。 方法:导出数据库:先备…

帝国cms模板怎么制作

制作帝国CMS的模板涉及到了解HTML、CSS、JavaScript以及帝国CMS自身的模板标签和语法。下面是一个简单的指南,帮助你开始制作帝国CMS的模板。 1. 准备工作了解基础:熟悉HTML、CSS和JavaScript的基础知识。 学习帝国CMS模板语法:掌握帝国CMS的模板标签和语法。2. 设计模板布局…

给 DSL 开个脑洞:无状态的状态机

阿里妹导读:什么是 DSL ?DSL 是一种工具,其核心价值在于提供了一种手段,可以更加清晰地就系统某部分的意图进行沟通。本文将通过实现一个状态机引擎来看清 DSL 的本质,介绍状态机的核心模型和 Fluent 接口,并解决状态机的性能问题。最近在一个项目中,因为涉及很多状态的…

EmpireCMS:帝国源码cms网站搬家/数据迁移方法教程

迁移动帝国CMS网站涉及到数据备份、新环境部署、数据库迁移等多个步骤。下面是基于帝国CMS的网站搬家/数据迁移的一般步骤: 1. 准备工作备份现有网站:确保在开始迁移之前,完整地备份现有的网站文件和数据库。 准备新环境:确保新服务器上安装了与原环境兼容的PHP版本、数据库…

帝国cms编辑 帝国cms编辑器不能粘贴复制文字

当帝国CMS的编辑器不能粘贴复制文字时,可能是因为编辑器的某些设置或浏览器的限制导致的。以下是一些可能的解决方案: 1. 检查编辑器设置 确保编辑器的设置允许粘贴和复制。 解决方法:查看编辑器选项:在帝国CMS的后台,检查编辑器的设置,确保允许粘贴和复制操作。 使用粘贴…

FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher

​EasyPusher是一款国产的RTSP直播录制推流客户端工具,它支持Windows、Linux、Android、iOS等操作系统。EasyPusher采用RTSP推流协议,其中安卓版EasyPusher的Github托管地址为https://github.com/EasyDarwin/EasyPusher-Android。不过EasyPusher有好几年没更新了,尤其安卓版…