#include <opencv2/opencv.hpp>
#include <opencv2/video/background_segm.hpp> // 注意srcImage为3通道的彩色图片 cv::Mat inverseColor4(cv::Mat &srcImage) { cv::Mat tempImage = srcImage.clone(); // 初始化源图像迭代器 cv::MatConstIterator_<cv::Vec3b> srcIterStart = srcImage.begin<cv::Vec3b>(); cv::MatConstIterator_<cv::Vec3b> srcIterEnd = srcImage.end<cv::Vec3b>(); // 初始化输出图像迭代器 cv::MatIterator_<cv::Vec3b> resIterStart = tempImage.begin<cv::Vec3b>(); cv::MatIterator_<cv::Vec3b> resIterEnd = tempImage.end<cv::Vec3b>(); // 遍历图像反色处理 while (srcIterStart != srcIterEnd) { (*resIterStart)[0] = 255 - (*srcIterStart)[0]; (*resIterStart)[1] = 255 - (*srcIterStart)[1]; (*resIterStart)[2] = 255 - (*srcIterStart)[2]; // 迭代器递增 srcIterStart++; resIterStart++; } return tempImage; } int main(void) //int test01() { cv::Mat image = cv::imread("lenasift.bmp"); if (image.empty()) { std::cerr << "Load image failed!" << std::endl; return 0; } cv::Mat result = inverseColor4(image); cv::imshow("src", image); cv::imshow("result", result); cv::waitKey(); return 0; }
图像补运算:MatIterator_迭代器反色处理
最新推荐文章于 2022-12-13 08:12:55 发布