- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将数百张 jpg 图像转换为 dicom。我有一个 Web 应用程序,该应用程序最初是用 Node.js 制作的,但速度非常慢。我想用 C 语言并使用 openmp 来并行化以下代码:
int main(){
DIR *dir;
struct dirent *arq;
dir = opendir("./jpg");
char cmd1[255] = "./dcm4che-2.0.23/bin/jpg2dcm -c dcm4che-2.0.23/etc/jpg2dcm/jpg2dcm.cfg jpg/";
char cmd_aux[255] = "./dcm4che-2.0.23/bin/jpg2dcm -c dcm4che-2.0.23/etc/jpg2dcm/jpg2dcm.cfg jpg/";
char buf[255];
char nomeArq[255];
int i;
//Stretch in which I use openmp
while ((arq = readdir(dir)) != NULL){
strncpy(nomeArq, arq->d_name, 255);
if(nomeArq[0] != '.'){
sprintf(buf, " dcm/imagem-%d.dcm", i);
strcat(cmd1, nomeArq); // cmd1 + nomeArquivo
strcat(cmd1, buf);
system(cmd1);
strncpy(cmd1, cmd_aux, 255);
}
i++;
}
closedir(dir);
return 0;
}
我怎么知道这段代码是 I/O 限制的,我想问一下 openmp 是否真的无法获得任何加速。如果可能的话,如何在使用 openmp 时并行化这个循环。如果我说得不太清楚,抱歉!我还在学英语!
最佳答案
首先,如果您考虑现有工具,您的任务会更容易:
xargs
使用多进程参数示例为 xargs
(从 bash 命令提示符处):
ls ./jpg | xargs -P 0 -i ./dcm4che-2.0.23/bin/jpg2dcm -c dcm4che-2.0.23/etc/jpg2dcm/jpg2dcm.cfg jpg/{} dcm/{}.dcm
使用 for
循环更容易,您可以开始将文件列表放入数组中( Stackoverflow code 了解如何操作)。
// put your code for reading he files list into an array //
int main() {
char **files;
const size_t count = file_list("./jpg", &files);
#pragma omp parallel for
for(size_t i=0;i<count;++i) {
if(files[i][0] == '.' ) { continue; } // 'skip' directory entry, maybe you should implement some better check ( extension, or even checking if it is a file at all)
// keep the buffer local to the loop
char *buf = malloc(1024);
// already calling sprintf, use it for building the whole command line, and avoid the strncpy & strcat
sprintf(buf, "./dcm4che-2.0.23/bin/jpg2dcm -c dcm4che-2.0.23/etc/jpg2dcm/jpg2dcm.cfg jpg/%s dcm/imagem-%zu.dcm",files[i],i);
system(buf);
free(buf); // cleanup
}
return EXIT_SUCCESS;
}
关于c - 如何使用openmp转换jpg2dicom?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39692894/
我的目录中有一堆图像(100+),它们的名称都不同。有什么方法可以将它们重命名为 0.jpg、1.jpg、2.jpg 等,可能使用脚本(我运行的是 Windows),而不必单独重命名每个文件?如果在
文件的顺序由可以嵌入文件名中的数字确定,但有时嵌入在名称的开头,例如文件1.txt文件2.txt文件3.txt文件10.txt文件11.txtETC..或者1.txt2.txt10.txt等. 重命名
我有一个 inotify 等待脚本,只要检测到文件已上传到源目录,它就会将文件从一个位置移动到另一个位置。 我面临的挑战是我需要保留文件的基本名称并将以下扩展名:.JPEG、.JPG、.jpeg 转换
我有一段代码可以上传图像并创建缩略图,只要扩展名是小写的 jpg,但如果是大写的 JPG,它就不会上传图像。当我重命名图像时,例如example.JPG 到 example.jpg,它会上传。但是 e
我必须缩小和解压缩一组大小为 4608 x 3456 的 JPG 图像。目前,我已经能够将图像正确解压缩为 RGB 格式并将它们转换为位图。 现在我需要实现缩小,根据我目前所读到的正确缩小图像的内容,
这个问题困扰我好久了。我正在尝试在 PHP 中加载图像,但是有 jpg 和 JPG 图像,当我尝试通过 jpg 加载图像时,找不到 JPG 图像(显然) $img1 = ''; $img2 = '';
我使用这个函数来检测我的文件是否存在。虽然我有一些图像存储为 .jpg、.JPG、.png 和 .PNG。但即使真实文件的扩展名为 .JPG 或 .PNG,它也总是将 .jpg 或 .png 返回为真
我有很多这样的文件: 13040-3BLK1.JPG 13040-3NAV11.JPG 13040-50NAV11.JPG 13040-60NAV11.JPG 13040-LNAV1.JPG
我在机器人上安装了摄像头。长话短说,相机输出二进制数组,我相信这是一个 JPG 编码流。我这么说是因为我使用的库中的许多方法都暗示它是 JPG 编码的,并且第一个和最后 2 个字节是 255 216
我正在制作个人网页,我已将其草稿上传到 www.kurtpeek.com。我注意到的一个错误是,我在“关于我”部分中的一张 jpeg 图片“MIT_IAP_SAR_smallest.JPG”没有出现在
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关闭 9 年前。 要求提供代码的问题必须表现出对所解决问题的最低限度的理解。包括尝试过的解决方案、为什么
我有一张图片列表,我想将它们组合成每组一张图片。每个图像都有一个名称以及它是什么类型的图表。我希望有一种方法可以使用名称对图像进行分组,并为每个组返回单个 jpg 或 png 的输出。组合后的图像如下
我通过 JavaScript 设置 img 的 src 属性,如下所示: var newimgid = "images/" + fldrid + "/" + id + ".jpg"; document
我有一个 TImage,它显示文件夹中的 JPG 图像。每个 JPG 图像名称都是数字(例如 5968.jpg)。如果 JPG 图像不存在,我当前加载模板 JPG。 但是,我想在检查本地文件夹后再检查
我的脚本很简单。 SELECT file_name FROM images WHERE `id` = '$id' AND `file_name` LIKE '%_1.jpg' 当我在 mysql 中运
我有一个页面显示了一些产品,例如:- 标题- 描述- 图片 当图像存储在表中时,其存储为例如“image.jpg”...但是我想在上传图像时制作图像名称的标题将用作图像的标题产品的 html 标题(t
我想创建一个按钮来在 a.jpg 和 b.jpg 之间反复翻转图像。这是我的代码: function changeImg() { document.getElementById("
有没有人为 Windows 制作一个简单的 DLL,这样我就可以将原始图像数据保存为 JPG 格式?它也应该有 .lib 和 .h 文件,所以我不需要搞乱源代码编译,因为我发现它非常困难。 需要考虑的
我有一张我正在尝试创建的动态图像,它以前在一个网络主机上工作,直到我发现他们删除了一些功能,其中一些破坏了我的形象。我最近搬到了 hostgator,我也无法让图像在他们的网站上工作。实际的 PHP
有时我将 JPG 图像保存为未压缩的位图 (BMP/PNG),以在更改图像时保持质量。 我想知道,理论上是否可以将位图重新编码回其原始 JPG 格式,而不会损失任何质量(我编辑的区域除外)? 编辑:我
我是一名优秀的程序员,十分优秀!