Поворот изображения дает изображение в градациях серого - PullRequest
1 голос
/ 14 июня 2019

У меня проблема с функцией поворота изображения в C ++, с использованием OpenCV и Qt. Это своего рода делает его работу, но не так, как ожидалось, кроме того, что в оттенках серого, часть изображения, кажется, дублируется в правом верхнем углу.

До

* После 1008 *

void ImgProcessing::rotate(cv::Mat &img, cv::Mat &tmp, int angle){

    float rads = angle*3.1415926/180.0;
    float cs = cos(-rads);
    float ss = sin(-rads);

    float xcenter = (float)(img.cols)/2.0;
    float ycenter = (float)(img.rows)/2.0;

    for(int i = 0; i < img.rows; i++)
        for(int j = 0; j < img.cols; j++){

            int rorig = ycenter + ((float)(i)-ycenter)*cs - ((float)(j)-xcenter)*ss;
            int corig = xcenter + ((float)(i)-ycenter)*ss + ((float)(j)-xcenter)*cs;
            int pixel = 0;
            if (rorig >= 0 && rorig < img.rows && corig >= 0 && corig < img.cols) {
                     tmp.at<int>(i ,j) = img.at<int>(rorig, corig);
                  }else tmp.at<int>(i ,j) = 0;
        }

}

Может ли быть проблема в доступе к пикселям изображения?

1 Ответ

1 голос
/ 14 июня 2019

Это зависит от того, как вы читаете на картинке, но я думаю, что вы обращаетесь к нему неправильно.Это должно быть что-то вроде этого:

Vec3b intensity = image.at<Vec3b>(j, i);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...