学习笔记——opencv图像基本运算方法

#include <opencv2/opencv.hpp>

int main() {
    // 读取图片
    cv::Mat img = cv::imread("1.bmp");

    // 检查图片是否成功读取
    if (img.empty()) {
        std::cerr << "Error: Loading image" << std::endl;
        return -1;
    }

    // 创建窗口并显示图片
    //cv::namedWindow("Image Display", cv::WINDOW_AUTOSIZE);
    //cv::imshow("Image Display", img);

    // 等待按键事件,之后关闭窗口
    //cv::waitKey(0);
    //cv::destroyAllWindows();

    //图像缩放
    cv::Mat img_resize;
    cv::resize(img, img_resize, cv::Size(), 0.5, 0.5);

    //计算图像通道数
    int channels = img_resize.channels();
    std::cout << "通道数:" << channels << std::endl;

    //将多通道图像分为单通道图像
    std::vector<cv::Mat> bgr;
    cv::split(img_resize, bgr);
    //cv::imshow("b通道", bgr[0]);
    //cv::waitKey(0);
    //cv::imshow("g通道", bgr[1]);
    //cv::waitKey(0);
    //cv::imshow("r通道", bgr[2]);
    //cv::waitKey(0);
    //cv::destroyAllWindows();

    //转化为image watch 可以查看的格式
    cv::Mat img_b=bgr[0];
    cv::Mat img_g=bgr[1];
    cv::Mat img_r=bgr[2];
    
    //增强对比度
    cv::Mat img_jiance=img_r*3;

    //增加灰度值
    cv::Mat img_gray=img_r+100;
    



    
    //转化为其他颜色空间
    cv::Mat img_hsv;
    cv::cvtColor(img, img_hsv, cv::COLOR_BGR2HSV);

    //通道运算-加法
    cv::Mat img_add;
    cv::add(img_b, img_g, img_add);

    //通道运算-减法
    cv::Mat img_sub;
    cv::subtract(img_b, img_g, img_sub);

    //通道运算-乘法
    cv::Mat img_mul;
    cv::multiply(img_b, img_g, img_mul);

    //通道运算-除法  注意除数不能为0
    cv::Mat img_div;
    cv::divide(img_b, img_g, img_div);

    //通道运算-位运算
    cv::Mat img_bitwise;
    cv::bitwise_and(img_b, img_g, img_bitwise);

    //通道运算-逻辑运算
    cv::Mat img_logic;
    cv::bitwise_or(img_b, img_g, img_logic);

    //通道运算-异或运算
    cv::Mat img_xor;
    cv::bitwise_xor(img_b, img_g, img_xor);

    //通道运算-取反
    cv::Mat img_not;
    cv::bitwise_not(img_b, img_not);

    //通道运算-反相
    cv::Mat img_inv;
    cv::bitwise_not(img, img_inv);

    //通道运算-最大值
    cv::Mat img_max;
    cv::max(img_b, img_g, img_max);

    //通道运算-最小值
    cv::Mat img_min;
    cv::min(img_b, img_g, img_min);

    //通道运算-阈值化
    cv::Mat img_threshold;
    cv::threshold(img_b, img_threshold, 127, 255, cv::THRESH_BINARY);

    //通道运算-阈值化2
    cv::Mat img_threshold2;
    cv::threshold(img_b, img_threshold2, 127, 255, cv::THRESH_BINARY_INV);

    //通道运算-阈值化3
    cv::Mat img_threshold3;
    cv::threshold(img_b, img_threshold3, 127, 255, cv::THRESH_TRUNC);

    //通道运算-阈值化4
    cv::Mat img_threshold4;
    cv::threshold(img_b, img_threshold4, 127, 255, cv::THRESH_TOZERO);

    //通道运算-阈值化5
    cv::Mat img_threshold5;
    cv::threshold(img_b, img_threshold5, 127, 255, cv::THRESH_TOZERO_INV);
    
    //图像增强
    cv::Mat img_equalize;
    cv::equalizeHist(img_b, img_equalize);

    



    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值