• Opencv_4_图像像素的读写操作


    1)opencv.hpp 头文件:

    #pragma once
    #include <opencv.hpp>
    using namespace std;
    #include
    using namespace cv;
    using namespace std;
    class ColorInvert{
    public :
        void pixel_visit(Mat& image);
    };

    2)opencv.cpp 文件:

    void ColorInvert::pixel_visit(Mat& image)
    {
        int w = image.cols;
        int h = image.rows;
        int dims = image.channels();
        /*
        for (int row = 0; row < h; row++)
        {
         for (int col = 0; col < w; col++)
            {
             if (dims == 1) {
                 int pv = image.at(row, col);
                 image.at(row, col) = 255 - pv;
            }
             if (dims == 3)
             {
                 Vec3b bgr = image.at(row, col);
                 image.at(row, col)[0] = 255 - bgr[0];
                 image.at(row, col)[1] = 255 - bgr[1];
                 image.at(row, col)[2] = 255 - bgr[2];

             }
            }
        }
        */

        for (int row = 0; row < h; row++)
        {
            uchar* current_row = image.ptr(row);
            for (int col = 0; col < w; col++)
            {
                if (dims == 1) {
                    int pv = *current_row;
                    *current_row++ = 255 - pv;
                }
                if (dims == 3)
                {
                    *current_row++ = 255 - *current_row;
                    *current_row++ = 255 - *current_row;
                    *current_row++ = 255 - *current_row;
                }
            }
        }
        imshow("像素读写演示", image);
    }

    3)main 函数:

    #include
    #include
    #include "ColorInvert.h"
    using namespace std;
    using namespace cv;

    int main()
    {
        Mat src = imread("E:/2024/Test/opencv/test2.png");
        if (src.empty()) {
            cout << "load pic fail" << endl;
            return -1;
        }
        namedWindow("输入窗口", WINDOW_FREERATIO);
        imshow("输入窗口", src);
        ColorInvert coInvert;
        coInvert.pixel_visit(src);
        //coInvert.colorSpaceInvert(src);

        waitKey(0);
        destroyAllWindows();
    }

    显示结果如下:

  • 相关阅读:
    【二分图染色】ARC 165 C
    国产化Kettle、JDK、MySQL下载安装操作步骤
    ServletConfig与ServletContext
    SpringSecurity(十五)---OAuth2的运行机制(上)-OAuth2概念和授权码模式讲解
    将时间序列转成图像——小波变换方法 Matlab实现
    强烈推荐APP破解常用工具集合!
    Master PDF Editor v5 解锁版安装教程(小巧多功能PDF )
    MySQL进阶
    java-php-python-宠物医院管理系统计算机毕业设计
    [Vue] 25.Vue.js过渡与动画:使用transition标签实现单元素/组件的过渡和动画效果
  • 原文地址:https://blog.csdn.net/EveryDayOneHour/article/details/138075040