我不确定历史,我很高兴得到纠正......但我相信 OpenCV 是基于,并且可以做 IPL 曾经做的所有事情,包括 SSE[23]/MMX/CUDA 等。看起来对我来说,你最好放弃 ImageMagick 和 IPL 并用 OpenCV 替换它们——或者探索 ImageMagick 中的 OpenCL 算法。希望其他人发表评论并启发我们。
无论如何,如果您使用 ImageMagick 加载了图像并且想要访问位图数据(像素),那么您可以将它们放入 IPL 数据结构中,最简单的可能是这样的:
#include <cstdlib>
#include <iostream>
#include <Magick++.h>
using namespace std;
int main ( int argc, char *argv[] )
{
// Initialize ImageMagick
Magick::InitializeMagick(*argv);
int row,col;
Magick::Image image;
int bytes=512*512*3; // I happen to know Lena is 512x512 and RGB - i.e. 3 bytes/pixel
unsigned char buffer[bytes];
// Read in Lena
image.read("lena.png");
// Convert Lena to a bunch of bytes
image.write(0,0,512,512,"RGB",Magick::CharPixel,buffer);
// Now "buffer" points to the raw pixels and you can put them into IPL structures