C++使用OpenCV开发带界面程序总结

C++使用OpenCV开发带界面程序总结

概述

OpencCV自身已经带了GUI界面,这个作处理结果检测是够用的,但是要产品化,界面就显得有点不专业(可能是自己研究不够),所以就得使用一些相关的C#、MFC、QT等来完成用户交互界面。现在就对做一个比较。

C#

​ C#调用OpenCV需要使用OpenCVSharp库,是此库相对简单,但是如果需要在OpenCV定义自己的算法,就无法满足。想使用OpenCV原始的方法可以满足要求。如果项目侧重的是OpenCV算法优化,这个就无法满足。就需要你是先自己的C++动态库,再在C#中调用(这个可以参考C#调用C++动态库)。

        private void OpenButton_Click(object sender, EventArgs e)
        {
            OpenFileDialog file = new OpenFileDialog();
            file.InitialDirectory = ".";
            file.Filter = "所有文件(*.*)|*.*";
            file.ShowDialog();
            if (file.FileName != string.Empty)
            {
                try
                {
                    pathname = file.FileName;   //获得文件的绝对路径
                    this.pictureBox1.Load(pathname);

                    //opencv加载图片
                    Mat src = new Mat(pathname, ImreadModes.Color);
                    Cv2.ImShow("C#测试OpenCV",src);
                    Cv2.WaitKey(0);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }

在这里插入图片描述

具体实现可以参考链接(https://www.cnblogs.com/jsxyhelu/p/9669583.html)

MFC

​ MFC本身是使用C++开发的,OpenCV也是,可以做到无缝调用。但是要将OpenCV保存图片结构(Mat)转换成MFC图片结构(IplImage)感觉有点麻烦(可能是自己对MFC使用不多).

QT

​ QT本身也是使用C++开发的,可以直接调用OpenCV函数。自己感觉优点就是OpenCV转换成QT图片结构比较简单,一个函数就搞定,另外一个优点就是可以跨平台(如果没有跨平台要求,这个就不算优点,哈哈)。

Mat image = imread(str);
cvtColor(image, image, COLOR_BGR2RGB);
cv::resize(image, image, Size(300, 200));
QImage img = QImage((const unsigned char*)(image.data), image.cols, image.rows,                               QImage::Format_RGB888);

在这里插入图片描述

总结

​ 如果只是简单图片处理,直接使用C#(自己感觉目前做单机界面比较简单),如果项目侧重在OpenCV算法,建议使用MFC或者QT(那个熟悉就用那个),有跨平台要求建议使用QT。

例子代码工程https://download.csdn.net/download/scy518/14952990

参考链接

https://blog.csdn.net/guanzhen3657/article/details/81812566

https://www.cnblogs.com/jsxyhelu/p/9669583.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

匠心码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值