[英]Unexpected image modification when using cv2.imread for image loading
我正在嘗試對圖像('some_image.jpeg')進行一些修改。 因此,我將其加載到變量:image_org和image_mod中。 我想在image_mod中進行修改,而image_org我想對以后的比較保持不變。 對image_mod進行一些更改后(基本上在上面繪制一些線)。 我正在創建一個新圖像,該圖像是修改后的圖像和原始圖像之間的區別:image_diff = cv2.subtract(image_mod,image_org)。 我使用diff_num = cv2.sumElems(image_diff)[0]將差值計算為一個數,並將所有3張圖像保存到.png文件中。 我正努力獲得:-與原始文件(image_org)相同的圖像-在其上具有其他行的圖像(image_mod)-僅將行添加到image_mod(image_diff)的圖像-diff_num是一個數字,而不是大數字但是我得到的是:-image_org被更改,並且看起來與image_mod完全相同-diff_num等於0.0
我問我在代碼的前幾行中犯了錯誤,但是我不明白image_org是如何用我的代碼修改的。 請幫助如何解決它,這樣我就可以得到我正在獲得的東西。
import cv2
image_org = cv2.imread('some_image.jpeg',0)
image_mod = image_org
for i in range(10):
cv2.line(image_mod,(100+i*5,0),(0+i*5,150),(255),1,16)
image_diff = cv2.subtract(image_mod, image_org)
diff_num = cv2.sumElems(image_diff)[0]
cv2.imwrite('test_org.png',image_org)
cv2.imwrite('test_mod.png',image_mod)
cv2.imwrite('test_dif.png',image_diff)
print(diff_num)
image_org
和image_mod
只是同一對象的兩個名稱。
您需要復制原始圖像:
image_mod = image_org.copy()
然后image_mod
將是一個不同的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.