亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 np.sqrt 處理后無法可視化圖像

使用 np.sqrt 處理后無法可視化圖像

HUX布斯 2023-09-05 15:09:07
我正在嘗試使用 perwit 內核進行邊緣檢測。我的問題是,當我嘗試將水平漸變與垂直漸變“合并”時,因為之后我在 cv2.imshow() 函數中收到錯誤,看起來圖像有變形。這是我的代碼imgx = filter_image(img,kx,3)imgy = filter_image(img,ky,3)img_edge = np.sqrt(np.power(imgx, 2) + np.power(imgy, 2))img_edge = (img_edge / np.max(img_edge)) * 255print(np.shape(img_edge))print(np.min(img_edge))print(np.max(img_edge))cv2.imshow('imagey',img_edge)這是我的輸出(256, 256)0.0255.0Traceback (most recent call last):  File "<ipython-input-17-c200db56adba>", line 1, in <module>    runfile('C:/Users/giorg/Desktop/Elte/Image Analysis/Lab 1/filter.py', wdir='C:/Users/giorg/Desktop/Elte/Image Analysis/Lab 1')  File "C:\Users\giorg\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile    execfile(filename, namespace)  File "C:\Users\giorg\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile    exec(compile(f.read(), filename, 'exec'), namespace)  File "C:/Users/giorg/Desktop/Elte/Image Analysis/Lab 1/filter.py", line 58, in <module>    cv2.imshow('imagey',img_edge)TypeError: Expected Ptr<cv::UMat> for argument 'mat'我不知道為什么,但我認為問題出在 np.sqrt() 上。如果我對 imgy 和 imgx 進行簡單的求和,它就會起作用。
查看完整描述

1 回答

?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

問題是您傳遞的是一個數組,np.float64而不是 openCV 可以理解的類型,例如np.unit8。具體來說,后面的步驟sqrt映射到正確的范圍,但不調整類型:

img_edge = (img_edge / np.max(img_edge)) * 255

您可以看出,因為最小/最大打印輸出中有小數點,這通常僅在打印浮點類型時才會發生。

再添加一步:

cv2.imshow('imagey', img_edge.astype(np.uint8))

或者單獨進行:

img_edge = img_edge.astype(np.uint8)


查看完整回答
反對 回復 2023-09-05
  • 1 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號