Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python OpenCV或PIL中,在电影或图像系列中制作最大像素值的图像的最佳方法是什么?_Python_Image Processing_Opencv - Fatal编程技术网

在Python OpenCV或PIL中,在电影或图像系列中制作最大像素值的图像的最佳方法是什么?

在Python OpenCV或PIL中,在电影或图像系列中制作最大像素值的图像的最佳方法是什么?,python,image-processing,opencv,Python,Image Processing,Opencv,除了创建新图像、使用for循环遍历电影的每一帧以及每一次迭代遍历帧中的每个像素这一显而易见的方式外,是否还有更有效的方式(例如,使用已经在更快/更低级别实现的功能)来实现这一点,如果图像大于当前值,则更新相应像素值处的图像 我确实可以使用cv.Get2D访问帧中的单个像素,所以这很好。我只是想知道我是否可以利用一种更快或更硬件优化的方法来实现这一点,因为我将在许多千兆字节的灰度视频上实现这一点。有很多方法可以实现这一点,而“最佳”方法将取决于您可以使用的硬件 如果您使用的是好的AMD视频卡,您可

除了创建新图像、使用for循环遍历电影的每一帧以及每一次迭代遍历帧中的每个像素这一显而易见的方式外,是否还有更有效的方式(例如,使用已经在更快/更低级别实现的功能)来实现这一点,如果图像大于当前值,则更新相应像素值处的图像


我确实可以使用cv.Get2D访问帧中的单个像素,所以这很好。我只是想知道我是否可以利用一种更快或更硬件优化的方法来实现这一点,因为我将在许多千兆字节的灰度视频上实现这一点。

有很多方法可以实现这一点,而“最佳”方法将取决于您可以使用的硬件

如果您使用的是好的AMD视频卡,您可以使用库将帧传送到您的GPU,然后使用OpenCL进行计算。这将是邪恶的快

如果你没有AMD图形卡,但你有一个很好的NVidia卡或Intel HD4000(新的基于常春藤桥的Core i7系统),你可以使用OpenCV读取帧,然后将数据传递给OpenCL,同时还可以并行计算


即使没有好的显卡,也可以使用OpenCL CPU上下文进行计算,如果使用
int4
矢量数据类型,代码将使用Intel或AMD处理器的SSE2寄存器。这应该是问题陈述中提到的原始像素迭代速度的4倍以上。

添加答案,因为K.Brafford没有直接回答问题的“OpenCV或PIL”部分


从完成的基准测试来看,OpenCV似乎是明显的赢家

您如何将您的电影数据转化为图像帧?您是否已经在使用OpenCV的函数打开电影文件并获取图像,或者您可以自由地执行其他操作?我已经在使用OpenCV打开电影文件,因为这是我所知道的使用Python执行此操作的最简单方法。我可以自由地使用其他东西,如果它是更快的虽然。什么是你的时间表在这个项目上?我问的原因是,我正在为AMD的OpenVideo库编写python包装器:……如果您有时间并想提供帮助,我们可以利用您的问题帮助使该库处于可用状态,同时解决您的问题。