fixed some bugs in gpu module under Windows:

* convertTo alignment error
* compare with scalars error
This commit is contained in:
Vladislav Vinogradov
2012-05-29 08:03:36 +00:00
parent c492dc6a83
commit 67b718f1cb
4 changed files with 116 additions and 49 deletions

View File

@@ -1037,6 +1037,11 @@ namespace
}
};
template <typename T> static inline bool isAligned(const T* ptr, size_t size)
{
return reinterpret_cast<size_t>(ptr) % size == 0;
}
//////////////////////////////////////////////////////////////////////////
// CudaFuncTable
@@ -1165,6 +1170,13 @@ namespace
CV_Error(CV_StsUnsupportedFormat, "The device doesn't support double");
}
bool aligned = isAligned(src.data, 16) && isAligned(dst.data, 16);
if (!aligned)
{
cv::gpu::convertTo(src, dst);
return;
}
const func_t func = funcs[src.depth()][dst.depth()][src.channels() - 1];
CV_DbgAssert(func != 0);