Sie erstellen dst
Matte mit der gleichen Größe wie src
nicht klar war.
Mat src = imread(...);
Mat dst;
resize(src, dst, Size(), 2, 2, INTER_CUBIC); // upscale 2x
// or
resize(src, dst, Size(1024, 768), 0, 0, INTER_CUBIC); // resize to 1024x768 resolution
UPDATE: aus der OpenCV
Dokumentation:
Skalierung wird Ändern der Größe nur des Bildes auch, wenn Sie anrufen resize
Sie beide Zielgröße und fx/fy
Skalierungsfaktoren passieren, sollten Sie etwas, das man passieren . OpenCV wird zu diesem Zweck mit einer Funktion cv2.resize() ausgeliefert. Die Größe des Bildes kann manuell angegeben werden, oder Sie können den Skalierungsfaktor angeben. Verschiedene Interpolationsmethoden werden verwendet. Bevorzugte Interpolationsmethoden sind cv2.INTER_AREA für Schrumpfung und cv2.INTER_CUBIC (langsam) cv2.INTER_LINEAR zum Zoomen. Die verwendete Interpolationsmethode ist standardmäßig cv2.INTER_LINEAR für alle Größenänderungszwecke.
import cv2
import numpy as np
img = cv2.imread('messi5.jpg')
res = cv2.resize(img,None,fx=2, fy=2, interpolation = cv2.INTER_CUBIC)
#OR
height, width = img.shape[:2]
res = cv2.resize(img,(2*width, 2*height), interpolation = cv2.INTER_CUBIC)
Auch in Visual C++
habe ich versucht, beide Methoden zum Schrumpfen und cv::INTER_AREA
Arbeiten deutlich schneller als cv::INTER_CUBIC
(wie durch OpenCV
Dokumentation erwähnt): Sie können einen Eingang Bild entweder von folgenden Methoden die Größe
cv::Mat img_dst;
cv::resize(img, img_dst, cv::Size(640, 480), 0, 0, cv::INTER_AREA);
cv::namedWindow("Contours", CV_WINDOW_AUTOSIZE);
cv::imshow("Contours", img_dst);