やりたいこと
open cv で画像を読み込ませて色ずれを補正したい。
具体的に困っていること
Jupiter notebookで動いたコードがgoogle colabで動かなくなりました。コードは以下の通りです。
コード
python
1import numpy as np 2import tifffile 3import matplotlib.pyplot as plt 4%matplotlib inline 5import cv2 6from google.colab import drive 7drive.mount('/content/drive') 8path1 = "/content/drive/My Drive/Colab Notebooks/color-shift" 9filename_li = [path1+"/6-7.tif",path1+"/6-8.tif"] 10img_li = [] 11for i in filename_li: 12 img = cv2.imread(i, 0) # 第二引数を 0 にすることでグレースケールで読み込む 13 img_float = np.float32(img) # cv2.phaseCorrelate で指定されている型に変換 14 img_li.append(img_float) 15dxdy_li = [] 16for img in img_li[1:]: 17 d, etc = cv2.phaseCorrelate(img, img_li[0]) # d にx方向およびy方向のズレが格納されている 18 dx, dy = d 19 dxdy_li.append([dx, dy]) 20rows, cols = img_li[0].shape 21img_after_li = [img_li[0]] 22for dxdy, img in zip(dxdy_li, img_li[1:]): 23 dx, dy = dxdy 24 M = np.float32([[1, 0, dx],[0, 1, dy]]) 25 img = cv2.warpAffine(img, M, (cols,rows)) 26 img_after_li.append(img) 27fig = plt.figure(figsize = (6, 6)) 28plt.imshow(img_li[1]) 29plt.show()
エラーメッセージ
d, etc = cv2.phaseCorrelate(img, img_li[0])
を実行した直後に以下のエラーがでます。
TypeError: Expected Ptrcv::UMat for argument '%s'
自分で調べてみたこと
https://www.rubydoc.info/gems/ropencv/0.0.21/OpenCV%2FCv%2Ephase_correlateでphaseCorrelateは調べてみました。
teratailでも以前似たようなエラーが報告されていて、原因は引数にあるようでした。どのように修正すれば良いのかわからず教えていらだけないでしょうか?
回答1件
あなたの回答
tips
プレビュー