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

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

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

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

Q&A

解決済

2回答

6683閲覧

opencvでimageの切り抜きをしてからresizeしたい

Nao1117

総合スコア17

Python 3.x

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

0グッド

0クリップ

投稿2018/09/20 23:48

webカメラのキャプチャ画像を扱いたいのですが、キャプチャ画像にはもともと上下に黒い枠が出ており、その部分を消したのちに画像をリサイズすることをしたいと思っています。

ret, cap = cap.read()
cap = cv2.resize(cap[0:640,60:420],(800,600)) %元の画像の縦60から420のみ使いたい
cv2.imwrite(path, cap)

で保存までしているのですが黒い枠が消えません。アドバイスお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

画像の形式

OpenCV の Python ラッパーでは、画像は以下のように扱われます。

  • カラー画像: (Height, Widht, Channels) の numpy 配列
  • グレースケール画像: (Height, Widht) の numpy 配列

なので、縦60から420のみ使いたいのであれば、以下のようにするべきではないでしょうか

cap[60:420]

サンプルコード

import cv2 import matplotlib.pyplot as plt img = cv2.imread('harinezumi.jpg') plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) plt.show() cropped = img[200:300] plt.imshow(cv2.cvtColor(cropped, cv2.COLOR_BGR2RGB)) plt.show() print(cropped.shape) # (20, 100, 3)

イメージ説明

イメージ説明

投稿2018/09/21 03:13

tiitoi

総合スコア21956

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

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

Nao1117

2018/09/21 16:14

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

0

cap変数を上書きしてしまっている以外は、各段おかしなことをやっている感じは無いように見受けられます。

Python

1ret, frame = cap.read() 2crop = frame[0:640,60:420] 3cv2.imwrite("cropped.png", crop) 4rsz = cv2.resize(crop,(800,600)) 5cv2.imwrite(path, rsz)

上記のように、一段階ずつファイルに出力してみて、どこで意図から外れているのかを確認するのがよいように思います。

投稿2018/09/21 02:41

kazto

総合スコア7196

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問