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);

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