Keresés

Új hozzászólás Aktív témák

  • Erwinke

    aktív tag

    válasz Erwinke #10958 üzenetére

    Elnézést, rosszat küldtem ...
    // színcsatornák korrigálása
    while ((U_avg > 0.1) && (V_avg > 0.1)) {
    if(U_avg > V_avg){
    //egyik verzió a korrigálásra
    for (int i = 0; i <image.rows; i++){
    for (int j = 0; j < image.cols; j++){
    if(image.at<Vec3b>(i,j)[0]+1 <= 255){
    image.at<Vec3b>(i,j)[0] = image.at<Vec3b>(i,j)[0]+1;
    } // az eredeti képen lévő színcsatornákat korrigáljuk
    }
    }
    }else{
    for (int i = 0; i <image.rows; i++){
    for (int j = 0; j < image.cols; j++){
    if (image.at<Vec3b>(i,j)[2]+1 <= 255){
    image.at<Vec3b>(i,j)[2] = image.at<Vec3b>(i,j)[2]+1;
    }
    }
    }
    }
    //másik verzió a korrigálásra
    /*
    if(U_avg > V_avg){
    for (int i = 0; i <modded.rows; i++){
    for (int j = 0; j < modded.cols; j++){
    modded.at<Vec3b>(i,j)[0] = modded.at<Vec3b>(i,j)[1]+1;
    // az YUV színterű képet korrigáljuk (nem működik)
    }
    }
    }else{
    for (int i = 0; i <modded.rows; i++){
    for (int j = 0; j < modded.cols; j++){

    modded.at<Vec3b>(i,j)[2] = modded.at<Vec3b>(i,j)[1]-1;

    }
    }
    }
    }*/
    /*_______________________________________________________________________________________________________*/
    /*
    * egyik verzió a szürke pixelek újraszámolására (ugyan azokat a pixeleket vesszük figyelembe)
    for (int k = 0; k < counter; k++){
    // a rekord tömbből keressük ki a pixeleket
    //double b = image.at<Vec3b>(arr[counter].x,arr[counter].y)[0];
    //double g = image.at<Vec3b>(arr[counter].x,arr[counter].y)[1];
    //double r = image.at<Vec3b>(arr[counter].x,arr[counter].y)[2];

    //double y = ((0.299*r)+(0.587*g)+(0.114*g));
    double u = (modded.at<Vec3b>(arr[counter].x,arr[counter].y)[1])-128;
    double v = (modded.at<Vec3b>(arr[counter].x,arr[counter].y)[2])-128;

    U_avg += abs(u);
    V_avg += abs(v);

    }*/
    // másik verzió a szürke pixelek újraszámolására (nem feltétlenül ugyan azokat a pixeleket vesszük figyelembe)
    // újra keressük a szürke pixeleket
    cvtColor(image, modded, CV_BGR2YUV);
    counter = 0;
    for (int i = rows*2; i < rows*3; i++) {
    for (int j = cols*2; j < cols*3; j++) {

    double y = modded.at<Vec3b>(i,j)[0];
    double u = (modded.at<Vec3b>(i,j)[1])-128;
    double v = (modded.at<Vec3b>(i,j)[2])-128;
    double tmp = (abs(u)+abs(v))/y;
    double aa = 0.2;



    if (tmp < aa){

    arr[counter] = {i,j};
    U_avg += abs(u);
    V_avg += abs(v);
    counter++;
    }
    }
    }
    U_avg = U_avg/counter;
    V_avg = V_avg/counter;
    // önellenőrzés, U és V csatornák átlaga
    cout << (int)U_avg << ", " << (int)V_avg << endl;

    }

    cvtColor(modded, modded, CV_YUV2BGR);// visszakonvertálás
    imshow("image",image);
    namedWindow("image",CV_WINDOW_FREERATIO);
    imshow("modded", modded);
    namedWindow("modded", CV_WINDOW_FREERATIO);





    /*
    cout << to_string((int)Y) << "\n";
    cout << to_string((int)U) << "\n";
    cout << to_string((int)V) << "\n";*/


    /*
    vector<Mat> channels;
    vector<Mat> separatedChannels = showChannels(channels);
    namedWindow("Blue", CV_WINDOW_FREERATIO);
    imshow("Blue", separatedChannels[0]);
    namedWindow("Green", CV_WINDOW_FREERATIO);
    imshow("Green", separatedChannels[1]);
    namedWindow("Red", CV_WINDOW_FREERATIO);
    imshow("Red", separatedChannels[2]);

    */

    waitKey(0);

  • Erwinke

    aktív tag

    Szép napot.
    Iteral White Balancot kéne leprogramoznunk órára. Megvan a program csak rosszul konvertálja át a képet és nem tudunk rájönni, hogy miért. Nem tudom ez a szakterületük-e, de egy próbát megér. Köszönöm a segítségüket.

    /********************************************************************************
    ** Form generated from reading UI file 'mainwindow.ui'
    **
    ** Created by: Qt User Interface Compiler version 5.8.0
    **
    ** WARNING! All changes made in this file will be lost when recompiling UI file!
    ********************************************************************************/

    #ifndef UI_MAINWINDOW_H
    #define UI_MAINWINDOW_H

    #include <QtCore/QVariant>
    #include <QtWidgets/QAction>
    #include <QtWidgets/QApplication>
    #include <QtWidgets/QButtonGroup>
    #include <QtWidgets/QComboBox>
    #include <QtWidgets/QHeaderView>
    #include <QtWidgets/QMainWindow>
    #include <QtWidgets/QPushButton>
    #include <QtWidgets/QWidget>

    QT_BEGIN_NAMESPACE

    class Ui_MainWindow
    {
    public:
    QWidget *centralWidget;
    QComboBox *comboBox;
    QPushButton *pushButton;
    QPushButton *pushButton_2;

    void setupUi(QMainWindow *MainWindow)
    {
    if (MainWindow->objectName().isEmpty())
    MainWindow->setObjectName(QStringLiteral("MainWindow"));
    MainWindow->resize(394, 252);
    centralWidget = new QWidget(MainWindow);
    centralWidget->setObjectName(QStringLiteral("centralWidget"));
    comboBox = new QComboBox(centralWidget);
    comboBox->setObjectName(QStringLiteral("comboBox"));
    comboBox->setGeometry(QRect(30, 60, 181, 26));
    pushButton = new QPushButton(centralWidget);
    pushButton->setObjectName(QStringLiteral("pushButton"));
    pushButton->setGeometry(QRect(280, 60, 80, 26));
    pushButton_2 = new QPushButton(centralWidget);
    pushButton_2->setObjectName(QStringLiteral("pushButton_2"));
    pushButton_2->setGeometry(QRect(280, 210, 80, 26));
    MainWindow->setCentralWidget(centralWidget);

    retranslateUi(MainWindow);

    QMetaObject::connectSlotsByName(MainWindow);
    } // setupUi

    void retranslateUi(QMainWindow *MainWindow)
    {
    MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", Q_NULLPTR));
    comboBox->clear();
    comboBox->insertItems(0, QStringList()
    << QApplication::translate("MainWindow", "White patch", Q_NULLPTR)
    << QApplication::translate("MainWindow", "Gray world", Q_NULLPTR)
    << QApplication::translate("MainWindow", "Iterative white balance", Q_NULLPTR)
    );
    pushButton->setText(QApplication::translate("MainWindow", "Tall\303\263z\303\241s", Q_NULLPTR));
    pushButton_2->setText(QApplication::translate("MainWindow", "Ind\303\255t\303\241s", Q_NULLPTR));
    } // retranslateUi

    };

    namespace Ui {
    class MainWindow: public Ui_MainWindow {};
    } // namespace Ui

    QT_END_NAMESPACE

    #endif // UI_MAINWINDOW_H

Új hozzászólás Aktív témák