欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Qt OpenCV的圖像灰度化像素操作詳解

 更新時間:2022年07月04日 11:41:54   作者:visual_eagle  
這篇文章主要為大家詳細(xì)介紹了基于Qt+OpenCV的圖像灰度化像素操作:最大值法、平均法、加權(quán)平均值法,感興趣的小伙伴可以了解一下

效果圖

實現(xiàn)代碼

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<opencv2/opencv.hpp>
using namespace cv;
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private slots:
    void TheMax(Mat Input_iamge);
    void TheMean(Mat Input_iamge);
    void TheMeightedMean(Mat Input_iamge);
    void UI_init();
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    UI_init(); //init ui

    Mat image_1=imread("D:/program/Qt/Qt5+opencv/108homework/me.png");
    ui->image1->setPixmap(QPixmap("D:/program/Qt/Qt5+opencv/108homework/me.png"));

    TheMax(image_1);
    ui->image2->setPixmap(QPixmap("D:/program/Qt/Qt5+opencv/108homework/image_2.png"));

    TheMean(image_1);
    ui->image3->setPixmap(QPixmap("D:/program/Qt/Qt5+opencv/108homework/image_3.png"));

    TheMeightedMean(image_1);
    ui->image4->setPixmap(QPixmap("D:/program/Qt/Qt5+opencv/108homework/image_4.png"));
}

Widget::~Widget()
{
    delete ui;
}
void Widget::TheMax(Mat Input_iamge)
{
     int width = Input_iamge.cols;
     int height = Input_iamge.rows;
     Mat image_2(height,width,CV_8UC1);
     for (int j = 0; j < height; j++)
     {
      for (int i = 0; i < width; i++)
      {
       int b  = Input_iamge.at<Vec3b>(j, i)[0];
       int g  = Input_iamge.at<Vec3b>(j, i)[1];
       int r  = Input_iamge.at<Vec3b>(j, i)[2];
       image_2.at<uchar>(j, i) = saturate_cast<uchar>(max(r,max(b,g)));
      }
     }
     imwrite("D:/program/Qt/Qt5+opencv/108homework/image_2.png", image_2);
}
void Widget::TheMean(Mat Input_iamge)
{
    int width = Input_iamge.cols;
    int height = Input_iamge.rows;
    Mat image_3(height,width,CV_8UC1);
    for (int j = 0; j < height; j++)
    {
     for (int i = 0; i < width; i++)
     {
      int b  = Input_iamge.at<Vec3b>(j, i)[0];
      int g  = Input_iamge.at<Vec3b>(j, i)[1];
      int r  = Input_iamge.at<Vec3b>(j, i)[2];
      image_3.at<uchar>(j, i) = saturate_cast<uchar>((r+g+b)/3);
     }
    }
    imwrite("D:/program/Qt/Qt5+opencv/108homework/image_3.png", image_3);
}
void Widget::TheMeightedMean(Mat Input_iamge)
{
    int width = Input_iamge.cols;
    int height = Input_iamge.rows;
    Mat image_4(height,width,CV_8UC1);
    for (int j = 0; j < height; j++)
    {
     for (int i = 0; i < width; i++)
     {
      int b  = Input_iamge.at<Vec3b>(j, i)[0];
      int g  = Input_iamge.at<Vec3b>(j, i)[1];
      int r  = Input_iamge.at<Vec3b>(j, i)[2];
      image_4.at<uchar>(j, i) = saturate_cast<uchar>(0.299*r + 0.587*g + 0.114*b);
     }
    }
    imwrite("D:/program/Qt/Qt5+opencv/108homework/image_4.png", image_4);
}
void Widget::UI_init()
{
    ui->image1->setFrameShape(QFrame::Box);
    ui->image1->setFrameShadow(QFrame::Sunken);
    ui->image1->setLineWidth(5);
    ui->image1->setLineWidth(10);

    ui->image2->setFrameShape(QFrame::Box);
    ui->image2->setFrameShadow(QFrame::Sunken);
    ui->image2->setLineWidth(5);
    ui->image2->setLineWidth(10);

    ui->image3->setFrameShape(QFrame::Box);
    ui->image3->setFrameShadow(QFrame::Sunken);
    ui->image3->setLineWidth(5);
    ui->image3->setLineWidth(10);

    ui->image4->setFrameShape(QFrame::Box);
    ui->image4->setFrameShadow(QFrame::Sunken);
    ui->image4->setLineWidth(5);
    ui->image4->setLineWidth(10);

}

到此這篇關(guān)于基于Qt OpenCV的圖像灰度化像素操作詳解的文章就介紹到這了,更多相關(guān)Qt OpenCV圖像灰度化操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言對CSV文件從最后往前一行一行讀取的實現(xiàn)方法

    C語言對CSV文件從最后往前一行一行讀取的實現(xiàn)方法

    今天小編就為大家分享一篇關(guān)于C語言對CSV文件從最后往前一行一行讀取的實現(xiàn)方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C語言 經(jīng)典題目螺旋矩陣 實例詳解

    C語言 經(jīng)典題目螺旋矩陣 實例詳解

    這篇文章主要介紹了C語言 經(jīng)典題目螺旋矩陣 實例詳解的相關(guān)資料,這里附有代碼實例及實現(xiàn)效果圖,需要的朋友可以參考下
    2016-12-12
  • 一篇文章帶你了解C語言文件操作中的幾個函數(shù)

    一篇文章帶你了解C語言文件操作中的幾個函數(shù)

    這篇文章主要介紹了使用C語言操作文件的基本函數(shù)整理,包括創(chuàng)建和打開以及關(guān)閉文件的操作方法,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09
  • C++詳解如何實現(xiàn)兩個線程交替打印

    C++詳解如何實現(xiàn)兩個線程交替打印

    這篇文章主要介紹了使用C++庫實現(xiàn)兩個線程交替打印,一個線程打印奇數(shù)、一個線程打印偶數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 獲取一個文件行數(shù)的方法

    獲取一個文件行數(shù)的方法

    獲取一個文件行數(shù)的方法,需要的朋友可以參考一下
    2013-03-03
  • C語言結(jié)構(gòu)體簡單入門講解

    C語言結(jié)構(gòu)體簡單入門講解

    這篇文章主要介紹了C語言結(jié)構(gòu)體簡單入門講解,本文講述了結(jié)構(gòu)體的基本定義和操作,講解了幾個比較實用的函數(shù)和案例,希望對你有所幫助
    2021-06-06
  • c語言小游戲程序之彈跳小球的實現(xiàn)代碼

    c語言小游戲程序之彈跳小球的實現(xiàn)代碼

    這篇文章主要介紹了c語言小游戲程序之彈跳小球的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 使用C語言中的time函數(shù)獲取系統(tǒng)時間

    使用C語言中的time函數(shù)獲取系統(tǒng)時間

    在C語言中可以使用time函數(shù)來獲取系統(tǒng)時間,以下對time函數(shù)進行了介紹,需要的朋友可以過來參考下
    2013-07-07
  • java string對象上的操作,常見的用法你知道嗎

    java string對象上的操作,常見的用法你知道嗎

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著Java String類用法展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-08-08
  • C++模板類的用法實例

    C++模板類的用法實例

    這篇文章主要介紹了C++模板類的用法實例,以實例形式詳細(xì)講述了模板類的接口、成員、內(nèi)聯(lián)函數(shù)等概念及用法,需要的朋友可以參考下
    2014-10-10

最新評論