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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

357閲覧

Python 再帰図形 NameErrorの解消方法を知りたい

mia_flower

総合スコア66

OpenCV

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/04/17 00:59

実現したいこと

Pythonで再帰関数を用いた円の描画を行いたいと思っています。
以下のコードを試したところ、NameErrorが出てしまいました。

どのようにしたらよろしいでしょうか。

該当のソースコード

import numpy as np import cv2 img = np.zeros((600,600,3), np.uint8) class Circle: def drawCircle(self, x, y, r, level): if level < 0: return cv2.circle(img, (x, y), r, (255, 255, 255), thickness=1) drawCircle(int(x + r/2), int(y), int(r/2), level - 1) drawCircle(int(x - r/2), int(y), int(r/2), level - 1) c = Circle() c.drawCircle(x = 300, y = 300, r = 100, level = 7) cv2.imshow('Circle', img) cv2.waitKey(0) cv2.imshowAllWindows()

エラーメッセージ

--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-3-8133fcea07a0> in <module> 16 17 c = Circle() ---> 18 c.drawCircle(x = 300, y = 300, r = 100, level = 7) <ipython-input-3-8133fcea07a0> in drawCircle(self, x, y, r, level) 11 12 cv2.circle(img, (x, y), r, (255, 255, 255), thickness=1) ---> 13 drawCircle(int(x + r/2), int(y), int(r/2), level - 1) 14 drawCircle(int(x - r/2), int(y), int(r/2), level - 1) 15 NameError: name 'drawCircle' is not defined

実行環境

macOS
python3

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

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

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

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

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

melian

2022/04/17 01:04

self を付けます。 self.drawCircle(int(x + r/2), int(y), int(r/2), level - 1) self.drawCircle(int(x - r/2), int(y), int(r/2), level - 1)
mia_flower

2022/04/17 01:20

ご回答ありがとうございます。 エラーを解消することができました。 回答欄に記載させて頂きました。 また何かありましたらどうぞよろしくお願いいたします。
guest

回答1

0

自己解決

melian様に教えて頂き、
以下のようにコードを修正したところNameErrorを解消する事ができました。

import numpy as np import cv2 img = np.zeros((600,600,3), np.uint8) class Circle: def drawCircle(self, x, y, r, level): if level < 0: return cv2.circle(img, (x, y), r, (255, 255, 255), thickness=1) self.drawCircle(int(x + r/2), int(y), int(r/2), level - 1)//★ self.drawCircle(int(x - r/2), int(y), int(r/2), level - 1) //★ c = Circle() c.drawCircle(x = 300, y = 300, r = 100, level = 7) cv2.imshow('Circle', img) cv2.waitKey(0) cv2.imshowAllWindows()

教えて下さりありがとうございました。

投稿2022/04/17 01:20

編集2022/04/17 01:21
mia_flower

総合スコア66

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問