c++ - c++ 激光检测使用逐帧分析
问题描述
我正在尝试创建一个程序来打开我的相机,拍摄一个框架,并定位一个激光点。我想分析每一帧并找到一个红色激光点。理想情况下,我将能够在激光点的质心处的 x 和 y 坐标处插入一条线,该线会随着每个新帧的更新而更新。我用来拍摄激光照片的相机质量相当高,拍摄尺寸为 2048x2048 的照片,因此通过每个像素需要太长时间。我需要这个软件运行得相当快。我已经有了打开相机并获取帧的代码。 激光图像
编写代码以在每帧内定位激光点的中心点的最佳方法是什么?
谢谢,
#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;
}
解决方案
推荐阅读
- c++ - C ++ 11使用智能指针但获得无效指针
- amazon-web-services - S3 Bucket 网站仅适用于 /index tail
- python-3.x - 如何将命令行“key = value”参数转换为字典?
- c# - 如何使用 docker 在 IIS 上运行 asp.net web api
- mysql - 如何优化这个sqlrq?合适吗?怎么做更好?
- python - 清理时间戳数据 - Python
- android - 加密用户数据而不会丢失 android 应用程序中的登录用户
- ajax - 如何使用ajax将选择框和文本值从搜索表单传递到控制器?
- javascript - 有没有办法根据对话结果将信息从 Microsoft 聊天机器人发送到网站
- sql-server-2012 - 从 SQL Server 中具有相等条件的表中选择