/***************************************************************************** * HOperatorOverloads.h ***************************************************************************** * * Project: HALCON/C++ * Description: C++ operator overloads for common class operations * * (c) 2010-2020 by MVTec Software GmbH * www.mvtec.com * ***************************************************************************** * * *****************************************************************************/ #ifndef HCPP_OPERATOR_OVERLOADS_H #define HCPP_OPERATOR_OVERLOADS_H namespace HalconCpp { /***************************************************************************** * HImage: Gray value operations *****************************************************************************/ // Add gray values LIntExport HImage operator + (const HImage& image1, const HImage& image2); // Subtract gray values LIntExport HImage operator - (const HImage& image1, const HImage& image2); // Multiply gray values LIntExport HImage operator * (const HImage& image1, const HImage& image2); // Shift gray values LIntExport HImage operator + (const HImage& image, double add); // Shift gray values LIntExport HImage operator - (const HImage& image, double sub); // Scale gray values LIntExport HImage operator * (const HImage& image, double mult); // Scale gray values LIntExport HImage operator / (const HImage& image, double div); // Shift gray values LIntExport HImage operator + (double add, const HImage& image); // Scale gray values LIntExport HImage operator * (double mult, const HImage& image); /***************************************************************************** * HImage: Segmentation *****************************************************************************/ // Dynamic Threshold LIntExport HRegion operator >= (const HImage& image1, const HImage& image2); // Dynamic Threshold LIntExport HRegion operator <= (const HImage& image1, const HImage& image2); // Fixed Threshold LIntExport HRegion operator >= (const HImage& image, double threshold); // Fixed Threshold LIntExport HRegion operator <= (const HImage& image, double threshold); // Fixed Threshold LIntExport HRegion operator >= (double threshold, const HImage& image); // Fixed Threshold LIntExport HRegion operator <= (double threshold, const HImage& image); /***************************************************************************** * HImage: Miscellaneous *****************************************************************************/ // Reduce domain of image LIntExport HImage operator & (const HImage& image, const HRegion& region); /***************************************************************************** * HRegion: Sets * *****************************************************************************/ // Intersection of regions LIntExport HRegion operator & (const HRegion& region1, const HRegion& region2); // Union of regions LIntExport HRegion operator | (const HRegion& region1, const HRegion& region2); // Difference of regions LIntExport HRegion operator / (const HRegion& region1, const HRegion& region2); // Intersection of region with image domain LIntExport HRegion operator & (const HRegion& region, const HImage& image); // Test if one region is a subset of the other LIntExport bool operator >= (const HRegion& region1, const HRegion& region2); // Test if one region is a subset of the other LIntExport bool operator <= (const HRegion& region1, const HRegion& region2); /***************************************************************************** * HRegion: Morphology * *****************************************************************************/ // Minkowski addition of regions LIntExport HRegion operator + (const HRegion& region1, const HRegion& region2); // Minkowski substraction of regions LIntExport HRegion operator - (const HRegion& region1, const HRegion& region2); // Dilation of region by specified radius LIntExport HRegion operator + (const HRegion& region, double radius); // Erosion of region by specified radius LIntExport HRegion operator - (const HRegion& region, double radius); // Scaling of region by specified factor LIntExport HRegion operator * (const HRegion& region, double factor); // Dilation of region by specified radius LIntExport HRegion operator + (double radius, const HRegion& region); // Scaling of region by specified radius LIntExport HRegion operator * (double factor, const HRegion& region); /***************************************************************************** * HFunction1D *****************************************************************************/ // Add a constant offset to the function's Y values LIntExport HFunction1D operator + (const HFunction1D& function, double add); // Add a constant offset to the function's Y values LIntExport HFunction1D operator + (double add, const HFunction1D& function); // Subtract a constant offset from the function's Y values LIntExport HFunction1D operator - (const HFunction1D& function, double sub); // Scale the function's Y values LIntExport HFunction1D operator * (const HFunction1D& function, double factor); // Scale the function's Y values LIntExport HFunction1D operator * (double factor, const HFunction1D& function); // Scale the function's Y values LIntExport HFunction1D operator / (const HFunction1D& function, double div); // Compose two functions (not a pointwise multiplication) LIntExport HFunction1D operator * (const HFunction1D& function1, const HFunction1D& function2); /***************************************************************************** * HMatrix *****************************************************************************/ // Add two matrices LIntExport HMatrix operator + (const HMatrix& matrix1, const HMatrix& matrix2); // Subtract two matrices LIntExport HMatrix operator - (const HMatrix& matrix1, const HMatrix& matrix2); // Matrix multiplication LIntExport HMatrix operator * (const HMatrix& matrix1, const HMatrix& matrix2); // Scale matrix LIntExport HMatrix operator * (const HMatrix& matrix, double factor); // Scale matrix LIntExport HMatrix operator * (double factor, const HMatrix& matrix); // Solve linear system matrix2 * x = matrix1 LIntExport HMatrix operator / (const HMatrix& matrix1, const HMatrix& matrix2); /***************************************************************************** * HQuaternion *****************************************************************************/ // Compose two quaternions LIntExport HQuaternion operator * (const HQuaternion& left, const HQuaternion& right); /***************************************************************************** * HDualQuaternion *****************************************************************************/ // Compose two dual quaternions LIntExport HDualQuaternion operator * (const HDualQuaternion& left, const HDualQuaternion& right); } #endif