0
0

openCVで画像の一部分を拡大

Last updated at Posted at 2023-09-20

はじめに

python*openCVでの画像の一部を拡大表示するためのプログラムです。

問題

openCVを使って以下のような画像を表示し、横断歩道の四隅をマウス操作でクリックする際に
画面いっぱいまでしか拡大できず、さらに拡大したいと思っていました。
なので、画像の中心は変えずに、倍率を指定して拡大するようなプログラムを作成しました。
image.png

解決方法

import cv2

# 画像読み込み
input_image_path = "input_image.jpg"  # 入力画像のファイルパスを指定してください
output_image_path = "output_image.jpg"  # 出力画像のファイルパスを指定してください
scale_factor = 2  # 拡大倍率(縦も横も元の画像の半分になるようにするため、2を指定)

# 画像を読み込む
image = cv2.imread(input_image_path)

# 画像の高さと幅を取得
height, width = image.shape[:2]

# 中心座標を計算
center_x = width // 2
center_y = height // 2

# 切り抜く領域の左上と右下の座標を計算
left = int(center_x - width / (2 * scale_factor))
right = int(center_x + width / (2 * scale_factor))
top = int(center_y - height / (2 * scale_factor))
bottom = int(center_y + height / (2 * scale_factor))

# 切り抜いた領域を拡大
cropped_and_scaled_image = image[top:bottom, left:right]

# 拡大後の画像を保存
cv2.imwrite(output_image_path, cropped_and_scaled_image)

# 表示(オプション)
cv2.imshow("Cropped and Scaled Image", cropped_and_scaled_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

ちなみに
left = int(center_x - width / (2 * scale_factor))
は intがないと、きりの悪い倍率の時にうまくいかないのでその対策です。

おわりに

chatGPTを使ったら秒でしたが、一回のやり取りではうまくいかなかったので
もし誰かの時短になれればと思っています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0