小编kha*_*eeb的帖子

OpenCV - 使用SURF描述符和BruteForceMatcher进行对象匹配

我有一个关于与OpenCV匹配的对象的问题.我正在使用opencv 2.3中实现的SURF算法来首先检测每个图像上的特征,然后提取这些特征的描述符.使用Brute Force Matcher进行匹配的问题,我不知道如何判断两个图像是否匹配,就像我使用两个不同的图像一样,两个图像中的描述符之间存在线条!

我的代码的这些输出,无论是两个图像 - 我与它们进行比较 - 都相似或不同,结果图像表明两个图像是匹配的.

问题是:我如何区分这两个图像?

真实匹配:

http://store1.up-00.com/Jun11/hxM00286.jpg

假匹配!! :

http://store1.up-00.com/Jun11/D5H00286.jpg

我的代码:

Mat image1, outImg1, image2, outImg2;

// vector of keypoints
vector<KeyPoint> keypoints1, keypoints2;

// Read input images
image1 = imread("C://Google-Logo.jpg",0);
image2 = imread("C://Alex_Eng.jpg",0);

SurfFeatureDetector surf(2500);
surf.detect(image1, keypoints1);
surf.detect(image2, keypoints2);
drawKeypoints(image1, keypoints1, outImg1, Scalar(255,255,255), DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
drawKeypoints(image2, keypoints2, outImg2, Scalar(255,255,255), DrawMatchesFlags::DRAW_RICH_KEYPOINTS);

namedWindow("SURF detector img1");
imshow("SURF detector img1", outImg1);

namedWindow("SURF detector img2");
imshow("SURF detector img2", outImg2);

SurfDescriptorExtractor surfDesc;
Mat descriptors1, descriptors2;
surfDesc.compute(image1, keypoints1, descriptors1);
surfDesc.compute(image2, keypoints2, descriptors2);

BruteForceMatcher<L2<float>> matcher;
vector<DMatch> …
Run Code Online (Sandbox Code Playgroud)

c++ opencv object-detection computer-vision surf

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

如何在同一HTML5播放器中放大视频并切换视频流?

我的视频将分为4个视频。

在此处输入图片说明

首先,播放器将以较低的分辨率播放原始视频,然后用户可以放大视频以查看更多详细信息,我需要播放器以4分辨率较高的视频流之一播放(基于用户放大的位置) 。

如何使用VideoJS或任何其他视频播放器实现此目的?

html5 video-streaming video.js

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

Youtube API - SeekTo有时不起作用

我试图让用户使用以下功能在YouTube视频中寻找特定时间:

    function setCurrentTime(slideNum) {
    var object = <?php echo json_encode($matches); ?>;
    if ('seekTo' in player.trackingVideoId){
        var seekTime = object[0][slideNum];
        player.trackingVideoId.seekTo(HHmmssToSeconds(seekTime));
    }
}
Run Code Online (Sandbox Code Playgroud)

哪里

var object = [["00:00:00","00:01:07"],["00","00"],["00","01"],["00","07"]];

player.trackingVideoId = new YT.Player('trackingVideoId');

<iframe id="trackingVideoId" type="text/html" width="340" height="210" src="https://www.youtube.com/embed/D77wXvwChtU?enablejsapi=1" frameborder="0"></iframe>

<input type="button" value="Seek" onclick="setCurrentTime(1)"> 
Run Code Online (Sandbox Code Playgroud)

它有时工作正常,有时它不起作用,并出现以下错误(在firefox consol上):

TypeError: invalid 'in' operand player.trackingVideoId

if ('seekTo' in player.trackingVideoId){
Run Code Online (Sandbox Code Playgroud)

并在评论条件时 if ('seekTo' in player.trackingVideoId){

出现以下错误

Uncaught TypeError: Cannot read property 'seekTo' of undefined 
Run Code Online (Sandbox Code Playgroud)

更新:

我在onYouTubeIframeAPIReady()中初始化了它 - 就像你的链接一样.但是,我把setCurrentTime(slideNum)放在了YouYouTubeIframeAPIReady()函数之外,我试着将它放在里面,还有另一个错误,即setCurrentTime没有定义.

我试图在用户点击按钮时寻找特定时间

<input type="button" value="Seek" onclick="setCurrentTime(0)">
Run Code Online (Sandbox Code Playgroud)

你可以试试@ http://ilstream.com/video_slides/video_slides.php

javascript youtube youtube-api

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

视频 使用不同的比特率对视频的不同部分进行编码

如果我有一个类似的视频:视频讲座

在此输入图像描述

我需要以高比特率对幻灯片进行编码(因为它对用户来说最重要),并以低比特率对视图的其余部分进行编码。

  1. 选择以高比特率编码的部分。 在此输入图像描述

  2. 使用不同的比特率分别对不同部分进行编码。

在此输入图像描述 在此输入图像描述

  1. 将不同的部分合并到一个视频中。

目的是减少在线发布的总文件大小,从而减少所需的带宽。我需要使用 ffmpeg 来做到这一点。我将使用这种方法对用静态摄像机录制的视频讲座(如上图所示的 180 度视图)进行编码,因为我知道哪些区域(黑板和幻灯片)比其他区域对学生更有用。

video encoding ffmpeg

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