Is there a function in OpenCV which takes a complex matrix as a kernel to convolve/filter an image?
This function filter2D() meets your requirement. Pay attention to the int ddepth paratmer, when you apply floating-point kernels on uchar image.
int ddepth
uchar