Я столкнулся с проблемой с функцией imread()
в Matlab (2014) и OpenCV (3.0) в Windows 7 с файлами jpg.
У меня нет одинаковых значений при чтении одного и того же файла jpg и одного и того же пикселя.
Вот мои 2 кода: (код OpenCV, за которым следует код Matlab) и значения, которые у меня есть (режим отладки для просмотра в OpenCV, клавиатура в 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();
}
Ценности :
pixel [0,0] = (147,174,204); // = index(1,1) in the image.
d = 0;
t = 16;
Код Матлаб:
img = imread('test.jpg');
img(1,1,:)
whos img
Ценности :
ans(:,:,1) =
148
ans(:,:,2) =
174
ans(:,:,3) =
201
Name Size Bytes Class Attributes
img 1920x2560x3 14745600 uint8
Вы хоть понимаете, почему значения разные?
Я видел в другом посте подобную проблему, но у человека не было такой же глубины, читая размолвку. Здесь, как видите, у меня такая же глубина!
Заранее спасибо и извините за любую английскую ошибку.
PS: я тестировал и другие пиксели, те же результаты: закрытые результаты, но не совсем равные.
img.type()==16
? - person Ander Biguri   schedule 27.07.2015[90 ,106 ,122]
в Matlab для пикселя (86,86). Может быть, это не проблема openCV. - person Ander Biguri   schedule 28.07.2015