كيفية تغيير حجم صورة مع OpenCV2.0 و Python2.6



Answers

مثال مضاعفة حجم الصورة

هناك طريقتان لتغيير حجم الصورة. يمكن تحديد الحجم الجديد:

  1. يدويا.

    height, width = src.shape[:2]

    dst = cv2.resize(src, (2*width, 2*height), interpolation = cv2.INTER_CUBIC)

  2. من خلال عامل التحجيم.

    dst = cv2.resize(src, None, fx = 2, fy = 2, interpolation = cv2.INTER_CUBIC) ، حيث fx هو عامل القياس على طول المحور الأفقي و fy على طول المحور الرأسي.

لتقليص الصورة ، سيبدو بشكل عام أفضل مع الاستكمال الداخلي لـ INTER_AREA ، بينما لتكبير صورة ، سيبدو بشكل عام أفضل مع INTER_CUBIC (بطيء) أو INTER_LINEAR (أسرع ولكن لا يزال يبدو موافق).

مثال لتقليص الصورة لملاءمة أقصى ارتفاع / عرض (الحفاظ على نسبة العرض إلى الارتفاع)

import cv2

img = cv2.imread('YOUR_PATH_TO_IMG')

height, width = img.shape[:2]
max_height = 300
max_width = 300

# only shrink if img is bigger than required
if max_height < height or max_width < width:
    # get scaling factor
    scaling_factor = max_height / float(height)
    if max_width/float(width) < scaling_factor:
        scaling_factor = max_width / float(width)
    # resize image
    img = cv2.resize(img, None, fx=scaling_factor, fy=scaling_factor, interpolation=cv2.INTER_AREA)

cv2.imshow("Shrinked image", img)
key = cv2.waitKey()

باستخدام التعليمات البرمجية الخاصة بك مع cv2

import cv2 as cv

im = cv.imread(path)

height, width = im.shape[:2]

thumbnail = cv.resize(im, (width/10, height/10), interpolation = cv.INTER_AREA)

cv.imshow('exampleshq', thumbnail)
cv.waitKey(0)
cv.destroyAllWindows()
Question

أرغب في استخدام OpenCV2.0 و Python2.6 لعرض الصور التي تم تغيير حجمها. لقد استخدمت واعتمدت المثال في http://opencv.willowgarage.com/documentation/python/cookbook.html ولكن للأسف ، هذا الرمز خاص بـ OpenCV2.1 ويبدو أنه لا يعمل على الإصدار 2.0. هنا الكود:

import os, glob
import cv

ulpath = "exampleshq/"

for infile in glob.glob( os.path.join(ulpath, "*.jpg") ):
    im = cv.LoadImage(infile)
    thumbnail = cv.CreateMat(im.rows/10, im.cols/10, cv.CV_8UC3)
    cv.Resize(im, thumbnail)
    cv.NamedWindow(infile)
    cv.ShowImage(infile, thumbnail)
    cv.WaitKey(0)
    cv.DestroyWindow(name)

بما أنني لا أستطيع استخدامها

cv.LoadImageM

إستعملت

cv.LoadImage

بدلا من ذلك ، والتي لم تكن مشكلة في التطبيقات الأخرى. على الرغم من ذلك cv.iplimage لا يوجد لديه الصفوف السمة ، cols أو الحجم. يمكن لأي شخص أن تعطيني تلميحا ، وكيفية حل هذه المشكلة؟ شكر.




Links