Это код, который я пробовал, печатаются только значения координат, но не значения пикселей.
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
void onMouse( int event, int x, int y, int, void* );
using namespace cv;
Mat img = cv::imread("b.jpg", 0); // force grayscale
Mat thresh=Mat::zeros(img.size(),CV_8UC1);
int main(int argc, char **argv)
{
if(!img.data) {
std::cout << "File not found" << std::endl;
return -1;
}
threshold(img,binary,50,255,THRESH_TOZERO);
namedWindow("thresh");
setMouseCallback( "thresh", onMouse, 0 );
imshow("thresh",thresh);
}
void onMouse( int event, int x, int y, int, void* )
{
if( event != CV_EVENT_LBUTTONDOWN )
return;
Point pt = Point(x,y);
std::cout<<"x="<<pt.x<<"\t y="<<pt.y<<"\t value="<<thresh.at<uchar>(x,y)<<"\n";
}
Я получил вывод как: -
Значения координат печатаются, но значения пикселей не печатаются должным образом. Какую ошибку я совершил ??
6
Karthik Murugan
17 Фев 2013 в 13:56
1 ответ
Лучший ответ
Cout печатает uchar в виде символов, подобных тем, что вы видите.
Просто оберните их приведением к int для печати:
cout << int( thresh.at<uchar>(y,x) )
also note, that it's at<uchar>(y,x), not x,y
6
berak
17 Фев 2013 в 14:26
Спасибо @berak. другой qn: in .at (y, x), который представляет номер строки и столбца ??
– Karthik Murugan
17 Фев 2013 в 14:39
At (row_no, column_no) 'в основном: y = row_no, x = column_no'
– berak
17 Фев 2013 в 15:43
Похожие вопросы
Новые вопросы
opencv
OpenCV (Open Source Computer Vision) — это библиотека для компьютерного зрения в реальном времени. При использовании этого тега добавьте тег для конкретного языка (python, c++, ...), если это необходимо.