2017-11-25 194 views
0

我試圖使用圖像編輯器(如MS繪畫或paint.net)繪製具有固定顏色的邊界框(如純紅色與RGB = 255 ,0,0),然後通過查找具有此RGB值(或BGR值爲0,0,255)的像素,然後在python中加載圖像(例如opencv imread),以便我可以創建用於對象檢測目的的標籤。imwrite和/或imread在python opencv後的圖像像素值

但是,保存並加載圖像後,我看不到具有此類RGB或BGR值的任何像素。相反,這些像素是在一個值範圍內,這可能與我指定的範圍很遠。

我還試圖用這樣的事情對於實驗目的:

cv2.rectangle(img_arr, (10, 10), (60, 60), (0, 0, 255), thickness=1) 

這一說法後,我確實看到像素,值(0,0,255)。然而,當我運行cv2.imwrite然後cv2.imread這樣的:

cv2.imwrite(full_path_name, img_arr) 

及更高版本:

img_arr = cv2.imread(full_path_name) 

我在這個新的img_arr注意到,有一個與這些BGR沒有任何的像素值的任何更多。問題是什麼?

回到原始問題的標籤圖像的對象檢測,我不想使用任何工具進行標籤,因爲他們大多數是檢測鼠標的運動,但是,我的任務是檢測文本區域,這需要非常精確的邊界框,以便後期的圖像分割和字符識別不會太困難。因此,我更喜歡靜態方式,以便可以調整邊界框以便準確,甚至可以進行檢查。當他們是最後的時候,我們創建標籤。這個想法甚至會起作用嗎?

非常感謝!

+5

可能你使用的JPEG是有損的。嘗試使用PNG。 –

+0

遵循@MarkSetchell的建議。嘗試使用閾值來製作分割顏色庫,可能是紅色值大約爲255,但不是純粹的255 ... https://opencv-srf.blogspot.com.au/2010/09/object-detection-using -color-seperation.html – crodriguezo

+0

@crodriguezo謝謝你的回答。 –

回答

1

使用JPEG作爲圖像處理任務的中間存儲器時要小心,因爲它是有損格式,並且隨後讀取它們時可能會有所不同。

考慮使用中間存儲的無損PNG格式。或者使用NetPBM PGM(灰度)或PPM(彩色)格式來讀取和寫入特別簡單的格式 - 但請注意,它不能保留元數據(如版權或EXIF數據)。

相關問題