在 mac el capitan 上将公式降级到以前的版本 (opencv3/3.0.0)

Brew downgrade formula to previous version (opencv3/3.0.0) on mac el capitan

我在 mac 并使用 brew 安装 opencv3。我有 opencv3/3.0.0 。今天更新了3.1.0_1版本。

但是,此更新破坏了一切,当我尝试使用 VideoCapture 读取帧并使用 waitKey 函数时,它因以下原因而中断:

2016-02-26 23:25:16.846 tracking[99869:1026824] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CaptureDelegate doFireTimer:]: unrecognized selector sent to instance 0x7fab5a601240'

所以,现在我正在尝试切换回以下版本,但我不确定如何。我使用了以下内容:

brew search opencv

但是,这不会给我 opencv3/3.0.0

这样的版本

在地窖里,我只有

Versions available: 3.1.0, 3.1.0_1

所以,我不能使用

brew switch "version"

谁能建议我切换回以前版本的方法?

这是 3.0.0 的配方

https://github.com/Homebrew/homebrew-science/blob/f4369af77876e0597e1f23bf2dd0f1ee17efd680/opencv3.rb

Homebrew 似乎在此处存储它的本地食谱:

/usr/local/Library/Taps/homebrew/homebrew-science/opencv3.rb

所以你可以试试:
- brew uninstall opencv3
- 用那个版本替换本地文件。
- brew install opencv3
(这是未经测试的,我肯定会先备份)

更好的解决方案是从源代码编译最新的 openCV - 已添加补丁来解决该问题。 The thread relating to this bug 对程序有一些很好的指示。从源代码编译 openCV 非常方便,无论是在您需要特定功能时,还是因为像这样的恼人错误经常出现。包管理器(和 opencv.org 自己的二进制文件)很少更新补丁。

更新
向后 向前移动的更好方法..

回到 3.0
来自@bfontaine 的笔记...

brew install https://github.com/Homebrew/homebrew-science/blob/f4369af77876e0597e1f23bf2dd0f1‌​ee17efd680/opencv3.rb

继续进行 3.1.fixed
mateuszmikusz 和 LukasKalinski 在 that thread

上的最新建议
brew remove opencv3  

(有效地清理了所有东西并且 Xcode 立即注意到了)

brew cleanup
brew install --HEAD opencv3

Keep in mind though that this is installing the newest code base which is not stable and may introduce other bugs.