Koordinatı belirli dört noktanın içindeki tüm koordinatları çekmek

Merhaba,
Python üzerinde OpenCV kütüphanesi kullanarak her pikselin koordinatına ve renk değerine ulaşabiliyoruz. Görüntüde kare oluşturacak şekilde, karenin köşe koordinatları var elimde. Fakat ben o karenin içindeki bütün piksellerin koordinatlarını çekmek istiyorum. Nasıl bir yol izleyebilirim? Yazı biraz karışık olmuş olabilir, hayırlı günler dilerim.

Merhaba.

import pyautogui
import numpy as np
import cv2 as cv

# Pyautogui yardımıyla ekran görüntüsü alalım.
pyautogui.screenshot("screenshot.png")

# Ekran görüntüsünü açalım.
image = cv.imread("screenshot.png")

# Karenin/Dikdörtgenin konumunu ve boyutunu belirtelim.
x, y = 500, 500
width, height = 200, 200

# Numpy yardımıyla, RGB değerlerini elde edelim.
kare = image[x: x + width, y: y + height]

print(kare)

Yukarıdaki kodda karenin her bir pikselinin RGB değerini (sırası farklı olabilir) elde edebiliyoruz.
image[row, column], buradaki row ve column değerleri zaten o piksele ait x ve y değeri oluyor.
Yani koordinatlar zaten elimizde oluyor.

2 Beğeni

roi = img[y1:y2, x1:x2]
Görüntünün tanımlı olduğu değişkeni img olarak tanımlarsak yukarıdaki kod ile resimde istediğin kısmı kırpabilirsin. Elindeki karenin koordinatları ile görüntüden istediğin kısmı kırparsan içerisindeki tüm piksellere ulaşmış olursun.
r,c = roi.shape
Satir ve sütun yüksekliğine shape ile ulaşabilirsin.
roi[0,0]
Karendeki ilk pikselin renk değerini dönderecek.
roi[r,c]
Karendeki son pikselin renk değerini dönderecek.
r ve c değerleri içerisinde dönerek karendeki tüm renk değerlerine ulaşabilirsin.

1 Beğeni

Kare axis-aligned ise kolay: x degeri x1 ile x2 ve y degeri y1 ile y2 arasinda olan butun pikseller. Yani itertools.product(range(x1, x2), range(y1, y2)).

Degilse isler zorlasiyor. Yukaridaki islemi karenin AABB’una yapip her cikan koordinat icin icerme testi yapabilirsin.

(Daha yazacaktim, fakat “cevaba en fazla soru kadar deger/vakit ver” prensibini edinmeye calisiyorum)