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

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

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

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

Python

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

Q&A

解決済

2回答

1169閲覧

領域内に格子点の生成

gonzoshira

総合スコア21

OpenCV

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

Python

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

0グッド

0クリップ

投稿2019/01/22 04:28

編集2019/01/26 05:44

python2.7,openCV4.0.0を使っているものです.
ある画像に輪郭抽出を行ったものがこちらになります.
この画像の白い領域のみに格子点を打つプログラムを必要としています.
どなたかわかるかたよろしくお願いします.

python

1#!/usr/bin/env python 2#coding: utf-8 3 4import numpy as np 5 6import cv2, os, csv, math, re 7from operator import itemgetter 8from pylab import show, triplot 9from matplotlib import pyplot as plt 10import triangle as tr 11from matplotlib.patches import Polygon 12 13 14# 画像を読み込む。 15img = cv2.imread('map.pgm', cv2.IMREAD_GRAYSCALE) 16 17#中央値フィルタ 18median = cv2.medianBlur(img, 9) 19 20#ガルシアンフィルタ 21img_preprocessed = cv2.GaussianBlur(median, (5, 5), 0) 22img_preprocessed = cv2.GaussianBlur(img_preprocessed, (5, 5), 50) 23img_preprocessed = cv2.GaussianBlur(img_preprocessed, (5, 5), 50) 24img_preprocessed = cv2.GaussianBlur(img_preprocessed, (5, 5), 50) 25img_preprocessed = cv2.GaussianBlur(img_preprocessed, (5, 5), 50) 26#img_preprocessed = cv2.GaussianBlur(img_preprocessed, (5, 5), 50) 27#img_preprocessed = cv2.GaussianBlur(img_preprocessed, (5, 5), 50) 28#img_preprocessed = cv2.GaussianBlur(img_preprocessed, (5, 5), 50) 29#img_preprocessed = cv2.GaussianBlur(img_preprocessed, (5, 5), 50) 30#img_preprocessed = cv2.GaussianBlur(img_preprocessed, (5, 5), 50) 31#img_preprocessed = cv2.GaussianBlur(img_preprocessed, (5, 5), 50) 32 33# 2値化 34thresh, binary = cv2.threshold(img_preprocessed, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) 35 36# closing でノイズを消す 37kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) 38binary = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel, iterations=2) 39 40#輪郭抽出 41contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) 42 43def draw_contours(ax, img, contours): 44 ax.imshow(img_preprocessed, cmap='gray') 45 ax.axis('on') 46 for i, cnt in enumerate(contours): 47 cnt = np.squeeze(cnt, axis=1) 48 # 輪郭の点同士を結ぶ線を描画する。 49 ax.add_patch(Polygon(cnt, color='b', fill=None, lw=2)) 50 # 輪郭の点を描画する。 51 ax.plot(cnt[:, 0], cnt[:, 1], 'ro', mew=0, ms=4) 52 # 輪郭の番号を描画する。 53 ax.text(cnt[0][0], cnt[0][1], i, color='orange', size='20') 54 55fig, ax = plt.subplots(figsize=(10, 10)) 56draw_contours(ax, img, contours) 57plt.show()

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

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

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

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

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

guest

回答2

0

ベストアンサー

イメージ説明

こういうことですか?

追記1

イメージ説明

こういうことですか?

追記2

Python

1import numpy as np 2import argparse 3import cv2 4 5 6def main(): 7 parser = argparse.ArgumentParser() 8 parser.add_argument("--img", "-i", default="", help="") 9 parser.add_argument("--span", "-s", type=int, default=10, help="") 10 parser.add_argument("--prefix", "-p", default="gen_", help="") 11 args = parser.parse_args() 12 13 img = cv2.imread(args.img, 1) 14 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 15 h, w = gray.shape 16 for i in range(0, h, args.span): 17 for j in range(0, w, args.span): 18 cropped_img = gray[i:i+args.span, j:j+args.span] 19 if np.sum(cropped_img) == 255*args.span**2: 20 cv2.circle(img, (j+args.span//2, i+args.span//2), 21 1, (0, 255, 0), thickness=1, lineType=cv2.LINE_AA) 22 cv2.imwrite(args.prefix+"img.png", img) 23 24 25if __name__ == "__main__": 26 main()

投稿2019/01/22 06:21

編集2019/01/22 06:54
_Victorique__

総合スコア1392

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

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

gonzoshira

2019/01/22 06:25

はい!! これがしたかったです. 後,輪郭との距離を一定距離あけたいです.(ロボットの大きさを考慮して)
gonzoshira

2019/01/22 06:39

はい!! 完璧です... できればソースを頂きたいのですが... お願いできませんか?
gonzoshira

2019/01/22 09:24

よろしければ私が実装したソースに実装させていただけないでしょうか... すいません...
_Victorique__

2019/01/22 09:29 編集

流石にあなたのコードをリファクタリングするのは辛いですね。 それにどういう流れでどうしたいのかさっぱり分かりませんので実装と言われましても。。 まずはあなたのコードをリファクタリングしてください。
gonzoshira

2019/01/22 10:05

頂いたソースをどうしたら出力されるのでしょうか
_Victorique__

2019/01/22 10:13

実行の仕方でしょうか?test.pyで保存して python test.py -i /path/to/your/image でどうぞ
guest

0

打ちたい場所の色を拾って白だったら打点でいかがですか?

投稿2019/01/22 06:07

iwanote

総合スコア295

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

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

gonzoshira

2019/01/22 06:15

始めは,領域内に適当にプロットし,背景の色が黒の点を排除していく方法でかんがえていました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問