#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-不同方式操作像素效率对比
最新推荐文章于 2023-03-27 18:46:39 发布
本文探讨了在OpenCV库中使用不同方法操作像素的效率差异,通过实验和分析,揭示了最佳实践以优化图像处理速度。
摘要由CSDN通过智能技术生成