Russian Qt Forum
Ноябрь 23, 2024, 08:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: # pragma omp parallel for  (Прочитано 2481 раз)
SubaroMows
Гость
« : Май 23, 2012, 17:24 »

Код:
    #  pragma  omp  parallel  for
    for(int i = 0; i < image.height(); i++) {
        for(int j = 0; j < image.width(); j++)
            if(findBrightness(image.pixel(j,i)) > threshold)
                image.setPixel(j,i,QColor(255,255,255).rgb());
            else
                image.setPixel(j,i,QColor(0,0,0).rgb());
    }

Выдаёт чёрное изображение, без  #  pragma  omp  parallel  for работает нормально.
Здесь ведь никаких перекрытий нет? работаем с каждым пикселем независимо.
Подскажите, в чём проблема. Почему не параллелиться.
« Последнее редактирование: Май 23, 2012, 17:42 от SubaroMows » Записан
DmitryM
Гость
« Ответ #1 : Май 23, 2012, 21:50 »

Есть одно предположение, но озвучивать пока не стану.
Попробуй для получения указателя на строчку матрицы
Код:
uchar * QImage::scanLine ( int i )
и работать с это строкой
Код:
   #  pragma  omp  parallel  for
    for(int i = 0; i < image.width(); i++) {
        uchar row = image.scanLine ( i );
        for(int j = 0; j < image.height(); j++)
            if(findBrightness( (QRbg) row[j]) > threshold)
                row[j] = qRgb ( 255,255,255);
            else
                row[j] =qRgb ( 0,0,0);
    }

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.081 секунд. Запросов: 21.