Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 使用鼠标回调打印坐标和像素值_Opencv_Mouseevent_Cout_Mat - Fatal编程技术网

Opencv 使用鼠标回调打印坐标和像素值

Opencv 使用鼠标回调打印坐标和像素值,opencv,mouseevent,cout,mat,Opencv,Mouseevent,Cout,Mat,这是我试过的代码,只打印坐标值,不打印像素值。 #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); /

这是我试过的代码,只打印坐标值,不打印像素值。

#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";

}
#包括
#包括
#包括
void onMouse(int事件,int x,int y,int,void*);
使用名称空间cv;
Mat img=cv::imread(“b.jpg”,0);//强制灰度
Mat thresh=Mat::zeros(img.size(),CV_8UC1);
int main(int argc,字符**argv)
{
如果(!img.data){

coutcout将uchar打印为字符,就像您看到的字符一样

只需使用“转换为int”将它们包装起来即可进行打印:

cout << int( thresh.at<uchar>(y,x) )

also note, that it's at<uchar>(y,x), not x,y

cout Thank you@berak.另一个问题:in.at(y,x),哪一个代表行号和列号?at(row_no,column_no)'基本上是:y=row_no,x=column_no'