質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1116閲覧

ネットで見つけた人物切り抜きの方法を実際にやってみているがうまく動かない

saiki1127

総合スコア2

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/09/01 04:02

編集2021/09/02 02:08

現在,Deep Learningで背景削除をしてみる
https://tech.fusic.co.jp/posts/2020-01-20-remove-background/
というページのコードを実際に動かそうとしていますが、うまくいきません。

具体的には、下記のコードの" back = back.astype(float)/255"という部分が
AttributeError: 'NoneType' object has no attribute 'astype'というエラーを返します。

それと、途中までのコードで画像をtrimapという前景が白、後景が黒、どちらかわからない部分が灰色という風に変換する部分があるのですが、そのtrimapの画像が黒と灰色しか出ません。その結果として最終的に作られた画像が、背景が消えてはいるのですが、残したい部分も薄くなります。←上記のattributeErrorがでるまではこのような形で出力されていました。

#ライブラリインポート import numpy as np import cv2 import matplotlib.pyplot as plt import torch import torchvision from torchvision import transforms #画像読み込み img = cv2.imread("upperbody1.jpg") img = img[...,::-1] h,w,_ = img.shape img = cv2.resize(img,(320,320)) device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") model = torchvision.models.segmentation.deeplabv3_resnet101(pretrained=True) model = model.to(device) model.eval() preprocess = transforms.Compose([ transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), ]) input_tensor = preprocess(img) input_batch = input_tensor.unsqueeze(0).to(device) with torch.no_grad(): output = model(input_batch)['out'][0] output = output.argmax(0) mask = output.byte().cpu().numpy() mask = cv2.resize(mask,(w,h)) img = cv2.resize(img,(w,h)) cv2.imwrite('./examples/trimaps/picture.jpg',mask) henkan = cv2.imread("./examples/trimaps/picture.jpg") black = [0, 0, 0] white = [255, 255, 255] henkan[np.where((henkan != black).all(axis=2))] = white cv2.imwrite("./examples/trimaps/henkan.jpg",henkan) plt.figure(figsize=(20,20)) plt.subplot(1,2,1) plt.imshow(img) plt.subplot(1,2,2) plt.imshow(henkan) plt.show() img = cv2.imread("upperbody1.jpg") img = img[...,::-1] back = cv2.imread("./example/trimaps/picture.jpg") h,w,_ = img.shape bg = np.full_like(img,255) img = img.astype(float) bg = bg.astype(float) back = back.astype(float)/255 img = cv2.multiply(img, back) bg = cv2.multiply(bg, 1.0 - back) output = cv2.add(img, bg) cv2.imwrite("./example/extraction.jpg",output) h = cv2.imread("./example/extraction.jpg") cv2.imshow("output",h) cv2.waitKey(0) cv2.destroyAllWindows()

書き忘れていましたが環境は
windows10
python3.9.6 64bit版
opencv
です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/09/01 21:24 編集

Pythonのコードが普通の文章と同じ様式で書かれているためコードが崩れてしまっています。まず、Pythonのコードを<CODE>で出てくる記号の内側に書いてください。 > AttributeError: 'NoneType' object has no attribute 'astype' の部分で一番ある原因は、何もないもの(None)に対して.astypeしている、ということです。つまり、その前の部分の > cv2.imread("./example/trimaps/picture.jpg") で画像をうまく読み込めていない可能性が高いです。確認するには、print(back)としてください。たぶんNoneになる(読み込めていない)はずです。仮にうまく読み込めていればNumpyのarray[0,0,0...]みたいなものが表示されます。 ここで一番疑われる原因は、パスが相対参照「./」から始まっているため、プロンプトのカレントディレクトリ(例えばc:\)から見て"./example/trimaps/picture.jpg"、例えば「c:\example/trimaps/picture.jpg」が存在しないからNoneになった(読み込めなかった)というものです。対策は、プロンプトのカレントディレクトリを動かすか、プログラム側でプログラム的に内部でカレントディレクトリを動かしてしまう、というものです。 色がーの部分に関しては、ここの掲示板を見る人が同じネットワークを作る必要はありませんので、代わりにそれぞれの変数に入る画像のサンプルをアップロードしていただければ手の打ちようがあるかと思います ここまでの内容を確認したあともう一度コメントお願いします。
saiki1127

2021/09/02 02:25

修正依頼見させていただきました。パスの確認をしたところ下の方のcv2.imreadのパスが上の方では、 "./examples/trimaps/picture.jpg"となっているのに対して、再び下の方で読み込む部分で"./example/trimaps/picture.jpg"とexampleが間違っていることに気づきました。 修正した結果エラーが消えて、正しく動きました。ご指摘、ありがとうございます。
退会済みユーザー

退会済みユーザー

2021/09/02 21:31

解決できたようで何よりです。ほかの人が同じように困らないよに、どうしたらうまくいったかこのコメント欄に書いた内容をを書いて回答のクローズをお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問