2013-02-01 30 views
2

我意識到這個問題可能會因「沒有足夠的研究」而關閉,但我花了2天的時間搜索它,但沒有找到確鑿的答案。是否可以在另一個窗口中繪製(使用Opencv/ffmpeg

那麼我有一個應用程序,產生一個窗口,而不是用c + +編寫的。這個應用程序可以有一個c接口與dll現在我希望使用OpenCV的力量,所以我開始了一個DLL來擴展。從/傳送圖像數據到應用程序幾乎是不可能的(只能直接&雙重價值傳遞C字符串的 - 使用繪圖硬盤驅動器速度放緩太多實時圖像處理)。

我LO讓opencv直接將圖像數據繪製到窗口上。我可以很容易地獲得窗口句柄,那麼是否可以讓openCV將數據從另一個窗口「取代」 - 或者更好地放到另一個窗口中? 這甚至可以用任何庫(FFMPEG,或其他)?

回答

3

Yes,這是可能的,但它很不理想。你可以use GDI to draw on top of the other windowjust convertIplImage to HBITMAP)。 Another technique是在無邊界layered window中做這樣的繪圖。

一種更簡單的方法是,因爲你擁有這兩個應用程序,編寫使用標準的C數據類型,畢竟通過它們之間的IplImage功能,IplImage只不過是從這些標準類型的內置數據類型。

這裏是你將如何拆卸IplImage到5個標準參數:

  • 尺寸(INT,INT)的圖像(寬度/高度);
  • int)圖像的位深度;
  • 通道的編號(int
  • 和圖像的(無符號字符*)像素;

對對方接收到這些參數後,你可能不知道:how do I assemble a IplImage from scratch請致電cvCreateImageHeader(),然後再撥打cvSetData()

+0

嗯問題是其他應用程序被解釋,並從測試圖像的創建 - 即使從陣列構建 - 是慢地獄;不是你可以每秒做一百次的事情。它實際上比使用內置函數從文件讀取圖像數據的速度要慢很多倍。 – paul23

+0

@ paul23你解決了嗎? – FelikZ

相關問題