|PARP Research Group||Universidad de Murcia|
To enable the QVision to interoperate with OpenCV, the following line must be present (and un-commented) at the config.pri file, prior to compilation and installation of the QVision library:
CONFIG += qvopencv
QVision applications will automatically link to the include and binary files for the OpenCV library.
The QVision includes functionality to convert QVMatrix and QVImage objects from and to CvMat and IplImage types, making straightforward to include OpenCV code in a QVision application. To convert a QVMatrix object from and to an OpenCV's CvMat structure the developer can use the QVMatrix constructor and conversion operator:
// First create an OpenCv double precission matrix CvMat *cvMat = cvCreateMat(rows, cols, CV_64F); // Next, init the contents of the OpenCV matrix. [...] // Converts the OpenCV matrix to a QVision matrix QVMatrix qvMatrix = cvMat; // Do things with the QVision matrix [...] // Converts the QVision matrix to a new OpenCV matrix CvMat *cvMat2 = qvMatrix; // Do things with the new OpenCV matrix [...] // Delete OpenCV matrices cvReleaseMat(&cvMat); cvReleaseMat(&cvMat2);
Similarly, the developer can use QVImage constructor and conversion operators to convert from and to the OpenCV image format (IplImage):
// First create an OpenCV image object. IplImage *iplImage = cvCreateImageHeader(cvSize(cols, rows), IPL_DEPTH_8U, 1); cvCreateImageData(iplImage); // Next, init the contents of the OpenCV image. [...] // Create a new QVImage object from the 'iplImage' object. // Both image objects, 'iplImage' and 'qvImage' will contain the same image. QVImage<uChar, 1> qvImage = iplImage; // Do things with the QVision image [...] // Create a new OpenCV image object, that will contain the same image as the 'qvImage' object. IplImage *iplImageBis = qvImage; // Do things with the new OpenCV image [...] // Finally, release the OpenCV images cvReleaseImage(&iplImage); cvReleaseImage(&iplImageBis);
The examples/OpenCV directory includes some QVision application which use OpenCV functionality.
You can find a list in the module OpenCV interoperability example programs..