草庐IT

opencv_traincascade

全部标签

c++ - OpenCV C++ 代码在终端中运行良好,但从 Eclipse 运行时出错 - Ubuntu 12.04

我正在尝试在Ubuntu12.04LTS上的EclipseIDE中运行C++OpenCV程序。当我使用终端时它们运行良好,如此处所示-https://help.ubuntu.com/community/OpenCV.但是当我在Eclipse中构建相同的代码时,出现以下错误错误描述-openglsupportavailableOpenCVError:Assertionfailed(size.width>0&&size.height>0)inimshow,file/home/akash/OpenCV/opencv-2.4.7/modules/highgui/src/window.cpp,l

c++ - 列出 OpenCV 支持的文件扩展名

在OpenCV中,我看到imread()和VideoCapture()都将一个字符串带到多个扩展名的文件路径中。有没有办法获得他们支持的扩展列表?例如,获取“jpg”、“png”、“mov”、“mpg”等的列表?我假设这是系统相关的,其他人需要在运行时查询它。此外,如何确定支持?如果有类似下面的代码,我得到的垫子似乎总是部分损坏(我可以看到一些图像)。无论我要求的帧数如何,它似乎都没有改变。我可以在我的视频播放器“totem”中播放这个视频,但我什至不确定totem和OpenCV是否对这个文件使用相同的编解码器。MatfromVideo(std::string_videoPath,in

c++ - 来自 2 个摄像头(用于立体视觉)的视频使用 OpenCV,但其中一个滞后

我正在尝试使用2个罗技C310网络摄像头创建立体视觉。但结果还不够好。其中一个视频比另一个视频滞后。这是我使用VC++2010的openCV程序:#include#include#includeusingnamespacecv;usingnamespacestd;intmain(){try{VideoCapturecap1;VideoCapturecap2;cap1.open(0);cap1.set(CV_CAP_PROP_FRAME_WIDTH,1040.0);cap1.set(CV_CAP_PROP_FRAME_HEIGHT,920.0);cap2.open(1);cap2.set

c++ - 将 OpenCV 项目升级到最新版本

我有一个使用OpenCV2.3.1的C++Logo检测项目。我需要将这个项目升级到OpenCV3.0。例如,我想使用cv::Mat而不是使用(我实际上是指替换)IplImage。我知道如果没有一些手动编码,一切都不会自动升级。问题:我想知道是否有任何方法可以通过使用软件或第三方库至少自动完成一些工作。 最佳答案 我最近不得不升级一个旧的OpenCV项目,以利用2.4.*版本(来自版本2.2)中提供的一些额外功能。没有工具或库可以帮助您检测需要更改的内容。我不得不升级并修复我的代码的某些部分,这些部分使用的函数略有变化。您可以使用的一

OpenCV中inRange函数

在OpenCV中,inRange函数用于根据颜色范围从图像中提取特定的颜色区域。这个函数检查输入图像中的每个像素,如果像素值位于指定的范围内,则在输出图像(或掩码)中对应位置的像素被设置为白色(或者说是255),否则被设置为黑色(0)。这种方法在处理颜色过滤、颜色识别等任务时非常有用。voidinRange(InputArraysrc,InputArraylowerb,InputArrayupperb,OutputArraydst);src:输入图像,通常是经过颜色空间转换后的图像,比如从BGR转换到HSV颜色空间的图像。lowerb:颜色范围的下界,使用Scalar类型表示。upperb:颜

c++ - opencv cvLine 方法不起作用

我想在相机捕获的帧上打印一条线,但是当我尝试这段代码时它抛出cv::MatcameraFramemainmethodMatError:nosuitableconversionfunctionfor"cv::Mat"to"CvArr"existscvLine(cameraFrame,cvPoint(30,30),cvPoint(90,90),Scalar(255,255,255),1,8,CV_AA);但同时我使用了putText方法,它完美地工作。 最佳答案 cvLine()是OpenCV的CAPI中的一个函数(现已弃用),但它只能

c++ - 使用 OpenCv 3.0 进行鱼眼镜头校准

我必须用鱼眼镜头校准我的相机。首先,我使用带有标志CV_CALIB_RATIONAL_MODEL的OpenCv2.4来获得更好的结果,但这还不够。后来看到OpenCv3.0有鱼眼标定功能。我计算我的对象点并使用findChessboardCorners()获取我的图像点,它们看起来是正确的。我的问题是在fisheye::calibrate之后。我的重投影误差、固有矩阵和失真系数等返回值是错误的。它们是-nan值。有谁知道我做错了什么吗?谢谢 最佳答案 对于新的OpenCV3.0鱼眼功能,我发现除非指定了cv::fisheye::CA

c++ - OpenCV - Mat 的零填充

假设我有一个尺寸为98x158x32(浮点型)的Mat变量small_image。现在我想对这个图像进行零填充(即向图像添加一个零边框)。我想在图像的上方和下方添加7个零,在图像的左右各添加12个零。第一个想法是使用cvcopyMakeBorder(参见copyMakeBorderdoc),这似乎很适合这个:intold_size[3];old_size[0]=98;old_size[1]=158;old_size[2]=32;intpad_size[3];pad_size[0]=old_size[0]+2*7;pad_size[1]=old_size[1]+2*12;pad_size

c++ - openCV cv::mat 发布

当使用openCVcv::Mat时。http://docs.opencv.org/modules/core/doc/basic_structures.html我知道正在使用某种智能指针。我的问题是,为了进行一些内存优化。我应该调用cv::Matrelease()来释放未使用的矩阵吗?还是我应该相信编译器会这样做?例如想想这段代码:cv::MatfilterContours=cv::Mat::zeros(bwImg.size(),CV_8UC3);bwImg.release();for(inti=0;i 最佳答案 cv::releas

c++ - 在 OpenCV/C++ 中通过(扩展)卡尔曼滤波器实现数据融合

我正在开展一个项目,通过数据融合来跟踪安装在移动设备上的摄像头的位置。我得到的数据是1)来自源A的相机在x、y和z方向的速度2)来自源B的当前帧和上一帧位置之间的差异(在2D中,Z不应以任何方式改变)我已经做了一个类似的项目,但没有任何数据融合,而是使用了在OpenCV中实现的卡尔曼滤波器。目前,我一直对迄今为止在网上找到的所有不同实现技术感到困惑。我如何将我获得的数据插入/组合到KF/EKF的不同组件中?我有这个例子来改变OpenCV-KF以作为EKF工作。它看起来很像我需要的东西,除了我的对象实际上是相机本身并且还能够在y轴和x轴上移动,轮流,......而且我得到的不是对象的像素