2013-03-08 50 views
1

我從avi視頻中獲取幀,並通過Matlab打開彩色圖像並檢查三個通道R,G,B的像素值。 (情況1)Matlab與Opencv之間的圖像像素值差異

之後,我使用opencv2.4.3獲取幀並通過txt文件保存像素值。然後,我檢查txt文件,我意識到像素值不同於Matlab(我知道opencv打開的彩色圖像是BGR,並且像素的索引位置必須是負1(在Matlab中,像素位置(x,y))。在c ,像素位置(x-1,y-1)))。 (情況2)

最後,我使用opencv通過cvSaveImage函數保存幀,然後通過Matlab打開這個幀。在這種情況下,像素值也不同於以上兩種情況。

爲什麼會發生這種情況?

謝謝你的回答!對不起我的英語!

這是我的代碼 http://www.scribd.com/doc/129263549/Code(你必須下載閱讀)

+2

我猜你試過了JPEG格式,這是默認有損。嘗試一種無損格式;它應該是一樣的。 – 2013-03-08 07:13:19

+0

第三種情況並不重要。但在第一種情況和第二種情況下,我從avi圖像獲取幀並直接處理數據。 在opencv中,我使用cvCaptureFromAVI和cvQueryFrame來獲取幀校驗值 在Matlab中,我使用VideoReader並讀取幀,然後imshow來檢查值。 和兩個值是不同的! – 2013-03-08 07:50:09

+0

請在問題中包含代碼的相關部分,而不是鏈接到需要註冊的某個下載站點。 – Junuxx 2013-03-08 10:43:00

回答

1

Matlab和OpenCV的具有存儲像素值的不同方式。 Matlab使用壓縮在存儲它們之前保存.jpeg圖像。因此,如果您在Matlab和OpenCV中查看類似圖像的像素數據,它看起來會有所不同。

如果在Matlab和OpenCV中加載並保存相同的源圖像,前者將爲,比更小;即使你沒有對圖像進行任何操作。

您無法讓兩個圖像數據看起來都一樣。幸運的是,對圖像所做的任何操作都不會受到內部結構差異的影響。例如,如果您嘗試在Matlab和OpenCV中查找某些像素的索引,則兩者都會給出正確的值,儘管這些值看起來不一樣。