#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
// 下标M.at<float>(i,j) 方法1-1
cv::Mat inverseColor1(cv::Mat srcImage)
{
cv::Mat tempImage = srcImage.clone();
int row = tempImage.rows;
int col = tempImage.cols;
// 分别对各个通道进行反色处理
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
tempImage.at<cv::Vec3b>(i, j)[0] = 255 - tempImage.at<cv::Vec3b>(i, j)[0];
tempImage.at<cv::Vec3b>(i, j)[1] = 255 - tempImage.at<cv::Vec3b>(i, j)[1];
tempImage.at<cv::Vec3b>(i, j)[2] = 255 - tempImage.at<cv::Vec3b>(i, j)[2];
}
}
return tempImage;
}
// 方法1-2 下标M::at<float>(i,j)
cv::Mat inverseColor2(cv::Mat srcImage)
{
cv::Mat tempImage = srcImage.clone();
int row = tempImage.rows;
// 图像像素行实际的宽度
int step = tempImage.step;
// 直接对像素进行反色处理
for (int i = 0; i < row; i++)
{
for (int j = 0; j < step; j++)
{
tempImage.at<uchar>(i, j) = 255 - tempImage.at<uchar>(i, j);
}
}
return tempImage;
}
// 方法2 指针遍历Mat::ptr
cv::Mat inverseColor3(cv::Mat srcImage)
{
cv::Mat tempImage = srcImage.clone();
int row = tempImage.rows;
// 将3通
opencv-不同方式操作像素效率对比
最新推荐文章于 2020-10-22 00:56:22 发布