logo
Loading...

D3 作業問題:結果異常 - Cupoy

請問為何我將調整明亮/對比度的程式碼移動到for迴圈前產生的結果會不一樣?import cv2img...

D3 作業問題:結果異常

2019/11/27 下午 07:48
電腦視覺深度學習討論版
馮品儒
觀看數:3
回答數:1
收藏數:0

請問為何我將調整明亮/對比度的程式碼移動到for迴圈前產生的結果會不一樣?

import cv2
img = cv2.imread('lena.png',cv2.IMREAD_COLOR)
cv2.imshow('imput',img)
img_HSV=img
img_bgr=img
img_hsv=cv2.cvtColor(img_bgr,cv2.COLOR_BGR2HSV)


for i in range (3):
    img_bgr[...,i]=cv2.equalizeHist(img_bgr[...,i])

cv2.imshow("case1_equalizeHist_BGR",img_bgr)
img_hsv[...,2]=cv2.equalizeHist(img_hsv[...,2])
img_out=cv2.cvtColor(img_hsv,cv2.COLOR_HSV2BGR)
cv2.imshow("case2_equalizeHist_HSV",img_out)

# 程式區1--------調整明亮/對比
contrast=cv2.convertScaleAbs(img_HSV,alpha=2,beta=0)
lightness=cv2.convertScaleAbs(img_HSV,alpha=1,beta=50)
cv2.imshow("contrast",contrast)
cv2.imshow('lightness',lightness)    
#---------

cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
img = cv2.imread('lena.png',cv2.IMREAD_COLOR)
cv2.imshow('imput',img)
img_HSV=img
img_bgr=img
img_hsv=cv2.cvtColor(img_bgr,cv2.COLOR_BGR2HSV)

# 程式區1--------調整明亮/對比
contrast=cv2.convertScaleAbs(img_HSV,alpha=2,beta=0)
lightness=cv2.convertScaleAbs(img_HSV,alpha=1,beta=50)
cv2.imshow("contrast",contrast)
cv2.imshow('lightness',lightness)    
#---------

for i in range (3):
    img_bgr[...,i]=cv2.equalizeHist(img_bgr[...,i])

cv2.imshow("case1_equalizeHist_BGR",img_bgr)
img_hsv[...,2]=cv2.equalizeHist(img_hsv[...,2])
img_out=cv2.cvtColor(img_hsv,cv2.COLOR_HSV2BGR)
cv2.imshow("case2_equalizeHist_HSV",img_out)


cv2.waitKey(0)
cv2.destroyAllWindows()

回答列表

  • 2019/11/30 下午 00:23
    Chen-Ming Yang
    贊同數:0
    不贊同數:0
    留言數:1

    Hello,


    這邊我猜測是 Python 物件 numpy array mutable 的問題

    img_HSV = img 這邊並不是複製 img 變成 img_HSV 的意思


    有可能是後面的改動都直接動到 img

    建議如果確定是要做複製的動作,可以寫成

    img_HSV = img.copy()