- Halcon的invert_image算子即图像反色功能。
我们可以通过简单的像素值反转来实现。对每个像素值,进行反转操作,具体来说,对于 8 位图像,反转的公式是 255 - pixel_value。
这意味着每个像素的值从 0 变为 255,从 255 变为 0,中间的值进行相应的反转。
一、 创建 InvertImage函数
using OpenCvSharp;
using System;
public class ImageProcessing
{
/// <summary>
/// 反转图像(实现类似 Halcon 的 InvertImage 算子)。
/// </summary>
/// <param name="image">输入图像,可以是灰度图像或彩色图像。</param>
/// <returns>返回反转后的图像。</returns>
/// <exception cref="ArgumentException">如果输入图像为空,抛出异常。</exception>
public static Mat InvertImage(Mat image)
{
// 检查输入图像是否为空
if (image.Empty())
{
throw new ArgumentException("输入图像为空。");
}
// 创建一个空的结果图像
Mat result = new Mat();
// 使用 OpenCV 的 Bitwise_NOT 操作实现图像反转
// Bitwise_NOT 会反转每个像素的二进制位
Cv2.BitwiseNot(image, result);
return result;
}
}
二、函数解释
-
InvertImage 函数:
参数:- image:输入图像,支持灰度图像和彩色图像。
- 返回值:返回反转后的图像。
- 异常:
如果输入图像为空,抛出异常。
Cv2.BitwiseNot():
该函数会反转图像中每个像素的二进制位,对于 8 位图像,这就相当于将每个像素的值从 0 变为 255,从 255 变为 0,以及对中间值进行类似的反转。
三、资料
技能拾荒者《12-OpenCVSharp 中实现 Halcon 的 invert_image 算子(图像的反图像功能)》
https://blog.csdn.net/weixin_45590420/article/details/143920751