کشف تصویر کوچک درون تصویر بزرگ با استفاده از پایتون و OpenCV

در این پست، ما یکی از کاربردهای جالب پردازش تصویر را با استفاده از زبان برنامه‌نویسی پایتون و کتابخانه OpenCV بررسی می‌کنیم. موضوع این پست کشف یک تصویر کوچک درون یک تصویر بزرگ است. این کاربرد می‌تواند برای شناسایی الگوها، تطابق تصاویر و یا حتی تشخیص چهره‌ها استفاده شود.

ابتدا باید اطمینان حاصل کنیم که کتابخانه OpenCV در محیط پایتون نصب شده باشد. اگر هنوز نصب نکرده‌اید، می‌توانید آن را با استفاده از دستورات زیر نصب کنید:

pip install opencv-python

pip install opencv-python-headless

حالا که OpenCV نصب شده است، می‌توانیم به کد پایتون برای کشف تصویر درون تصویر بپردازیم. کد زیر این کار را انجام می‌دهد:

import cv2

def find_image_in_larger_image(small_image_path, large_image_path):

# تصاویر را بخوانید

small_image = cv2.imread(small_image_path, cv2.IMREAD_GRAYSCALE)

large_image = cv2.imread(large_image_path, cv2.IMREAD_GRAYSCALE)

# بررسی موفقیت بارگذاری تصاویر

if small_image is None or large_image is None:

print("خطا: تصاویر قابل بارگذاری نیستند.")

return None

# ابعاد هر دو تصویر را دریافت کنید

small_height, small_width = small_image.shape

large_height, large_width = large_image.shape

# الگو (تصویر کوچک) را در داخل تصویر بزرگ پیدا کنید

result = cv2.matchTemplate(large_image, small_image, cv2.TM_CCOEFF_NORMED)

# آستانه‌ای تعیین کنید تا یک تطابق را در نظر بگیرید

threshold = 0.8

# مکان‌هایی را پیدا کنید که ضریب همبستگی بیشتر از آستانه باشد

locations = cv2.findNonZero((result >= threshold).astype(int))

# اگر هیچ تطابقی پیدا نشد

if locations is None:

print("هیچ تطابقی یافت نشد.")

return None

# مستطیل‌ها را دور محل‌های تطابقی رسم کنید

for loc in locations:

top_left = loc[0]

bottom_right = (top_left[0] + small_width, top_left[1] + small_height)

cv2.rectangle(large_image, top_left, bottom_right, (0, 255, 0), 2)

# نتیجه را نمایش دهید (اختیاری)

cv2.imshow("نتیجه", large_image)

cv2.waitKey(0)

cv2.destroyAllWindows()

return locations

# مثال استفاده

small_image_path = "تصویر_کوچک.jpg"

large_image_path = "تصویر_بزرگ.jpg"

find_image_in_larger_image(small_image_path, large_image_path)

 

برای مشاهده کد در گیت هاب کلیک کنید