🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

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

Q&A

解決済

1回答

1463閲覧

グリッドをずらすやりかた

nonnon615

総合スコア19

Python

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

0グッド

0クリップ

投稿2021/01/05 09:52

編集2021/01/05 11:30

グリッドをずらすやり方を教えていただきたいです
グリッド線を画像に書くやり方はわかったのですが,指令値通りにグリッドを左方向にずらしたいです。
フォルダから,一枚目を初期位置,二枚目以降を一次関数で入れた指令値に従って左方向にずらすというこおとを行いたいです.
自分では下記のようなコードしか書くことができませんでした.
コードを教えていただけると嬉しいです

1.フォルダから画像を取得する
2.グリッド線をひく
3.スタート位置をずらす
4.次の画像を取得する
このループを作成したいです。
コードを教えて頂けるとたいへん勉強になります

import cv2 fname = "tf_1564.jpg" #画像ファイル名 y_step=101 x_step=101 img = cv2.imread(fname) img_y,img_x=img.shape[:2] img[y_step:img_y:y_step, :, :] = 0 img[:, x_step:img_x:x_step, :] = 0 cv2.imwrite('grid2.png',img) #ファイル名'grid.png'でimgを保存

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

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

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

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

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

meg_

2021/01/05 11:13

> 左方向にずらすというこおとを行いたい グリッド線を書くスタート位置を変更すれば良いのではないですか?
TakaiY

2021/01/05 11:13

提示されているコードで、グリッド線そのものを書くことができているとのことですが、「左方向にずらしたい」というのは、どのようなことを想定していますか? grid.pngに書いた線を動かすというイメージですか?
nonnon615

2021/01/05 11:19

ありがとうございます。 フォルダに動画をコマ送りした画像が入っているのですが、変化が分かりにくいためグリッド線を重ねようと考えています。grid.pngに書いた線を動かして重ねることで、変化がわかりやすくなるのではと考えています。
nonnon615

2021/01/05 11:21

そのスタートをずらすやり方が分からなくなってしまいまして… プログラミング初心者で申し訳ないです
nonnon615

2021/01/05 11:23

1.フォルダから画像を取得する 2.グリッド線をひく 3.スタート位置をずらす 4.次の画像を取得する このループを作成したいです。 コードを教えて頂けるとたいへん勉強になります
TakaiY

2021/01/05 11:33

まず確認ですが、グリッド線を動かしたいということですが、通常、書いてある線を移動するのではなく、別の場所に書くことで移動しているように見せるのだということはわかっていますか? とした場合、 img[y_step:img_y:y_step, :, :] = 0 ここで、グリッド線を入れていると思いますけど、動かすにはこの中のどの値を変更すればいいかわかりますか?
meg_

2021/01/05 11:34

> 1.フォルダから画像を取得する > 2.グリッド線をひく > 3.スタート位置をずらす > 4.次の画像を取得する > このループを作成したいです。 > コードを教えて頂けるとたいへん勉強になります ”全部コードを教えてください”では丸投げになってしまいますね。そして2は既に出来ているのですよね?(質問本文にそう書いてありますが) 「フォルダから画像を取得する」については検索すればいくらでもサンプルコードが見つかるはずですので調べて試すことをオススメします。その上で具体的に解決できないエラー等が発生したらまた質問すれば良いかと思います。
TakaiY

2021/01/05 11:34

ちなみに、ファイルを順に処理する方法については、別の質問への回答で例を上げましたので、参考にしていただければ。
nonnon615

2021/01/05 11:38

img[y_step:img_y:y_step, :, :] = 0 >ここで、グリッド線を入れていると思いますけど、動かすにはこの中のどの値を変更すればいいかわかりますか? わからないです… 座標をあらわしていることはわかるのですが… このコードも調べつつやり、なんとか完成させたものなので理解が不十分です。教えて頂きたいです。
nonnon615

2021/01/05 11:48

img[★ x_step:img_x:x_step, :, :] = 0 ★の部分に関数値を入れればいいんですかね??
guest

回答1

0

ベストアンサー

グリッドを左に動かしたいということですね。

python

1img[:, a:b:c, :] = 0

この処理で、対象画像の縦方向のグリッドが書いています。画像のa ピクセルめからcピクセルごとにbピクセルまで値を0にすることでグリッド線の描画を実現しています。

ということは、グリッドを左に動かすためには、aの位置の数値を減らせばいいということになります。

実際の値はこうなっています。

python*

1img[:, x_step:img_x:x_step, :] = 0

img_xには画像のサイズを取得した値が入っていて、x_stepは101なので、101ピクセルから画像の橋まで100 ピクセルごとに線を引いていることになります。aとcに同じ変数を指定していますが、単に等間隔に合引くためにそうなっているだけで、違う値=変数にするのに問題はありません。

動かすには、左側のx_stepの位置の値を変更すればいいのですが、どのような値=どれくらい減らすかについては、条件が示されていないのでわかりませんが、画像ごと=ループごとに、10とか減らせばいいのではないかと思います。

投稿2021/01/05 12:15

編集2021/01/05 12:22
TakaiY

総合スコア13765

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

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

nonnon615

2021/01/05 12:24

ありがとうございます!自分で調べて理解しきれなかったところが解決出来ました!プログラムをかき、またわからなくなったら質問させていただきます!ご丁寧にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問