相关疑难解决方法(0)

寻找OpenCV教程

有谁知道你可以推荐的一些好的易学的openCV c/c ++教程?我试过谷歌,但我对结果不太满意.

c c++ opencv image-processing computer-vision

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

如何使用OpenCV在视频上查找对象

要跟踪视频帧上的对象,首先我从视频中提取图像帧并将这些图像保存到文件夹中.然后我应该处理这些图像以找到一个对象.实际上我不知道这是否是实用的,因为所有的算法都是一步完成的.它是否正确?

c++ opencv video-capture image-processing video-processing

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

使用openCV阅读视频

我有一个视频engine2.avi,我想用openCV阅读和展示.这是我的代码:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;

int main(int argc, char** argv)
{
    string filename = "D:\\BMDvideos\\engine2.avi";
    VideoCapture capture(filename);
    Mat frame;

    if( !capture.isOpened() )
        throw "Error when reading steam_avi";

    namedWindow("w", 1);
    for( ; ; )
    {
        capture >> frame;
        //if(!frame)
        //    break;
        imshow("w", frame);
        waitKey(20); // waits to display frame
    }
    waitKey(0);
}
Run Code Online (Sandbox Code Playgroud)

如果我的文件有编解码器YUV 4:2:2 (UYVY)(我使用Direct-Show录制视频),此代码不起作用,但是当我使用视频时,我可以使用openCV!

有谁知道这是如何工作的?

更新:

在阅读了一些链接后,建议捕获异常将解决问题,我修改了我的代码.它没有帮助,但这里是修改后的代码:

cv::VideoCapture cap("d:\\BMDvideos\\engine2.avi");
cv::Mat frame;

try
{
    cap >> frame;
}
catch(cv::Exception ex)
{
    std::cout …
Run Code Online (Sandbox Code Playgroud)

c++ opencv directshow video-processing video-streaming

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

如何在从ORIGINAL-IMAGE中提取的SUB-IMAGE中执行模板匹配过程并在原始图像中显示结果

整整一天我已经尝试了很多东西来获得子图像中的所有相关匹配(使用matchtemplate函数),这是我已经使用mousecallback函数从原始图像中提取的ROI.所以我的代码在下面是匹配功能

 ////Matching Function
void CTemplate_MatchDlg::OnBnTemplatematch()
 {

  namedWindow("reference",CV_WINDOW_AUTOSIZE);    
   while(true)
   { 

 Mat ref = imread("img.jpg");                    //  Original Image   
 mod_ref = cvCreateMat(ref.rows,ref.cols,CV_32F);// resizing the image to fit in picture box
 resize(ref,mod_ref,Size(),0.5,0.5,CV_INTER_AREA);

   Mat tpl =imread("Template.jpg"); // TEMPLATE IMAGE  

  cvSetMouseCallback("reference",find_mouseHandler,0);

  Mat aim=roiImg1.clone(); // SUB_IMAGE FROM ORIGINALIMAGE                   
                               // aim variable contains the ROI matrix
                               // next, want to perform template matching in that ROI                                                //                                     and display results on original image 


     if(select_flag1 == 1)
    {

        // imshow("ref",aim);

        Mat res(aim.rows-tpl.rows+1, aim.cols-tpl.cols+1,CV_32FC1);
                    matchTemplate(aim, tpl, res, CV_TM_CCOEFF_NORMED);
        threshold(res, res, …
Run Code Online (Sandbox Code Playgroud)

c c++ opencv image-processing template-matching

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

OpenCV:处理每一帧

我想编写一个使用OpenCV进行视频捕获的跨平台应用程序.在所有示例中,我发现使用抓取功能处理来自摄像机的帧并等待一段时间.我想处理序列中的每一帧.我想定义我自己的回调函数,当新帧准备好被处理时,它将被执行(就像在Windows的directshow中,当您为此目的定义和放入图形时你自己的过滤器).

所以问题是:我怎么能这样做?

c c++ video opencv image-processing

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

我的Opencv应用程序处理速度很慢

我正在构建一个OpenCV应用程序,它从相机中捕获视频,并在删除背景后将其覆盖在另一个视频上.

我无法达到合理的速度,因为它以大约1 fps的速度播放输出,而我的背景移除工作速度为3fps.

有没有办法以正常速度显示背景视频并以3fps覆盖已处理的视频?

我试着评论我的代码,我意识到问题主要在于渲染部分本身.我尝试显示视频和我的网络摄像头,我注意到用openCV显示的实际fps和视频的fps有所下降.

这是示例代码:

 void main()
{
    CvCapture* capture, *Vcap;
    capture = cvCaptureFromCAM(0);
    if(!capture)
    {
        printf("Video Load Error");
    }

    Vcap = cvCaptureFromAVI("bgDemo.mp4");
    //printf("\nEntered BGR");
    if(!Vcap)
    {
        printf("Video Load Error");
    }

    while(1)
    {

        IplImage* src = cvQueryFrame(Vcap);
        if(!src)
        {
            Vcap = cvCaptureFromAVI("bgDemo.mp4");
            continue;
        }
        IplImage* bck1 = cvCreateImage(cvGetSize(src),8,3);
        cvResize(src,bck1,CV_INTER_LINEAR);

        cvShowImage("BCK",bck1);
        cvWaitKey(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

c opencv video-capture image-processing visual-c++

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