Я пытаюсь очень просто с opencv, но получаю ошибку. Я просто пытаюсь прочитать 16-битное изображение png и получить доступ к конкретному значению пикселя. Я пробовал много способов, но не мог управлять значением get. Я использую OpenCV3.0 для Windows8 64bit.Значение изображения пикселя изображения OpenCV
ПРИМЕЧАНИЕ: при чтении изображения с использованием CV_LOAD_IMAGE_GRAYSCALE это нормально, но CV_LOAD_IMAGE_ANYDEPTH ошибка роста. Но когда я использую CV_LOAD_IMAGE_GRAYSCALE, мой самый высокий пиксель равен 9, что должно быть около 2000
Я загрузил пример изображения. example image
мой пример кода:
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
int _tmain(int argc, _TCHAR* argv[])
{
cv::Mat frame = cv::imread("filepath", CV_LOAD_IMAGE_ANYDEPTH);//using CV_LOAD_IMAGE_GRAYSCALE is fine, but CV_LOAD_IMAGE_ANYDEPTH rising error
frame.convertTo(frame, CV_16U);// to be sure... i omitted this part also and same error
double min, max;
cv::Point mloc, mxloc;
cv::minMaxLoc(frame, &min, &max, &mloc, &mxloc);
//i can access min and max values but not the specific pixel value
float zmx = frame.at<unsigned char>(118, 38);//rise error
float zm = frame.at<float>(30,40);//rise error
return 0;
}
Сообщение об ошибке:
Необработанное исключение при 0x00007FF8EB288A5C в OpenCVTest.exe: Microsoft C++ исключение: резюме :: Exception в ячейку памяти 0x000000A47F40F230.
Но я думаю, что это вводящая в заблуждение ошибка, я проверяю, что мое изображение 320 * 240, поэтому я уверен, что в этом месте есть пиксель.
Я попытался с скаляра также, но я получаю ту же ошибку
вы определяете 'frame' дважды? – Thesane
отправьте сообщение об ошибке пожалуйста. есть бесчисленные ошибки в этом мире – Piglet
@Thsane это просто ошибка, пока я копирую свой код., ошибка такая же – seleucia