• 《学习OpenCV》课后习题解答9


    题目:(P126)
    创建一个程序,使其读入并显示一幅图像。当用户鼠标点击图像时,获取图像对应像素的颜色值(BGR),并在图像上点击鼠标处用文本将颜色值显示出来。

    解答:
    本题关键是会用cvGet2D获得BGR值,以及会用鼠标点击事件和回调函数,还有显示文本值。

    #include<cv.h>
    #include<highgui.h>
    #include<iostream>
    
    using namespace std;
    char* str = (char*)malloc(30 * sizeof(char*));
    void myMouseCallback(
        int event,
        int x,
        int y,
        int flags,
        void* param
        );
    int main(int argc, char* argv[])
    {
        IplImage* img = cvLoadImage(argv[1]);
        cvNamedWindow("获取图像某一点的颜色分量", 1);
        cvShowImage("获取图像某一点的颜色分量", img);
        while (1)
        {
            cvSetMouseCallback(
                "获取图像某一点的颜色分量",
                myMouseCallback,
                (void*)img
                );
            if (cvWaitKey(100) == 27)
                break;
        }
        cvReleaseImage(&img);
        cvDestroyWindow("获取图像某一点的颜色分量");
        return 0;
    }
    void myMouseCallback(
        int event,
        int x,
        int y,
        int flags,
        void* param
        ) {
        IplImage* img = (IplImage*)param;
        if (event == CV_EVENT_LBUTTONDOWN)
        {
            CvScalar s;
            s = cvGet2D(img, x, y);//返回(x,y)的RGB值
    
    
            CvFont cvf;
            cvInitFont(&cvf, CV_FONT_HERSHEY_PLAIN, 1, 1, 0, 1, 8);
            double r = s.val[0];
            double g = s.val[1];
            double b = s.val[2];
            memset(str, 0, 30);
            sprintf(str, "B:%.0f,G:%.0f,R:%.0f", b, g, r);
            cout << "B:" << b << ",G:" << g << ",R:" << r << endl;
            cvPutText(img,
                str,
                cvPoint(x, y),
                &cvf,
                cvScalar(255, 0, 0)
                );
            cvShowImage("获取图像某一点的颜色分量", img);
        }
    }
    
    
  • 相关阅读:
    基于HttpListener的web服务器
    基于TcpListener的web服务器
    一个简单的web服务器
    c# 6.0新特性(二)
    c# 6.0新特性(一)
    c#之Redis实践list,hashtable
    html5摇一摇[转]
    在Microsoft-IIS/10.0上面部署mvc站点的时候,出现404的错误
    [实战]MVC5+EF6+MySql企业网盘实战(28)——其他列表
    让DELPHI自带的richedit控件显示图片
  • 原文地址:https://www.cnblogs.com/huahai/p/7271054.html
Copyright © 2020-2023  润新知