小编rem*_*em7的帖子

NumPy,PIL添加图像

我正在尝试使用NumPy和PIL将两个图像组合在一起.我在MATLAB中这样做的方式如下:

>> M1 = imread('_1.jpg');
>> M2 = imread('_2.jpg');
>> resM = M1 + M2;
>> imwrite(resM, 'res.jpg');
Run Code Online (Sandbox Code Playgroud)

我得到这样的东西:

alt text http://www.deadlink.cc/matlab.jpg

使用合成程序并添加图像,MATLAB结果似乎是正确的.

在Python中我试图做同样的事情:

from PIL import Image
from numpy import *

im1 = Image.open('/Users/rem7/Desktop/_1.jpg')
im2 = Image.open('/Users/rem7/Desktop/_2.jpg')

im1arr = asarray(im1)
im2arr = asarray(im2)

addition = im1arr + im2arr

resultImage = Image.fromarray(addition)
resultImage.save('/Users/rem7/Desktop/a.jpg')
Run Code Online (Sandbox Code Playgroud)

我得到这样的东西:

alt text http://www.deadlink.cc/python.jpg

为什么我会得到所有那些时髦的颜色?我也试过使用ImageMath.eval("a+b", a=im1, b=im2),但是我得到一个关于RGB不支持的错误.

我也看到有一个Image.blend()但需要alpha.

什么是实现我正在寻找的最佳方式?

源图像(图像已被删除):

alt text http://www.deadlink.cc/_1.jpg alt text http://www.deadlink.cc/_2.jpg

嗯,好吧,我使用添加图片图标添加了源图像,当我正在编辑帖子时它们出现,但由于某种原因,图像没有显示在帖子中.

(图片已被删除)2013 05 09

python numpy image-processing python-imaging-library

23
推荐指数
2
解决办法
3万
查看次数

将RGB IplImage转换为3个数组

我需要一些C++ /指针帮助.当我创建一个RGB IplImage并且我想访问i时,我使用以下C++类:http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv- intro.html

template<class T> class Image
{
private:
    IplImage* imgp;

public:
    Image(IplImage* img=0) {imgp=img;}
    ~Image(){imgp=0;}
    void operator=(IplImage* img) {imgp=img;}
    inline T* operator[](const int rowIndx) {
        return ((T *)(imgp->imageData + rowIndx*imgp->widthStep));}
};

typedef struct{
  unsigned char b,g,r;
} RgbPixel;

typedef struct{
  float b,g,r;
} RgbPixelFloat;

typedef Image<RgbPixel>       RgbImage;
typedef Image<RgbPixelFloat>  RgbImageFloat;
typedef Image<unsigned char>  BwImage;
typedef Image<float>          BwImageFloat;
Run Code Online (Sandbox Code Playgroud)

我一直在使用CUDA,所以有时我必须将所有数据放入一个数组中,我喜欢将每个通道保存在自己的数组中,这样看起来更容易处理数据.所以我通常会这样做:

IplImage *image = cvLoadImage("whatever.tif");
RgbImageFloat img(image);
for(int i = 0; i < exrIn->height; i++)
{
    for(int j …
Run Code Online (Sandbox Code Playgroud)

c++ arrays performance opencv iplimage

3
推荐指数
1
解决办法
7684
查看次数