Ich habe ein Problem mit der Funktion imread()
in Matlab (2014) und OpenCV (3.0) auf Windows 7 mit JPG-Dateien festgestellt.OpenCV vs Matlab: Unterschiedliche Werte auf Pixeln mit imread
Ich habe nicht die gleichen Werte durch das Lesen der gleichen Datei JPG und das gleiche Pixel.
Hier sind meine 2-Codes: (OpenCV-Code durch den Code Matlab gefolgt), und die Werte, die ich habe (Modus debug in OpenCV, Tastatur in Matlab zu sehen)
#include <opencv2\opencv.hpp>
#include <cstdio>
using namespace cv;
using namespace std;
int main()
{
Mat img = imread("test.jpg");
uchar pb = img.at<Vec3b>(0, 0).val[0];
uchar pg = img.at<Vec3b>(0, 0).val[1];
uchar pr = img.at<Vec3b>(0, 0).val[2];
int d = img.depth();
int t = img.type();
}
Werte:
pixel [0,0] = (147,174,204); // = index(1,1) in the image.
d = 0;
t = 16;
-Code Matlab:
img = imread('test.jpg');
img(1,1,:)
whos img
Werte:
ans(:,:,1) =
148
ans(:,:,2) =
174
ans(:,:,3) =
201
Name Size Bytes Class Attributes
img 1920x2560x3 14745600 uint8
Haben Sie eine Idee, warum Werte anders sind?
Ich habe in einem anderen Beitrag ein Problem wie dieses gesehen, aber die Person hatte nicht die gleiche Tiefe durch Lesen eines TIFF. Hier, wie Sie sehen können, habe ich die gleiche Tiefe!
Vielen Dank im Voraus und Entschuldigung für einen englischen Fehler.
PS: Ich habe auch mit anderen Pixeln testen, gleiche Ergebnisse: geschlossene Ergebnisse, aber nicht genau gleich.
Können Sie die fragliche JPEG-Datei für weitere Untersuchungen zur Verfügung stellen? – ypnos
auch den gesamten openCV-Code, wo Sie das Bild speichern. –
sind Matlab-Code und C++ - Anwendung ich im selben Verzeichnis? Sind Sie sicher, dass beide Dateien identisch sind? z.B. Sie haben das Bild nicht geöffnet und speichern Sie das Bild an der anderen Stelle (möglicherweise mit zusätzlichen JPEG-Komprimierungseffekten)? – Micka