如何使用 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; }