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

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

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

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

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

Q&A

解決済

2回答

743閲覧

invalid syntaxの原因

bibienvy

総合スコア5

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

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

0グッド

0クリップ

投稿2020/11/05 11:45

編集2020/11/05 11:46

cv2.rectangleで足し算や引き算によって算出した値を引数とすることはできないのでしょうか?
下記コードではcv3.rectangleを5回使っていますが、その4回目のコードでinvalid syntaxが出てしまいます。
おそらく、x = 249-top_left[0]という変数を用いている事が原因だと考えていますが、エラーの発生しない書き方はありますでしょうか?

from google.colab import drive drive.mount('/content/drive') import cv2 import numpy as np from __future__ import print_function from scipy import ndimage import cv2 import glob import os SearchName = ["A","B","C","D"] count = 0 for name in SearchName: fname_img1 = "/content/drive/My Drive/sozai/mate/"+name+"/*.jpg" fname_img2='/content/drive/My Drive/template/ave/kako/temp3.jpg' out_dir = "/content/drive/My Drive/template/result/"+name os.makedirs(out_dir, exist_ok=True) list_f = glob.glob(fname_img1) print(list_f) for gazo in list_f: img = cv2.imread(gazo, 0) temp = cv2.imread(fname_img2, 0) #マッチングテンプレートを実行 match_result = cv2.matchTemplate(img, temp, cv2.TM_CCOEFF_NORMED) #検出結果から検出領域の位置を取得 loc=np.where(match_result ==np.max(match_result)) #検出領域を四角で囲んで保存 w, h = temp.shape[::-1] origine = cv2.imread(gazo) for top_left in zip(*loc[::-1]): bottom_right = (top_left[0] + w, top_left[1] + h) x = 249-top_left[0] cv2.rectangle(origine,(0,0), (249,top_left[1]), (0, 0, 0), -1) cv2.rectangle(origine,(0,top_left[1]), (top_left[0],bottom_right[1]), (0, 0, 0), -1) cv2.rectangle(origine,(bottom_right[0],top_left[1]), (bottom_right[0]+w,bottom_right[1], (0, 0, 0), -1) cv2.rectangle(origine,(x,top_left[1]), (249,bottom_right[1]), (0, 0, 0), -1) cv2.rectangle(origine,(0,bottom_right[1]),(249,249), (0, 0, 0), -1) #保存 #result = cv2.imread(gazo) #height = img.shape[0] #width = img.shape[1] #result = cv2.resize(img , (int(width*1.0), int(height*1.0))) #cv2.rectangle(result,top_left, bottom_right, (255, 0, 0), 10) basename = os.path.basename(gazo) out_dir = "/content/drive/My Drive/template/result/"+name+"/" out_path = os.path.join(out_dir,basename) cv2.imwrite(out_path,origine) count+= 1     以下エラーの内容     File "<ipython-input-5-79e0c9e128d3>", line 40 cv2.rectangle(origine,(x,top_left[1]), (249,bottom_right[1]), (0, 0, 0), -1) ^ SyntaxError: invalid syntax

ちなみに添付した写真のように塗りつぶしたいと考えています。
斜線部分が塗りつぶしたい箇所、空白部分は塗りつぶしたくない箇所になっています。イメージ説明

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

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

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

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

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

guest

回答2

0

ベストアンサー

ちょっと気づきにくいですが39行目あたり
cv2.rectangle(origine,(bottom_right[0],top_left[1]), (bottom_right[0]+w,bottom_right[1], (0, 0, 0), -1)

cv2.rectangle(origine,(bottom_right[0],top_left[1]), (bottom_right[0]+w,bottom_right[1]), (0, 0, 0), -1)
と修正するとSyntax Errorは消えました。

投稿2020/11/05 12:04

can110

総合スコア38341

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

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

bibienvy

2020/11/05 13:00

ありがとうございました!
guest

0

cv2.rectangle(origine,(bottom_right[0],top_left[1]), (bottom_right[0]+w,bottom_right[1], (0, 0, 0), -1)

上記コードは(が4つですが)が3つで数が合いません。そのため次の行でSyntaxErrorが出ているのです。行末に)を追加すれば良いかと思います。

投稿2020/11/05 11:52

meg_

総合スコア10760

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

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

bibienvy

2020/11/05 12:59

回答ありがとうございます!気づきませんでした・・・。 場所を指摘していただいたcanさんを今回はベストアンサーにさせていただきます!すみません!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問