OpenCV项目开发实战--forEach的并行像素访问与其它方法的性能比较

在本教程中,我们将比较Mat 类的forEach方法与 OpenCV 中访问和转换像素值的其他方法的性能。我们将展示forEach如何比简单地使用at方法甚至有效地使用指针算术快得多。

OpenCV 内部有一些隐藏的宝石,有时并不为人所知。这些隐藏的宝石之一是Mat 类的forEach方法,它利用计算机上的所有核心在每个像素上应用任何函数。

让我们首先定义一个函数ComplexThreshold。它接收 RGB 像素值并对其应用复杂的阈值。

// Define a pixel
typedef Point3_ Pixel;
 
// A complicated threshold is defined so
// a non-trivial amount of computation
// is done at each pixel.
void complicatedThreshold(Pixel &pixel)
{
  if (pow(double(pixel.x)/10,2.5) > 100)
  {
    pixel.x = 255;
    pixel.y =

你可能感兴趣的:(OpenCV项目开发实战,opencv,人工智能,计算机视觉)