###前提・実現したいこと
ガウシアンフィルタをかけた画像を保存するプログラムをpythonで作りたいです。
テンプレートのプログラムに自分で手を加えて完成させます。
###発生している問題・エラーメッセージ
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cv::ipp_cvtColor, file ......\modules\imgproc\src\color.cpp, line 7456 Traceback (most recent call last): File "exer2.py", line 14, in <module> img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) cv2.error: ......\modules\imgproc\src\color.cpp:7456: error: (-215) scn == 3 | | scn == 4 in function cv::ipp_cvtColor
###該当のソースコード
```ここに言語を入力 # -*- coding: utf-8 -*- # exer2.py # 画像にガウシアンフィルタをかける import numpy as np import sys import cv2 fname_in = sys.argv[1] fname_out = sys.argv[2] #画像をロード, グレースケール化, float型へ変換 img = cv2.imread(fname_in) img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) img = np.float64(img) #出力画像を準備(グレースケール,float型) img_out = np.zeros_like( img ) #フィルタ処理 for y in range(0,img.shape[0]-1) : for x in range(0,img.shape[0]-1) : img_out[y,x] = img[[y-1,x-1]*(1/16)+[y-1,x]*(1/8)+[y-1,x+1]*(1/16)+ [y,x-1]*(1/8)+[y,x]*(1/4)+[y,x+1]*(1/8)+ [y+1,x-1]*(1/16)+[y+1,x]*(1/8)+[y+1,x+1]*(1/16)] #ここを編集 #float型からuint8型に変換し、書き出し cv2.imwrite(fname_out, np.uint8( img_out) ) ```###試したこと for文の中を自分で手を加えました ###補足情報(言語/FW/ツール等のバージョンなど) 先ほどのエラーは解決したのですが、別のエラーが出てきてしまいました。 Traceback (most recent call last): File "exer2.py", line 28, in <module> [y+1,x-1]*(1/16)+[y+1,x]*(1/8)+[y+1,x+1]*(1/16)) TypeError: can't multiply sequence by non-int of type 'float' どこを直したらよいのでしょうか
回答2件
あなたの回答
tips
プレビュー