小编kar*_*lip的帖子

OpenCV从外部摄像头捕获

我正在使用OpenCV编写一个实时应用程序,在下面的例子中:我正在尝试从插入firewire 800的HDV摄像头捕获图像.我试图循环使用cvCaptureFromCam上使用的索引,但没有摄像头可以'找到(网络摄像头除外).

有我的代码示例,它循环索引(转义0导致它是网络摄像头的索引):

CvCapture* camera;
int index;
for (index = 1; index < 100; ++index) {
    camera = cvCaptureFromCAM(index);
    if (camera)
        break;
}    
if (!camera)
    abort();
Run Code Online (Sandbox Code Playgroud)

在任何时候它停止在中止.

我正在编译OSX 10.7,我测试过:

  • OpenCV 1.2私有框架
  • OpenCV 2.0私有框架(在这里找到:OpenCV2.0.dmg)
  • 我自己编译的OpenCV(第2版)

我知道问题是已知的,并且有很多关于此的讨论,但我找不到任何解决方案.

有没有人在同一案件中?

问候.

c macos opencv firewire

2
推荐指数
1
解决办法
7208
查看次数

OpenCV线路检测

我试图在此图像中找到居中框的边缘: 黑色和白色的盒子

我尝试使用houghLines使用dRho = img_width/1000,dTheta = pi/180,阈值= 250它在这个图像上效果很好,缩放到大小的1/3,但在全尺寸图像上它只是到处都是线条在各个方向......

我可以做些什么来调整这个更准确?

c++ opencv image-processing

2
推荐指数
1
解决办法
5652
查看次数

无法将'cv :: VideoCapture'转换为'CvCapture*'

我有一个简单的程序,它拍摄视频并播放它(虽然它对视频进行了一些图像处理).可以从对话框结果中检索视频,也可以直接通过提供文件的路径来检索视频.当我使用cv :: CvCapture capture1时,我得到了像capture1.isOpen(),capture1.get(CV_CAP_PROP_FRAME_COUNT)等属性,但是当我使用CvCapture*capture2时,我得到了奇怪的错误.

我想使用cv :: CvCapture capture1,因为我的函数与capture1一致.或者是否有任何方法可以使用这两种类型,在它们之间进行某种转换,如类型转换或其他类型.

其实我有两个节目,程序1的功能是为CV :: CvCapture和程序2的功能是为CvCapture*.我的意思是这两个程序以不同的方式读取视频文件.

然后我合并了这两个程序,以使用program1中的一些函数和program2中的一些函数.但我无法将cv :: CvCapture转换为CvCapture*.

我正在使用OpenCv和Qt Creator.

我的代码在这里发布很长,但我简化了我的代码,使其更小,更易理解.我的代码可能无法正确编译,因为我修改它以使其更简单.

任何帮助,将不胜感激.提前致谢 :)

void MainWindow::on_pushButton_clicked()
{

 std::string fileName = QFileDialog::getOpenFileName(this,tr("Open Video"), ".",tr("Video Files (*.mp4 *.avi)")).toStdString();

cv::VideoCapture  capture1(fileName);       // when I use the cv::VideoCapture capture it gives  an error

//error: cannot convert 'cv::VideoCapture' to 'CvCapture*' for argument '1' to 'IplImage* cvQueryFrame(CvCapture*)
    //CvCapture* capture2 …
Run Code Online (Sandbox Code Playgroud)

c c++ opencv image-processing computer-vision

2
推荐指数
1
解决办法
1万
查看次数

使用openCV检测ROI

我正在做一项工作,我必须找到感兴趣的区域(ROI),然后对图像执行阈值:

在此输入图像描述

因为我不是来自计算领域,所以我遇到了一些困难.

我开始尝试通过以下代码找到ROI:

// code
string filename = "2011-06-11-09%3A12%3A15.387932.bmp";

Mat img = imread(filename)

if (!img.data)
{
    std::cout << "!!! imread não conseguiu abrir imagem: " << filename << std::endl;
    return -1;
}

cv::Rect roi;
roi.x = 0
roi.y = 90

roi.width = 400;
roi.height = 90;

cv::Mat crop = original_image(roi); 
cv::imwrite("2011-06-11-09%3A12%3A15.387932.bmp", crop);
Run Code Online (Sandbox Code Playgroud)

非常感谢你.

c++ opencv image-processing visual-c++

2
推荐指数
1
解决办法
3638
查看次数

如何知道OpenCV中的图像是否为RGB?

我用OpenCV库用c ++编写了一个程序.该程序记录来自网络摄像头的视频,然后将其分成帧.我想知道帧是否在RGB中,因为我想访问每个像素的RGB属性.捕获的编解码器是CV_FOURCC('M','J','P','G').如何在RGB色彩空间中获取帧?

int main() {

Mat image;
VideoCapture cap(0);
cap.set(CV_CAP_PROP_FPS, 10);

if ( !cap.isOpened() ) {
    cout << "ERROR : Cannot open the video file"<<endl;
    return -1;
}
namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);

double dWidth   = cap.get(CV_CAP_PROP_FRAME_WIDTH);
double dHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT);
cout << "Frame size :" << dWidth << "x" << dHeight << endl;
Size frameSize(static_cast<int>(dWidth), static_cast<int>(dHeight));
VideoWriter oVideoWriter("E:/myVideo.avi", CV_FOURCC('M', 'J', 'P', 'G'), 10, frameSize, true);

if (!oVideoWriter.isOpened()) {
    cout << "ERROR : Failed to write the video"<<endl;
    return - 1;
}

while …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing

2
推荐指数
1
解决办法
2万
查看次数

1
推荐指数
1
解决办法
92
查看次数

OpenCV C++和cvSmooth

任何人都知道可能有什么问题:

cvSmooth(origImage, grayImage1, CV_BLUR,3);
Run Code Online (Sandbox Code Playgroud)

我收到错误:

error: cannot convert `cv::Mat' to `const CvArr*' for argument `1' to `void 
cvSmooth(const CvArr*, CvArr*, int, int, int, double, double)'
Run Code Online (Sandbox Code Playgroud)

如果我使用:

cvtColor(origImage, grayImage, CV_BGR2GRAY);
Run Code Online (Sandbox Code Playgroud)

一切正常.捕获来自笔记本电脑相机(实时).

c c++ opencv

1
推荐指数
1
解决办法
1万
查看次数

精确控制GCC的输出

出于某些原因,我希望能够微调为我的C++程序生成的最终可执行文件 - 直到单个指令.我记得,GCC应该生成一些文本汇编程序文件作为中间输出,然后将其提供给汇编程序以生成最终的二进制目标文件.

我是否有可能提取此汇编源,以编程方式编辑它并将此修改后的版本提供给最终的汇编程序以生成我的自定义目标文件?我的目标是Windows平台.

MSVC++是否支持类似的功能?

如果你想知道为什么,部分原因是通过包含我们的自定义多态代码生成逻辑来防止逆向工程.另一个原因是,在分发给客户的每个副本中创建隐藏的标识,以阻止任何人破解我们的保护并分发他的破解版本.

c c++ x86 assembly gcc

1
推荐指数
1
解决办法
239
查看次数

从另一个启动一个C++应用程序,并与之通信

我有一个C++(技术上是MATLAB mex)程序,我打算用它在我的系统上启动一个独立的纯C++ slave程序.主调用程序可能如下所示:

void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[]){
    system ("path/to/slave/program");
}
Run Code Online (Sandbox Code Playgroud)

一旦从站启动,我就会想要第二个mex程序,它将与从程序通信并将数据发送到从程序.发送的数据将采用大型C++数组的形式.

我想我需要对slave程序(可能是它的pid?)进行某种处理,这是一种发送消息的方法,并且可以说是奴隶程序监听传入消息的一种方式.

我没有经验可以让单独的C++程序相互通信,所以在这方面的任何提示都会受到赞赏.此外,如果有任何特定的MATLAB mex特定警告,我很想知道这些.


编辑:我应该提到我正在Ubuntu上构建这个,但最终会喜欢它在所有平台上工作.平台特定的建议非常受欢迎,但多平台的想法真的是我追求的.

c c++ matlab system-calls mex

1
推荐指数
1
解决办法
571
查看次数

opencv在视频上显示变量

是否可以使用opencv在屏幕上叠加%d?

CvPutText()

虽然尝试了但是无法完成

c variables opencv overlay

1
推荐指数
1
解决办法
6818
查看次数