由opencv with qt的imshow源码的一部分联想到在arm上实现highgui
来源:互联网 发布:置信度传播算法 编辑:程序博客网 时间:2024/05/31 18:37
这几天一直在折腾给arm a9的开发板移植opencv,但是移植无法使用highgui部分。索性直接看源码,自己实现这部分界面显示的功能。结果看到了一些熟悉的东西,如下:
void DefaultViewPort::updateImage(const CvArr* arr){ CV_Assert(arr); CvMat* mat, stub; int origin = 0; if (CV_IS_IMAGE_HDR(arr)) origin = ((IplImage*)arr)->origin; mat = cvGetMat(arr, &stub); if (!image2Draw_mat || !CV_ARE_SIZES_EQ(image2Draw_mat, mat)) { if (image2Draw_mat) cvReleaseMat(&image2Draw_mat); //the image in ipl (to do a deep copy with cvCvtColor) image2Draw_mat = cvCreateMat(mat->rows, mat->cols, CV_8UC3); image2Draw_qt = QImage(image2Draw_mat->data.ptr, image2Draw_mat->cols, image2Draw_mat->rows, image2Draw_mat->step, QImage::Format_RGB888); //use to compute mouse coordinate, I need to update the ratio here and in resizeEvent ratioX = width() / float(image2Draw_mat->cols); ratioY = height() / float(image2Draw_mat->rows); updateGeometry(); } nbChannelOriginImage = cvGetElemType(mat); cvConvertImage(mat, image2Draw_mat, (origin != 0 ? CV_CVTIMG_FLIP : 0) + CV_CVTIMG_SWAP_RB); viewport()->update();}这是opencv3.1.0中highgui模块中的window_QT.cpp的第2410行,可见,底层就是网上常见的
image2Draw_mat = cvCreateMat(mat->rows, mat->cols, CV_8UC3);image2Draw_qt = QImage(image2Draw_mat->data.ptr, image2Draw_mat->cols, image2Draw_mat->rows, image2Draw_mat->step, QImage::Format_RGB888);
此外注意window_QT.cpp第1000,371,703行,window_QT.h第340,462行,window.cpp第277行。DefaultViewPort继承自QGraphicsView,paintEvent在window_QT.cpp第2710行,里面调用draw2D(在第2909行)来绘制图片。
因此可以放心大胆地用qt来显示opencv的图像了,而不必移植gtk2.0.阅读全文
0 0
- 由opencv with qt的imshow源码的一部分联想到在arm上实现highgui
- OpenCV Java imshow()的实现
- 由百度关键词联想联想到的
- 学习OpenCV——去除imshow的内部细小边框(修改highgui)
- opencv:简单的HighGui
- qt移植到arm上的过程
- 由内存的使用联想到的
- OpenCV在ARM平台上的移植
- OpenCV在ARM上的移植
- OpenCV在ARM上的移植
- OpenCV在ARM上的移植
- 由修电脑联想到的
- 由MMX优化联想到的
- 由Passbook联想到Path的盈利模式
- 由vijos1067 联想到的矩阵乘法
- QT在arm上的移植
- Opencv实现ARM上的人脸检测(ubuntu10.04 / QT / OK6410开发板)
- 【Android】联想到onNewIntent()在手机QQ上的用法
- BZOJ 4491 我也不知道题目名字是什么
- Bootstrap3.0学习第二十一轮(JavaScript插件——工具提示)
- Spring的bean管理(注解注入属性和注解文件混合使用)
- 生成XML
- python获取链家网数据
- 由opencv with qt的imshow源码的一部分联想到在arm上实现highgui
- Service得到配置更改通知
- 在Servlet中获取spring管理的bean
- POJ 1677 Girls' Day 笔记
- FZUOJ 2250 不可能弹幕结界【思维+Bfs】
- Matlab小波包分解后如何求各频带信号的能量值?
- vagrant+centos7 安装报错
- “玲珑杯”线上赛 Round #15 河南专场:E -- 咸鱼旅行
- 《我们仨》读感