'qualified reference to "OpencvKCFTrackingImpl is a constructor name rather than a type in this context
#include "opencvkcf.h"
#include <complex>
#include <cmath>
#include "opencvtracking.h"
namespace cv {
inline namespace tracking {
namespace impl {
OpencvKCF::OpencvKCF(QObject *parent)
: QObject{parent}
{
class OpencvKCFTrackerModel
{
public:
OpencvKCFTrackerModel();
~OpencvKCFTrackerModel();
protected:
void opencvmodelEstimationImpl(const std::vector<cv::Mat>&){}
void opencvmodelUpdateImpl(){}
};
class OpencvKCFTrackerImpl : public OpencvKCFTracker
{
public:
OpencvKCFTrackerImpl(const OpencvKCFTracker::Params ¶meters);
virtual void init(cv::InputArray image,const cv::Rect& boundingBox);
virtual bool update(cv::InputArray image, cv::Rect& boundingBox);
void setFeatureExtractor(void (*f)(const cv::Mat,const cv::Rect, cv::Mat&), bool pca_func = false);
OpencvKCFTracker::Params params;
cv::Ptr<OpencvKCFTrackerModel>model;
protected:
void createHanningWindow(cv::OutputArray dest, const cv::Size winSize, const int type)const;
void inline fft2(const cv::Mat src, std::vector<cv::Mat> & dest, std::vector<cv::Mat> & layers_data) const;
void inline fft2(const cv::Mat src, cv::Mat & dest) const;
void inline ifft2(const cv::Mat src, cv::Mat & dest) const;
void inline pixelWiseMult(const std::vector<cv::Mat> src1, const std::vector<cv::Mat> src2, std::vector<cv::Mat> & dest, const int flags, const bool conjB=false) const;
void inline sumChannels(std::vector<cv::Mat> src, cv::Mat & dest) const;
void inline updateProjectionMatrix(const cv::Mat src, cv::Mat & old_cov,cv::Mat & proj_matrix,float pca_rate, int compressed_sz,
std::vector<cv::Mat> & layers_pca,std::vector<cv::Scalar> & average, cv::Mat pca_data, cv::Mat new_cov, cv::Mat w, cv::Mat u, cv::Mat v);
void inline compress(const cv::Mat proj_matrix, const cv::Mat src, cv::Mat & dest, cv::Mat & data, cv::Mat & compressed) const;
bool getSubWindow(const cv::Mat img, const cv::Rect roi, cv::Mat& feat, cv::Mat& patch, OpencvKCFTracker::MODE desc = OpencvKCFTracker::GRAY) const;
bool getSubWindow(const cv::Mat img, const cv::Rect roi, cv::Mat& feat, void (*f)(const cv::Mat, const cv::Rect, cv::Mat& )) const;
void extractCN(cv::Mat patch_data,cv::Mat & cnFeatures) const;
void denseGaussKernel(const float sigma, const cv::Mat , const cv::Mat y_data, cv::Mat & k_data,
std::vector<cv::Mat> & layers_data,std::vector<cv::Mat> & xf_data,std::vector<cv::Mat> & yf_data, std::vector<cv::Mat> xyf_v, cv::Mat xy, cv::Mat xyf ) const;
void calcResponse(const cv::Mat alphaf_data, const cv::Mat kf_data, cv::Mat & response_data, cv::Mat & spec_data) const;
void calcResponse(const cv::Mat alphaf_data, const cv::Mat alphaf_den_data, const cv::Mat kf_data, cv::Mat & response_data, cv::Mat & spec_data, cv::Mat & spec2_data) const;
// Spectrumların yoğunlukları hesaplanır.
void shiftRows(cv::Mat& mat) const;
void shiftRows(cv::Mat& mat, int n) const;
void shiftCols(cv::Mat& mat, int n) const;
private:
float output_sigma;
cv::Rect2d roi;
cv::Mat hann; //hann window filter
cv::Mat hann_cn; //10 dimensional hann-window filter for CN features,
cv::Mat y,yf; // training response and its FFT
cv::Mat x; // observation and its FFT
cv::Mat k,kf; // dense gaussian kernel and its FFT
cv::Mat kf_lambda; // kf+lambda
cv::Mat new_alphaf, alphaf; // training coefficients
cv::Mat new_alphaf_den, alphaf_den; // for splitted training coefficients
cv::Mat z; // model
cv::Mat response; // detection result
cv::Mat old_cov_mtx, proj_mtx; // for feature compression
// pre-defined Mat variables for optimization of private functions
cv::Mat spec, spec2;
std::vector<cv::Mat> layers;
std::vector<cv::Mat> vxf,vyf,vxyf;
cv::Mat xy_data,xyf_data;
cv::Mat data_temp, compress_data;
std::vector<cv::Mat> layers_pca_data;
std::vector<cv::Scalar> average_data;
cv::Mat img_Patch;
// storage for the extracted features, KRLS model, KRLS compressed model
cv::Mat X[2],Z[2],Zc[2];
// storage of the extracted features
std::vector<cv::Mat> features_pca;
std::vector<cv::Mat> features_npca;
std::vector<OpencvKCFTracker::MODE> descriptors_pca;
std::vector<OpencvKCFTracker::MODE> descriptors_npca;
// optimization variables for updateProjectionMatrix
cv::Mat data_pca, new_covar,w_data,u_data,vt_data;
// custom feature extractor
bool use_custom_extractor_pca;
bool use_custom_extractor_npca;
std::vector<void(*)(const cv::Mat img, const cv::Rect roi, cv::Mat& output)> extractor_pca;
std::vector<void(*)(const cv::Mat img, const cv::Rect roi, cv::Mat& output)> extractor_npca;
bool resizeImage; // resize the image whenever needed and the patch size is large
int frame;
};
OpencvKCFTrackerImpl::OpencvKCFTrackerImpl(const OpencvKCFTracker::Params ¶meters);
}}}
}
**I declared "OpencvKCFTrackingImpl" as a constructor and class type in the block. When I want to declare "OpencvKCFTrackingImpl" other block, I got the error "qualified reference to "OpencvKCFTrackingImpl is a constructor name rather than a type in this context. How can I fixed this situation and also How can I use variable to other blocks in private blocks? **
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
