2011-09-19 94 views
0

請考慮(我使用Mathematica 8)執行以下操作:過濾和操縱CurrentImage []

mask = DensityPlot[-Exp[-(x^2 + y^2)/5], {x, -4, 4}, {y, -3, 4}, 
     Axes -> None, Frame -> None, Method -> {"ShrinkWrap" -> True}, 
     ColorFunction -> GrayLevel, ImageSize -> 512]; 

     Show[ImageFilter[Mean[Flatten[#]] &, CurrentImage[], 20, 
      Masking -> mask], ImageSize -> 512] 

使用上Can we generate "foveated Image" in Mathematica Sjoerd溶液。

我希望這是動態的。現在它只拍攝一張照片。 在我的演示過程中,如何在不「崩潰」電腦的情況下實現「實時」工作的最佳方式是什麼?我可以調整刷新率嗎?操作面罩?停止「視頻模式」拍攝照片?

+0

當我在V 8.01中運行代碼時出現錯誤「Show :: gtype:ImageFilter不是一種圖形類型」CurrentImage :: checkcam:Mathematica無法連接到相機。檢查相機是否已正確連接並且當前沒有被其他應用程序使用 – Nasser

+1

@Nasser檢查相機是否已正確連接並且該相機目前未被其他應用程序使用:) –

+0

@ 500您還應在您的問題是你正在使用Mma 8或者用[tag:mathematica-8]標記它。我無法嘗試你的大部分問題,因爲它們不能在v7上運行(我使用)... – abcd

回答

2

只需將您的Show包裝在Dynamic中,它就會盡可能快地進行更新。結合Refresh設置刷新率。或使用timed background task

雖然手工模糊濾鏡耗時過長,但結果有點慢。一個更好的選擇是這樣的:

mask = DensityPlot[-Exp[-(x^2 + y^2)/5], {x, -4, 4}, {y, -3, 3}, 
    Axes -> None, Frame -> None, Method -> {"ShrinkWrap" -> True}, 
    ColorFunction -> GrayLevel, ImageSize -> {320, 240}]; 

ImageCompose[im = CurrentImage[], SetAlphaChannel[Blur[im, 20], mask]]//Dynamic 

它實時更新。請注意,我已經更改了蒙版的圖像尺寸以適合筆記本電腦攝像頭的尺寸。 x和y的範圍比例應該與相機的寬高比相同。

enter image description here

記住,如前面提到的,這只是假貨視力模糊。這遠非現實。

+0

謝謝你Sjoerd。我知道這是對視覺模糊的粗略估計。我想你會對此感興趣:http://www.jeremyfreeman.net/public/downloads/Freeman-Simoncelli-2011-Metamers.pdf – 500

+0

@ 500謝謝,看起來很有趣。我正在轉移視覺心理物理學,但... –

+0

我真的很好奇你在做什麼。我瀏覽了您的出版物,並發現與我的顧問(http://www.psych.nyu.edu/maloney/)有相似之處。你現在正朝着什麼方向前進? – 500

1

從未與Mma一起使用過相機,但似乎通過使用ImageCapture[],您可以指定幀速率和其他參數。

然後在「循環」中使用CurrentImage []來處理任何你想要的。您甚至可以從ImageCapture []界面停止設備。