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

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

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

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

Python

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

Q&A

1回答

2261閲覧

Pythonでスケルトン処理(細線化)ができない

hakubisin3

総合スコア1

OpenCV

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

Python

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

0グッド

0クリップ

投稿2021/06/10 07:33

編集2021/06/10 10:50

取り組み内容

Pythonを使って白黒画像を細線化処理したいのですが、以下のコードを実行しても全く動きません。
(すみません、エラーが出たので追記します。)
実行環境はjupyternotebookです。
imgとして読み込んでいる画像は、色抽出を行った後のマスク画像(白黒)です。

https://code.tiblab.net/python/opencv/img_skeletonize
←こちらのサイトを参考にさせていただきました。

python

1import cv2 2import numpy as np 3from skimage.morphology import skeletonize 4 5img = cv2.imread('desktop/pictures/g3.jpeg') 6 7#細線化(スケルトン化) 8ske = skeletonize(~(img != 0)) 9ske_gray = (ske * 255).astype(np.uint8) 10ske_rgb = cv2.cvtColor(ske_gray, cv2.COLOR_GRAY2RGB) 11 12#結果の表示 13cv2.imwrite('desktop/pictures/2w.jpg',ske_rgb) 14 15

エラー内容

error Traceback (most recent call last) <ipython-input-14-94446e9f62b4> in <module> 8 ske = skeletonize(~(img != 0)) 9 ske_gray = (ske * 255).astype(np.uint8) ---> 10 ske_rgb = cv2.cvtColor(ske_gray, cv2.COLOR_GRAY2RGB) 11 12 #結果の表示 error: OpenCV(4.5.2) c:\users\runneradmin\appdata\local\temp\pip-req-build-_8k9tw8n\opencv\modules\imgproc\src\color.simd_helpers.hpp:92: error: (-2:Unspecified error) in function '__cdecl cv::impl::`anonymous-namespace'::CvtHelper<struct cv::impl::`anonymous namespace'::Set<1,-1,-1>,struct cv::impl::A0x57b9ffbe::Set<3,4,-1>,struct cv::impl::A0x57b9ffbe::Set<0,2,5>,2>::CvtHelper(const class cv::_InputArray &,const class cv::_OutputArray &,int)' > Invalid number of channels in input image: > 'VScn::contains(scn)' > where > 'scn' is 3

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

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

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

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

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

can110

2021/06/10 09:16

提示コードをJupyter上で実行しましたが、現象が再現しません。 フリーズした状態とは、具体的に何がどのようになっているでしょうか? また、result.jpegはできているでしょうか? (そもそもですが、画像表示していないので、最後の2行は不要ですが…)
hakubisin3

2021/06/10 10:21

実行した際に左に*が表示されるだけで、いつまで経っても動作が終了しない状態です。もちろんエラーも出ません。 動かないのでresult.jpegも作成できていません。
hakubisin3

2021/06/10 10:51

先ほど少し変えてから実行すると上記のエラーが発生しました。
guest

回答1

0

スケルトン化はグレースケール画像でないと動かないはずです。scn:3のくだりはそのエラーだと思われます。

なので対策は、
img = cv2.imreadの後に

Python3

1if len(img.shape())==3: 2 img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

みたいな処理を挟んで3chカラー画像 をグレースケールに変換してください。

投稿2023/07/30 17:15

編集2023/07/30 17:16
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問