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

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

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

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1771閲覧

Python threshold() 二値化

lovely

総合スコア28

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/10/24 05:14

編集2021/10/24 05:35

二値化をしたいため、下記のようなコードを書きました。ですが#1のところにエラーが出てしまいました。
ここには写真の情報すべてが入っているらしいので、これを数字の配列のみにしたいのですが、どうすればよいのかわかりません。

Python

1import cv2 2import matplotlib.pyplot as plp 3 4#画像を読み込んでリサイズ 5img=cv2.imread("itzy.jpg") 6#色空間を二値化 7img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 8img=cv2.GaussianBlur(img,(7,7),0) 9img=cv2.threshold(img,100,200,cv2.THRESH_BINARY_INV) #1 10plp.imshow(img,cmap="gray")

また、あるサイトには#1の最後に[1]を付ければよいと書いてあったのですがこれはどういう意味ですか?

エラー文
VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray
x = np.array(x, subok=True, copy=copy)
Traceback (most recent call last):
File "c:\Practice\trying.py", line 10, in <module>
plp.imshow(img,cmap="gray")
File "C:\Users\c7not\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\pyplot.py", line
2903, in imshow
_ret = gca().imshow(
File "C:\Users\c7not\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib_init
.py", line 1361, in inner
return func(ax, *map(sanitize_sequence, args), **kwargs)
File "C:\Users\c7not\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\axes_axes.py", line 5609, in imshow
im.set_data(X)
File "C:\Users\c7not\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\image.py", line 700, in set_data
raise TypeError("Image data of dtype {} cannot be converted to "
TypeError: Image data of dtype object cannot be converted to float

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

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

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

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

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

can110

2021/10/24 05:26

エラー全文(Trackback)を記載ください。
lovely

2021/10/24 05:35

記載いたしました。
guest

回答1

0

ベストアンサー

Python, OpenCV, NumPyで画像を二値化(しきい値処理)

返り値は使用されたしきい値と処理された配列(出力画像)のタプル。

なのでimg=cv2.threshold(img,100,200,cv2.THRESH_BINARY_INV)[1]なりして処理された配列を得ると動作します。

投稿2021/10/24 05:52

can110

総合スコア38341

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

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

jbpb0

2021/10/24 22:09

質問者さん can110さんが紹介したWebページの例のように、 th,img=cv2.threshold(img,100,200,cv2.THRESH_BINARY_INV) とすることもできます > #1の最後に[1]を付ければよいと書いてあったのですがこれはどういう意味ですか? 上記のコードの場合、「cv2.threshold()」の結果の[0]が「th」、[1]が「img」なので、そこから「img」だけ取り出す、という意味です
lovely

2021/11/01 07:25

ご回答ありがとうございます。そちらのthとは何を指しているのですか??
jbpb0

2021/11/01 07:44

> thとは何 can110さんの回答に書かれてます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問