I have encountered a problem with the function imread()
in Matlab (2014) and OpenCV (3.0) on Windows 7 with jpg files.
I don't have the same values by reading the same file jpg and the same pixel.
Here are my 2 codes : (OpenCV code followed by the Matlab code) and the values I have (mode debug to see in OpenCV, keyboard in Matlab)
#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();
}
Values :
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
Values :
ans(:,:,1) =
148
ans(:,:,2) =
174
ans(:,:,3) =
201
Name Size Bytes Class Attributes
img 1920x2560x3 14745600 uint8
Have you any idea why values are different?
I have seen on another post a problem like this but the person did not have the same depth by reading a tiff. Here as you can see I have the same depth !
Thank you in advance and sorry for any English mistake.
PS: I have test with other pixels too, same results : closed results but not exactly equals.
img.type()==16
corresponds to? – Breastwork[90 ,106 ,122]
in Matlab for pixel (86,86). Maybe its not openCV's problem. – Breastwork