一、前言
在和視頻交互過程中,用戶一般需要在顯示視頻的通道上點擊對應(yīng)的區(qū)域,彈出對應(yīng)的操作按鈕,將當(dāng)前點擊的區(qū)域或者繪制的多邊形區(qū)域坐標(biāo)或者坐標(biāo)點集合,發(fā)送出去,通知其他設(shè)備進(jìn)行處理。比如識別到很多人臉,用戶單擊某個人臉后指定對該人臉進(jìn)行詳細(xì)的信息查詢等;再比如圈出某個區(qū)域發(fā)給人工智能處理設(shè)備,對指定區(qū)域進(jìn)行越界處理,一旦某個物體入侵到這個區(qū)域則立即報警。所以就需要在顯示的視頻中識別到用戶點擊處的像素坐標(biāo),將鼠標(biāo)按下處的屏幕坐標(biāo)轉(zhuǎn)換為真實的圖片畫面的像素坐標(biāo),這里有三種情況需要處理,一種是拉伸填充過的畫面,一種是等比例縮放過的畫面,還有一種是在顯示窗體尺寸大于視頻分辨率尺寸的情況下直接顯示原視頻尺寸(顯示窗體是1000x800,真實分辨率是640x480則直接按照640x480顯示)。文章來源:http://www.zghlxwxcb.cn/news/detail-415477.html
為了能夠拿到真實的像素坐標(biāo),親自測試了幾十種辦法,各種坐標(biāo)換算,當(dāng)視頻尺寸小于控件尺寸的情況是最容易計算的,只需要將點擊的坐標(biāo)減去左上角的坐標(biāo)即可,其次就是拉伸填充的畫面相對復(fù)雜一點,需先計算按下坐標(biāo)和控件尺寸對應(yīng)的系數(shù)比,一般需要設(shè)定成double精度類型,然后去乘以真實的視頻尺寸就行;最難的就是等比例縮放過的,可能寬度大于也可能高度大于,或者寬高都大于的情況??傊疄榱思嫒萑N不同的畫面顯示策略情況,盡量采用一種計算方式,比如萬能大法就是采用計算系數(shù)再乘以尺寸的方式。按照這個思路,剛好之前的視頻控件就是按照這個策略設(shè)計的,在顯示視頻的控件中,里面套了一個窗體,該控件就是永遠(yuǎn)拉伸填充的,但是該控件的大小就是按照用戶設(shè)定的大小來調(diào)整的,所以只需要識別鼠標(biāo)按下后對應(yīng)在這個控件的坐標(biāo)即可。打完收工完成。文章來源地址http://www.zghlxwxcb.cn/news/detail-415477.html
<
到了這里,關(guān)于Qt音視頻開發(fā)37-識別鼠標(biāo)按下像素坐標(biāo)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!