使用逐帧分析进行c ++激光检测

时间:2019-06-11 13:39:19

标签: c++ image opencv3.0 tracking

我正在尝试创建一个程序,该程序将打开相机,取景,并找到激光点。我想分析每一帧并找到一个红色的激光点。理想情况下,我将能够在随每个新帧更新的激光点质心的x和y坐标处插入一条线。我用来拍摄激光图像的相机质量很高,并且能拍摄2048x2048尺寸的图像,因此通过每个像素花费的时间太长。我需要该软件才能快速运行。我已经有了打开相机并获取框架的代码。 laser image

enter image description here

编写代码以在每帧内定位激光点中心点的最佳方法是什么?

谢谢

   #include <stdio.h>
   #include <iostream>
   #include "xiApiPlusOcv.hpp" 
   #include "opencv2/opencv.hpp"

   using namespace cv;
   using namespace std;


   int main(int argc, char* argv[])
   {
    try
   {
    xiAPIplusCameraOcv cam;
    // Retrieving a handle to the camera device
    printf("Opening first camera...\n");
    cam.OpenFirst();
    cam.SetExposureTime(10000); //10000 us = 10 ms
    // Note: The default parameters of each camera might be different in different API versions
    cam.SetImageDataFormat(XI_RGB24);
    printf("Starting acquisition...\n");
    cam.StartAcquisition();
    printf("First pixel value \n");

    #define EXPECTED_IMAGES 200
    for (int images = 0; images < EXPECTED_IMAGES; images++)
    {
        Mat cv_mat_image = cam.GetNextImageOcvMat();
        cvWaitKey(20);
        Mat outImg; 
        cv::resize(cv_mat_image, outImg, cv::Size(), .35, .35);;
        imshow("image", outImg);
    }

    cam.StopAcquisition();
    cam.Close();
    printf("Done\n");
    cvWaitKey(500);
}
catch (xiAPIplus_Exception& exp) {
    printf("Error:\n");
    exp.PrintError();
    cvWaitKey(2000);
}
return 0;

}

0 个答案:

没有答案