C++ 使用OpenCV在图像上悬停时打印鼠标指针的像素坐标 #包括 #包括 #包括 #包括 使用名称空间cv; 使用名称空间std; Mat图像; char window_name[20]=“获取坐标”; 鼠标上的静态void(int事件、int x、int y、int f、void*){ 不能包含 #包括 #包括 使用名称空间cv; Mat-img; void onMouse(int事件、int x、int y、int标志、void*param) { 字符文本[100]; Mat img2、img3; img2=img.clone(); if(event==CV\u event\u LBUTTONDOWN) { Vec3b p=img2.at(y,x); sprintf(文本,“R=%d,G=%d,B=%d”,p[2],p[1],p[0]); } else if(event==CV_event_RBUTTONDOWN) { CVT颜色(img、img3、CV_BGR2HSV); Vec3b p=img3.at(y,x); sprintf(文本,“H=%d,S=%d,V=%d”,p[0],p[1],p[2]); } 其他的 sprintf(文本,“x=%d,y=%d”,x,y); putText(img2,文本,点(5,15),字体为1.0,字体为RGB(0255,0)); imshow(“图像”,img2); } int main(int argc,字符**argv) { img=imread(argc==2?argv[1]:“lena.jpg”); if(img.empty()) 返回-1; 名称(“图像”); setMouseCallback(“图像”,onMouse,0); imshow(“图像”,img); 等待键(0); 返回0; }

C++ 使用OpenCV在图像上悬停时打印鼠标指针的像素坐标 #包括 #包括 #包括 #包括 使用名称空间cv; 使用名称空间std; Mat图像; char window_name[20]=“获取坐标”; 鼠标上的静态void(int事件、int x、int y、int f、void*){ 不能包含 #包括 #包括 使用名称空间cv; Mat-img; void onMouse(int事件、int x、int y、int标志、void*param) { 字符文本[100]; Mat img2、img3; img2=img.clone(); if(event==CV\u event\u LBUTTONDOWN) { Vec3b p=img2.at(y,x); sprintf(文本,“R=%d,G=%d,B=%d”,p[2],p[1],p[0]); } else if(event==CV_event_RBUTTONDOWN) { CVT颜色(img、img3、CV_BGR2HSV); Vec3b p=img3.at(y,x); sprintf(文本,“H=%d,S=%d,V=%d”,p[0],p[1],p[2]); } 其他的 sprintf(文本,“x=%d,y=%d”,x,y); putText(img2,文本,点(5,15),字体为1.0,字体为RGB(0255,0)); imshow(“图像”,img2); } int main(int argc,字符**argv) { img=imread(argc==2?argv[1]:“lena.jpg”); if(img.empty()) 返回-1; 名称(“图像”); setMouseCallback(“图像”,onMouse,0); imshow(“图像”,img); 等待键(0); 返回0; },c++,opencv,C++,Opencv,我会做这项工作的。太好了!救了我一天! #include <iostream> #include <stdio.h> #include <opencv2/opencv.hpp> #include <highgui.h> using namespace cv; using namespace std; Mat image; char window_name[20]="Get coordinates"; static void onMouse(

我会做这项工作的。

太好了!救了我一天!
#include <iostream>
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <highgui.h>

using namespace cv;
using namespace std;

Mat image;
char window_name[20]="Get coordinates";

static void onMouse( int event, int x, int y, int f, void* ){
    cout << x << " " << y << endl;
    //putText(image, "point", Point(x,y), CV_FONT_HERSHEY_PLAIN, 1.0, CV_RGB(255,0,0));
}

int main() {
    namedWindow( window_name, CV_WINDOW_AUTOSIZE );
    image = imread("image.png");
    imshow( window_name, image );    
    setMouseCallback( window_name, onMouse, 0 );
    waitKey(0);
    return 0;
}
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <stdio.h>

using namespace cv;

Mat img;

void onMouse(int event, int x, int y, int flags, void* param)
{
    char text[100];
    Mat img2, img3;

    img2 = img.clone();

    if (event == CV_EVENT_LBUTTONDOWN)
    {
        Vec3b p = img2.at<Vec3b>(y,x);
        sprintf(text, "R=%d, G=%d, B=%d", p[2], p[1], p[0]);
    }
    else if (event == CV_EVENT_RBUTTONDOWN)
    {
        cvtColor(img, img3, CV_BGR2HSV);
        Vec3b p = img3.at<Vec3b>(y,x);
        sprintf(text, "H=%d, S=%d, V=%d", p[0], p[1], p[2]);
    }
    else
        sprintf(text, "x=%d, y=%d", x, y);

    putText(img2, text, Point(5,15), FONT_HERSHEY_PLAIN, 1.0, CV_RGB(0,255,0));
    imshow("image", img2);
}

int main(int argc, char** argv)
{
    img = imread(argc == 2 ? argv[1] : "lena.jpg");
    if (img.empty())
        return -1;

    namedWindow("image");
    setMouseCallback("image", onMouse, 0);
    imshow("image", img);
    waitKey(0);

    return 0;
}