我正在使用OpenCV,Android和OpenGL进行增强现实项目.据我所知,OpenGL中的coordintate系统是
OpenCV坐标系是:
将这些设备与Android传感器组合时,如何进行坐标系转换和[R | t]矩阵转换?是否有一个很好的教程或文档解释了所有这些令人讨厌的东西?
opencv opengl-es rotation coordinate-transformation android-sensors
想象一下,我有以下几点:
CvMat* mat = cvCreateMat(3,3,CV_16SC3)
Run Code Online (Sandbox Code Playgroud)
这是通道3的3x3整数矩阵.
现在,如果您查看OpenCV文档,您会发现以下内容作为cvMat的减速:
typedef struct CvMat {
int type;
int step;
int* refcount;
union
{
uchar* ptr;
short* s;
int* i;
float* fl;
double* db;
} data;
union
{
int rows;
int height;
};
union
{
int cols;
int width;
};
} CvMat;
Run Code Online (Sandbox Code Playgroud)
现在,我想使用data.ptr,它是指向存储在cvMat中的数据的指针.但是,我很难理解内存是如何布局的.如果我有一个3通道矩阵,这是如何工作的?对于一个通道来说它很简单,因为它只是一个简单的MxN矩阵,其中M是行,N是cols.但对于3通道,这些MxN矩阵中有3个吗?有人可以告诉我如何通过data.ptr进行3通道矩阵的初始化以及如何访问这些值吗?谢谢.
我对这里给出的简单粒子滤波算法感兴趣:http://www.aiqus.com/upfiles/PFAlgo.png看起来很简单,但我不知道如何实际做到这一点.关于如何实现它的任何想法(只是为了更好地理解它是如何工作的)?
编辑: 这是一个很好的简单示例,解释它是如何工作的:http://www.aiqus.com/questions/39942/very-simple-particle-filters-algorithm-sequential-monte-carlo-method-implementation?page= 1#39950
我试图用C++实现它:http://pastebin.com/M1q1HcN4但是我要注意我是否以正确的方式执行它.你能否检查我是否理解得很好,或者根据我的代码存在一些误解?
#include <iostream>
#include <vector>
#include <boost/random/mersenne_twister.hpp>
#include <boost/random/uniform_01.hpp>
#include <boost/random/uniform_int_distribution.hpp>
using namespace std;
using namespace boost;
double uniform_generator(void);
#define N 4 // number of particles
#define evolutionProba_A_A 1.0/3.0 // P(X_t = A | X_t-1 = A)
#define evolutionProba_A_B 1.0/3.0 // P(X_t = A | X_t-1 = B)
#define evolutionProba_B_B 2.0/3.0 // P(X_t = B | X_t-1 = B)
#define evolutionProba_B_A 2.0/3.0 // P(X_t = …
Run Code Online (Sandbox Code Playgroud) 可以将旧的C风格cvMat矩阵传递给cvSave()函数,以便轻松写入XML文件.此函数不接受新的C++样式cv::Mat
和cv::Mat_
矩阵.
OpenCV参考有一个关于XML持久性的部分,但是这三个类(FileStorage,FileNode和FileNodeIterator)缺少任何描述或示例,我无法弄清楚如何从界面中使用它们.
谢谢.
编辑:这其实涉及很多其他的功能,在新的C++接口的OpenCV,为2.1版本.文档在某些地方非常差,函数参数不一致,并且用户组要么不知道,要么比回答问题有更好的事情要做.我将坚持使用旧的C接口一段时间.文件更好,更不用说O'Reilly的书了.
在我的应用程序中,我想跟踪短信发送.如果由于网络故障而没有发送短信(无信号).
我设法将短信放在发件箱中:
private void putoutbox(String addr,String msg) {
// TODO Auto-generated method stub
ContentValues values = new ContentValues();
values.put("address", addr);
values.put("body", msg);
getContentResolver().insert(Uri.parse("content://sms/Outbox"), values);
}
Run Code Online (Sandbox Code Playgroud)
短信显示在默认消息文件夹中,状态为发送但短信从未发送过我也试过了
content://sms/failed
Run Code Online (Sandbox Code Playgroud)
它也不发送短信.请告诉我我错过了什么.
我正在使用OpenCV2.2用背景减法的方法实现移动物体检测.我使用高斯混合模型(GMM)方法来模拟背景参考图像.
我通过使用OpenCV2.2中提供的类cv :: BackgroundSubtractorMOG直接获取前景像素(或前景蒙版).这很方便,但是cv :: BackgroundSubtractorMOG返回的前景掩码不如我预期的那么好.此外,似乎cv :: BackgroundSubtractorMOG的性能比OpenCV1.0中提供的C语言中写的GMM方法差.
以下是我在OpenCV2.2中的代码:
cv::BackgroundSubtractorMOG mog;
mog(frame, fgMask, 0.01);
Run Code Online (Sandbox Code Playgroud)
那么,我是否以错误的方式使用该方法?
顺便说一句,cv :: BackgroundSubtractorMOG是否对前景像素执行阴影去除?
非常感谢你.
opencv computer-vision background-subtraction mog shadow-removal
有人知道它是如何工作的以及如何使用OpenCV来做到这一点?拉普拉斯算子可以使用OpenCV计算,但结果不是我所期望的.我的意思是我希望图像在背景区域具有近似恒定的对比度,但它是黑色的,边缘是白色的.即使经过高斯滤波器,也会产生很多噪音.我使用高斯滤波器过滤图像然后应用拉普拉斯.我认为我想要的是以不同的方式完成的.
我遇到了OpenCV用于摄像机校准目的的各种坐标参数化问题.问题是关于图像失真公式的三个不同信息来源显然给出了涉及的参数和方程的三个非等效描述:
(1)在他们的 "学习OpenCV ......"一书中,Bradski和Kaehler写了关于镜头失真的文章(第376页):
xcorrected = x * ( 1 + k1 * r^2 + k2 * r^4 + k3 * r^6 ) + [ 2 * p1 * x * y + p2 * ( r^2 + 2 * x^2 ) ],
ycorrected = y * ( 1 + k1 * r^2 + k2 * r^4 + k3 * r^6 ) + [ p1 * ( r^2 + 2 * y^2 ) + 2 …
Run Code Online (Sandbox Code Playgroud) 在python中修补OpenCV.面部检测演示令人印象深刻.
除了脸部,眼睛和全身之外,还有免费的哈尔分类器吗?
作为某种"假期项目",我正在玩OpenCV并想要检测和测量内容.
当前工作流程(早期阶段 - 检测):
我的结果有点蹩脚,我不确定什么是正确的方向.我已经让cvBlob在我目前的设置下工作(OSX 10.7.2,Xcode 4.2.1)它是一个更好的方法吗?如果是这样,我该如何以正确的方式实施?
或者我首先需要背景扣除?我尝试过,但之后无法找到轮廓
这是我的形象:
这是我的输出,当我将轮廓绘制回第一张图像时:
UPDATE
我在我的程序中工作,我的输出看起来有点不同......
- (IBAction)processImage:(id)sender
{
cv::Mat forground = [[_inputView image] CVMat];
cv::Mat result = [self isolateBackground:forground];
[_outputView setImage:[NSImage imageWithCVMat:result]];
}
- (cv::Mat)isolateBackground:(cv::Mat &)_image
{
int rh = 255, rl = 100, gh = 255, gl = 0, bh = 70, bl = 0;
cv::cvtColor(_image, _image, CV_RGB2HSV_FULL);
cv::Mat element = getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5));
cv::Mat bgIsolation;
cv::inRange(_image, cv::Scalar(bl, gl, rl), …
Run Code Online (Sandbox Code Playgroud) opencv ×8
c++ ×2
android ×1
filtering ×1
formula ×1
inference ×1
math ×1
matrix ×1
mog ×1
montecarlo ×1
objective-c ×1
opengl-es ×1
probability ×1
rotation ×1
xml ×1