簡體   English   中英

使用cv2.imread加載圖像時發生意外的圖像修改

[英]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_orgimage_mod只是同一對象的兩個名稱。

您需要復制原始圖像:

image_mod = image_org.copy()

然后image_mod將是一個不同的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM