我正在尝试读取图像以操纵像素数据(高斯或其他任何像素)并将像素写入新图像。由于图像尺寸较大(> 1GB,甚至可能大于20GB),因此我读取了它们一次在整个宽度上一次排成一行。因此它变得逐块读取。现在我的工作需要更快的机制来完成整个过程。线程池将是一种有效的解决方案。我不能使用其他库来进行图像处理,为此制造的引擎。
我已经从代码项目中引用了一个示例线程池示例,并且正在读取线程的run函数中的图像,但是我真的不确定它是如何工作的。
HRESULT hRes = m_ObjPool.Init(10, 100); //spawning the thread
void CThreadObject::Run(CThreadPoolThreadCallback &pool)
{
//I read and write my image here using for loop
for(int i=0;i<nImageHeight;++i)
{
for(int j=0;j<nImageWidth;j++)
{
Engine.ReadImage(params);
}
}
}
我要在此处实现的目标是,如果将图像分为10或100个部分(取决于图像大小和块大小),如何将任务分配给线程池。