美文网首页C++Visual Studio Code
Vscode Linux下opencv及多进程socket(4)

Vscode Linux下opencv及多进程socket(4)

作者: applecai | 来源:发表于2019-06-01 21:03 被阅读1次

    Vscode Linux下opencv及多进程socket(4)--Apple的学习笔记
    继承我的上一篇文章Vscode Linux下opencv及多线程socket(3)--Apple的学习笔记中待完成任务。

    一,本周做了变更(版本变更为0.4)

    1. 将HMI线程改为进程。
    2. 添加IPC消息传递,共享内存和信号灯的使用。
    3. 实现HMI显示的控制(按键j)及保存显示图片的功能(按键k)
    

    注:client地址设置为192.168.1.111,server地址设置为192.168.1.110
    工程共享路径(在code/04文件夹中): https://github.com/AppleCai/Display

    二,后续更新版本说明:

    之前的2.6/2.7算完成了,后续需要完成

    2.8 代码优化,添加守护进程。
    2.9 进行性能测试,进行优化。
    

    三,图片叠加设计说明

    HMI子进程处理如下:接收2个group的消息并且读取共享内存并且显示。
    group等于1为主进行sokect线程读取一帧图片后发来的消息。
    group等于2为主进程的key线程发来的消息(key=j和key=p)。
    HMI主要code如下:
    
        else if (id == 0) //child read
        {
            std::vector<uchar> imgvec;
            MYmsg::Msg recvbuf,cmdbuf;
            cmdbuf.buf[0]=0;  //init value,shall show pic
            while (1)
            {
                
                disp->_myServerEx->msg->IPCrecvMsg(&recvbuf,MYGROUP,0);
                disp->_myServerEx->sem->sem_p();
                char *buf = disp->_myServerEx->shm->atAddr();
                for (int i = 0; i < recvbuf.buf[1] ; i++)
                {
                    imgvec.push_back(buf[i]);
                }
                disp->_myServerEx->shm->DelAddr(buf);
                disp->_myServerEx->sem->sem_v();
                cv::Mat Img = cv::imdecode(imgvec, CV_LOAD_IMAGE_COLOR);
                imgvec.clear();
                std::vector<uchar>(imgvec).swap(imgvec);
                //cv::imshow("pic", Img);
                //cv::waitKey(1);
                cmdbuf.buf[1]=0; // clear the save bit each cycle
                disp->_mykey->msg->IPCrecvMsg(&cmdbuf,KEYGROUP,IPC_NOWAIT);
                if(0==cmdbuf.buf[0])
                {
                    disp->_myHMI->DisplayFrame(Img,recvbuf.buf[0],cmdbuf.buf[1]);
                }
            }
        }
    

    四,运行效果图(图1)按p键后保存的now.jpg如下(图2)

    my1.png
    my2.png

    相关文章

      网友评论

        本文标题:Vscode Linux下opencv及多进程socket(4)

        本文链接:https://www.haomeiwen.com/subject/ftqztctx.html