很多都是opencv1的代码,这里特意写一个opencv2的。
为了方便获取图片指定点的灰度值,找出图片之间的共同特性,特意外写了这个代码:
void on_mouse(int event, int x, int y, int flags, void* prarm){
Mat& pic1 = *(Mat*)prarm;
Mat pic2 = pic1.clone();
int cha = pic1.channels();
char label[20];
char label2[20];
if (event == CV_EVENT_LBUTTONDOWN){
uchar* ptr = (uchar*)pic1.data + y * pic1.cols; //获取指定点的像素值
sprintf(label, "gray value: %d", ptr[x]);
sprintf(label2, "pixel: (%d,%d)", x, y);
if (pic1.cols - x <= 180 || pic1.rows - y <= 20){
cv::rectangle(pic2, cvPoint(x - 180, y - 40), cvPoint(x - 10, y - 10), CV_RGB(0, 0, 0));
cv::putText(pic2, label, cvPoint(x - 180, y - 30), CV_FONT_HERSHEY_