請問我用qt處理1920*1080的視頻流,進行kcf跟蹤演算法處理,然后再顯示在label上,為什么視頻特別卡頓
uj5u.com熱心網友回復:
略過跟蹤演算法處理,視頻會卡嗎?uj5u.com熱心網友回復:
如果不用跟蹤演算法也卡,,,,,
uj5u.com熱心網友回復:
可能用label繪制有瓶頸。uj5u.com熱心網友回復:
額,能推薦一個控制元件嗎?????
uj5u.com熱心網友回復:
試試c++ builder的Image控制元件。uj5u.com熱心網友回復:
好的,謝謝,,,,,,,,
uj5u.com熱心網友回復:
圖形用戶界面(GUI)編程可以學習C++ Builder,架構先進(和C#一樣拖控制元件),入門比較容易。
C++ Builder是真正的可視化的開發工具。C++ Builder可以用滑鼠拖拉控制元件加上設定屬性輕松的“設計”出一個程式的圖形用戶界面,利用可視的組件/控制元件像“搭積木”一樣,以“所見即所得”的方式搭建應用程式的界面,這也是C++ Builder這個名字中Builder的概念。這樣,只需要用C++語言撰寫業務邏輯代碼,類似于DOS下文本界面編程,只要專注于實作業務邏輯功能就可以了,代碼非常簡潔。資料的輸入和表現,都在圖形用戶界面,非常直觀、易用。這就是RAD開發(Rapid Application Development,快速應用程式開發)。
書籍推薦:
《C++Builder 6程式設計教程(第二版)》 (陸衛忠,劉文亮 等編著 /2011-04-01 /科學出版社)(當當網)
《C++Builder 6編程實體精解》(趙明現),PDF,是數字版的,非掃描版的,里面還有一個俄羅斯方塊游戲的完整實作。
《精彩C++Builder 6程式設計》(臺灣 吳逸賢),里面有10幾個簡單小游戲的實作,可以自己看懂以后再重寫,才是自己掌握的。
《C++ Builder 5高級編程實體精解》(劉濱 編著)都是較大的實用的程式。
C++ Builder書籍下載:
https://pan.baidu.com/s/13n9hxwVj9ai1p5L2rQC83Q
uj5u.com熱心網友回復:
一般視頻播放都使用PANEL控制元件uj5u.com熱心網友回復:
qt有這個控制元件嗎?????
uj5u.com熱心網友回復:
應該還是Qt繪制性能的問題,Qt在非Linux上性能是堪憂的...uj5u.com熱心網友回復:
win系統下繪制性能也跟不上嗎?????uj5u.com熱心網友回復:
win系統下繪制性能也跟不上嗎?????
uj5u.com熱心網友回復:
我用Delphi寫了一個簡單的測驗(CB如果用VCL庫的話性能應該是一樣的),從這里下載前10張jpeg圖(https://www.pixelstalk.net/summer-desktop-wallpaper-background-hd/),1920x1080,總計4.01MB,平均每張圖410.6KB,裝入到一個TJPEGImage陣列,然后回圈繪制到TImage.Picture.Bitmap,這包括解碼、拉伸、繪制,性能可以超過90fps,大約相當于播放288Mbps碼率的視頻。
uj5u.com熱心網友回復:
代碼:uses Vcl.Imaging.Jpeg;
const
PicNames: array[0..9] of string = (
'Beautifull-Summer-Desktop-Wallpaper.jpg',
'Cool-Summer-Desktop-Wallpaper-HD.jpg',
'Cool-Summer-Backgrounds.jpg',
'Summer-Background-HD.jpg',
'Cool-Summer-Wallpaper-HD-1.jpg',
'Summer-Beach-Wallpaper-for-desktop.jpg',
'Nice-Summer-Desktop-for-Windows.jpg',
'Summer-Time-Background.jpg',
'Summer-Blue-Sea-Wallpaper-HD.jpg',
'Star-Fish-Summer-Desktop-Wallpaper-HD.jpg');
var
Pics: array[0..9] of TJPEGImage;
Stop: boolean = true;
procedure TForm1.Button1Click(Sender: TObject);
begin
Stop := not Stop;
if not Stop then
Form1.BeginInvoke(
procedure
var
i: integer;
Ticks: uint64;
begin
Image1.Picture.Bitmap.Assign(Pics[0]);
while not stop do
begin
Ticks := GetTickCount64;
for i := 0 to 9 do
begin
Image1.Picture.Bitmap.Assign(Pics[i]);
Application.ProcessMessages;
end;
Ticks := GetTickCount64 - Ticks;
Label1.Caption := Format('%0.3f fps', [10000.0 / Ticks]);
end;
end
);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
for i := 0 to 9 do
begin
Pics[i] := TJPEGImage.Create;
Pics[i].LoadFromFile('d:\temp\wallpaper\' + PicNames[i]);
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
i: integer;
begin
for i := 0 to 9 do
Pics[i].Free;
end;
uj5u.com熱心網友回復:
你的意思我不應該直接QT的控制元件去顯示視頻,而是應該用專門顯示視頻的庫嗎?
uj5u.com熱心網友回復:
我的意思是一般的編譯器+一般的圖形庫+一般的電腦(核顯)是性能足夠的,如果你確定你的繪制代碼沒有問題的話,可以換用FFMPEG庫試試轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/30854.html
標籤:網絡及通訊開發
上一篇:圖片傳輸:請問一下 哪位大佬有圖片傳輸相關的代碼?急求
下一篇:初識面向物件(OOP)的基本概念
