3,881
社区成员
发帖
与我相关
我的任务
分享
// m_cvImageSmall为待转化的图片
// m_p4Channel 为转化后的
IplImage *dst = 0;
CvSize dst_cvsize;
IplImage * src = m_cvImageSmall.GetImage();
dst_cvsize.width = src->width;
dst_cvsize.height = src->height;
dst = cvCreateImage( dst_cvsize, src->depth, 4);
int x;
int y;
uchar r, g, b;
for (y = 0; y < src->height; y++)
{
uchar *ptrSrc = (uchar*)(src->imageData + y * src->widthStep);
uchar *ptrDst = (uchar*)(dst->imageData + y * dst->widthStep);
for (x = 0; x < src->width; x++)
{
r = ptrSrc[3 * x];
g = ptrSrc[3 * x + 1];
b = ptrSrc[3 * x + 2];
ptrDst[4 * x] = r;
ptrDst[4 * x + 1] = g;
ptrDst[4 * x + 2] = b;
if (255 == r && 255 == g && 255 == b)//白色部分为透明
ptrDst[4 * x + 3] = 0;
else
ptrDst[4 * x + 3] = 255;
}
}
m_p4Channel = dst;
if (m_p4Channel)
{
CvvImage img;
img.CopyOf(m_p4Channel, 4);//---------------------这里出问题了。
CRect rc4Channel(0, 0, img.Width(), img.Height());
img.DrawToHDC(memDC.GetSafeHdc(), &m_rcCropDst);
}