如何使用 C++ 在 OpenCV 中反转二值图像?

opencvc++server side programmingprogramming更新于 2025/5/14 16:52:17

反转二值图像意味着反转像素值。从视觉角度来看,反转二值图像时,白色像素将转换为黑色,黑色像素将转换为白色。

此函数的基本形式是 −

cvtColor(original_image, grayscale_image, COLOR_BGR2GRAY);

下一行将灰度图像转换为二值图像,并将转换后的图像存储到"binary_image"矩阵中。

threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY);

这里的"grayscale_image"是源矩阵,"binary_image"是目标矩阵。之后是两个值:100 和 255。这两个值代表阈值范围。在这一行中,阈值范围代表需要转换的灰度像素值。

bitwise_not(源矩阵,目标矩阵);

bitwise_not() 函数对源矩阵的像素值取反,并将其存储在目标矩阵中。源矩阵为"binary_image",目标矩阵为"inverted_binary_image"。

以下程序执行二值图像反转 −

示例

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
   Mat original_image;//声明一个用于加载原始图像的矩阵//
   Mat grayscale_image;//声明一个矩阵来存储转换后的图像//
   Mat binary_image;//声明一个矩阵来存储二值图像
   Mat inverted_binary_image;//声明一个矩阵来存储反转二值图像
   namedWindow("Binary Image");//声明一个窗口来显示二值图像//
   namedWindow("Inverted Binary Image");//声明一个窗口来显示反转二值图像//
    original_image = imread("mountain.jpg");//将图像加载到矩阵//
   cvtColor(original_image, grayscale_image,COLOR_BGR2GRAY);//将BGR转换为灰度图像并将其存储到"converted"矩阵中//
   threshold(grayscale_image, binary_image, 100, 255, THRESH_BINARY);//将存储在"converted"矩阵中的灰度图像转换为二值图像//
   bitwise_not(binary_image, inverted_binary_image);//将二值图像反转并将其存储在inverted_binary_image矩阵中//
imshow("Binary Image", binary_image);//显示二值图像//
   imshow("Inverted Binary Image", inverted_binary_image);//显示倒置二值图像//
   waitKey(0);
   return 0;
}

输出


相关文章