C++ 和 OpenCV 中的像素操作包括以下几种:

  1. 读取和显示图像像素。

  2. 访问和修改像素值。

  3. 图像二值化。

  4. 图像灰度化。

  5. 图像反转。

  6. 图像加噪。

  7. 图像平滑滤波。

  8. 图像边缘检测。

以下是一个完整的 C++ 和 OpenCV 图像像素操作案例代码:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
    // 读取图像
    Mat image = imread('lena.jpg');

    // 显示图像
    namedWindow('Original Image', WINDOW_NORMAL);
    imshow('Original Image', image);

    // 访问和修改像素值
    for (int i = 0; i < image.rows; i++)
    {
        for (int j = 0; j < image.cols; j++)
        {
            Vec3b pixel = image.at<Vec3b>(i, j);
            pixel[0] = 255 - pixel[0];
            pixel[1] = 255 - pixel[1];
            pixel[2] = 255 - pixel[2];
            image.at<Vec3b>(i, j) = pixel;
        }
    }

    // 显示修改后的图像
    namedWindow('Inverted Image', WINDOW_NORMAL);
    imshow('Inverted Image', image);

    // 图像灰度化
    Mat grayImage;
    cvtColor(image, grayImage, COLOR_BGR2GRAY);

    // 显示灰度化后的图像
    namedWindow('Gray Image', WINDOW_NORMAL);
    imshow('Gray Image', grayImage);

    // 图像二值化
    Mat binaryImage;
    threshold(grayImage, binaryImage, 100, 255, THRESH_BINARY);

    // 显示二值化后的图像
    namedWindow('Binary Image', WINDOW_NORMAL);
    imshow('Binary Image', binaryImage);

    // 高斯滤波
    Mat blurImage;
    GaussianBlur(image, blurImage, Size(5, 5), 0, 0);

    // 显示高斯滤波后的图像
    namedWindow('Blurred Image', WINDOW_NORMAL);
    imshow('Blurred Image', blurImage);

    // 边缘检测
    Mat edges;
    Canny(image, edges, 100, 200);

    // 显示边缘检测后的图像
    namedWindow('Edges Image', WINDOW_NORMAL);
    imshow('Edges Image', edges);

    waitKey(0);
    return 0;
}
C++ 和 OpenCV 图像像素操作:完整案例代码和讲解

原文地址: https://www.cveoy.top/t/topic/j8za 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录