大家好,
请参考图片:http: //i48.tinypic.com/316qb78.jpg
我们正在开发一个应用程序来从电子显微镜的 MRC 图像中提取细胞边缘。
MRC 文件格式存储体积像素数据(http://en.wikipedia.org/wiki/Voxel),我们只需使用 3D 字符数组(char***)从 MRC 文件加载和存储数据(灰度值)。
如图所示,有 3 个查看器分别显示 XY、YZ 和 ZX 平面。查看器顶部的滚动条用于沿轴更改图像切片。
这是用户更改滚动条位置时我们执行的步骤。
1)获取新的滚动条值。(这是选定的切片)
2)对于相关平面(YZ,XY或ZX),通过读取3D char数组(char***)为所选切片生成(char * slice;)数组
3) 创建一个新的 QImage* (Format_RGB888) 并通过读取 'slice' 设置像素值(使用 img->setPixel(x,y,c);)
4) 这个新的 QImage* 是在 paintEvent() 方法中绘制的。
我们将在一个单独的线程中执行“边缘检测”过程,因为它是一个密集的过程。在这个过程中,我们需要在 QImage* 之上绘制检测到的曲线(像素集)。(作为一个层)。这个意味着我们需要在 QT 线程之外调用 drawPoint() 方法。
这是在这种情况下使用 QImage 的最佳方法吗?
从另一个线程执行 QT 绘图方法的最佳方法是什么?
提前致谢,