How can i calculate Image quality by using  BRISQUE in Opencv 3.4.1?    
   I have go through several tutorial about BRISQUE algorithm ,but most of them are old tutorial and those contain error . So anyone can write the code or give a reference for this ? I gone through and this tutorial . I wrote the following code by using those tutorial but it showing errors .
 int main()
{
    Mat im = imread("C:/Users/Samjith.CP/Desktop/1.jpg");
    if (im.empty())
    {
        cout << "img read fail" << endl;
    }
    else
    {
        cvtColor(im, im, COLOR_BGR2GRAY); // convert to grayscale
        im.convertTo(im, 1.0 / 255); // normalize and copy the read image to orig_bw
        Mat mu(im.size(), CV_64FC1, 1);
        GaussianBlur(im, mu, Size(7, 7), 1.166); // apply gaussian blur
        Mat mu_sq = mu.mul(mu);
        // compute sigma
        Mat sigma (im.size(), CV_64FC1, 1);
        sigma = im.mul(im);
        GaussianBlur(sigma, sigma, Size(7, 7), 1.166); // apply gaussian blur
        subtract(sigma, mu_sq, sigma); // sigma = sigma - mu_sq
        cv::pow(sigma, double(0.5), sigma); // sigma = sqrt(sigma)
        add(sigma, Scalar(1.0 / 255), sigma); // to avoid DivideByZero Exception
        Mat structdis(im.size(), CV_64FC1, 1);
        subtract(im, mu, structdis); // structdis = im - mu
        divide(structdis, sigma, structdis);
        // declare shifting indices array
        int shifts[4][2] = { { 0, 1 },{ 1, 0 },{ 1, 1 },{ -1, 1 } };
        // calculate pair-wise products for every combination of shifting indices
        for (int itr_shift = 1; itr_shift <= 4; itr_shift++)
        {
            int* reqshift = shifts[itr_shift - 1]; // the required shift index
                                                   // declare shifted image
            Mat shifted_structdis(imdist_scaled.size(), CV_64F, 1);
            // BwImage is a helper class to create a copy of the image and create helper functions to access it's pixel values
            BwImage OrigArr(structdis);
            BwImage ShiftArr(shifted_structdis);
            // calculate pair-wise component for the given orientation
            for (int i = 0; i < structdis.rows; i++)
            {
                for (int j = 0; j < structdis.cols; j++) 
                {
                    if (i + reqshift[0] >= 0 && i + reqshift[0] < structdis.rows && j + reqshift[1] >= 0 && j + reqshift[1] < structdis.cols)
                    {
                        ShiftArr[i][j] = OrigArr[i + reqshift[0]][j + reqshift[1]];
                    }
                    else
                    {
                        ShiftArr[i][j] = 0;
                    }
                }
            }
            Mat shifted_new_structdis;
            shifted_new_structdis = ShiftArr.equate(shifted_new_structdis);
            // find the pairwise product
            multiply(structdis, shifted_new_structdis, shifted_new_structdis);
        }
        // make a svm_node object and push values of feature vectors into it
        struct svm_node x[37];
        // features is a rescaled vector to (-1, 1)
        for (int i =0 ; i < 36; ++i) 
        {
            x[i].value = features[i];
            x[i].index = i + 1; // svm_node indexes start from 1
        }
        // load the model from modelfile - allmodel
        string model = "allmodel";
        Ptr<ml::SVM> model = ml::SVM::load(modelfile.c_str());
            // get number of classes from the model
            int nr_class = svm_get_nr_class(model);
        double *prob_estimates = (double *)malloc(nr_class * sizeof(double));
        // predict the quality score using svm_predict_probability function
        qualityscore = svm->predict_probability(model, x, prob_estimates);
    }
}
 
 

and the error ?
@berak: Can i proceed with above code by correcting errors(by using libsvm)?
i found this on my disk, maybe it helps.
and the svm code there is calculating a single regression score, not probabilities for different distortion classes. no idea, what you wanted.
@ berak : Objective Blind or No-Reference IQA- this all i want to use . I have a image and i want want to get the quality score . I got the above code and read about BRISQUE from this link
then you probably can use the existing allmodel with libsvm