c++ - 如何创建对象数组并访问子类中的函数?C++
问题描述
为了同时捕获图像,我想创建一个对象数组 ( cam
)。使用当前数组,我可以执行 the 的功能,class xiAPIplus_Camera
但class xiAPIplusCameraOcv : public xiAPIplus_Camera
不会启动其中的功能。例如:如果我启动cv::Mat GetNextImageOcvMat();
类析构函数,则改为运行。
class xiAPIplusCameraOcv : public xiAPIplus_Camera
{
public:
/**
* Initialize the xiAPIplusCameraOcv class.
*/
xiAPIplusCameraOcv();
/**
* Class destructor. Free allocated memory, release images
*/
virtual ~xiAPIplusCameraOcv();
/**
* Reads an image from the camera using XiAPI, stores the image in OpenCV Mat format.
* @return OpenCV Mat image.
*/
cv::Mat GetNextImageOcvMat(); //Reads an image and converts it to OpenCV Mat
/**
* Converts a XiAPI image (xiAPIplus_Image*) to OpenCV Mat.
* @param input_image[in] Input xiAPIplus_Image* to be converted.
* @return converted OpenCV IpliImage* image.
*/
cv::Mat ConvertOcvMat(xiAPIplus_Image * input_image); //Converts an image to OpenCV Mat
//virtual xiAPIplusCameraOcv& operator >> (CV_OUT Mat& input_image);
private:
/**
* Resets the Opencv image if properties of XI_IMG have changed. Resets the cv_mat_image_.
*/
void resetCvImage_(); //Resets the OpenCV image properties if XI_IMG format has changed
cv::Mat cv_mat_image_;
xiAPIplus_Image * next_image_;
int timeout_;
int counter_;
int index_;
};
主要功能能够创建数组,但我在使用它时遗漏了一些东西。
int main(int argc, char* argv[])
{
try
{
xiAPIplusCameraOcv cam[5];
int n = cam[4].GetNumberOfConnectedCameras();
int uidArray[4];
char* snArray[4];
for (int id = 0; id < n; id++)
{
printf("Opening %d. camera ...\n", id + 1);
cam[id].OpenByID(id);
cam[id].GetSerialNumber(sn, 100);
}
for (int exp = 0; exp < n; exp++)
{
cam[exp].StartAcquisition();
Mat cv_mat_image = cam[exp].GetNextImageOcvMat(); //
printf("GetNextImageOcvMat\n");
cv::imwrite(save_at, cv_mat_image);// , compression_params);
cam[exp].StopAcquisition();
}
printf("Done\n");
cv::waitKey(500);
}
catch (xiAPIplus_Exception& exp)
{
printf("Error:\n");
exp.PrintError();
#ifdef WIN32
Sleep(2000);
#endif
cv::waitKey(2000);
return -1;
}
return 0;
}
在此行之后 Mat cv_mat_image = cam[exp].GetNextImageOcvMat();
,析构函数正在关闭我的相机对象。
/**
* Class destructor. Free allocated memory, release images
*/
xiAPIplusCameraOcv::~xiAPIplusCameraOcv(){
printf("Closing xiAPIplus_Ocv camera\n");
cv_mat_image_.release();
}
解决方案
推荐阅读
- pandas - pandas_udf 错误(applyInPandas)说明元组格式
- regex - 我一直在尝试将特定路径中的所有 url 重定向为小写
- typescript - 使用重载函数处理联合,该函数在单个重载中不处理整个联合
- javascript - 如何优化数据结构以读取 mongo 或 sql 到客户端
- r - 如何为某个单元格中的多个个体制作二进制变量?
- html - 导航栏的引导响应调整大小问题
- visual-studio-code - VSCode - 使用 javascript 文件时,如何为块注释添加一对新的自定义分隔符?
- django - 如何创建一个折线图,指示用户在哪个月份写了更多或更少的博客?
- amazon-emr - 将 Spark 处理的中间数据复制到目标 S3 时出现 AWS EMR 性能问题
- python - 子类不继承父类