Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/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
Image processing DirectX和OpenCV_Image Processing_Opencv_Iplimage - Fatal编程技术网

Image processing DirectX和OpenCV

Image processing DirectX和OpenCV,image-processing,opencv,iplimage,Image Processing,Opencv,Iplimage,所以我已经编写了一个程序,它可以从网络摄像头中捕获图像,并将其转换成一个名为pBuffer的向量。 我可以轻松访问每个像素的RGB像素信息,只需 pBuffer[i]=R;pBuffer[i+1]=G;缓冲区[i+2]=B. 这里没问题 下一步是创建一个IplImage*img,并用pBuffer的信息填充它…某种SetPixel web上有一个SetPixel函数,即: (((uchar*)(image­>imageData + image­>widthStep*(y))))[x 

所以我已经编写了一个程序,它可以从网络摄像头中捕获图像,并将其转换成一个名为pBuffer的向量。 我可以轻松访问每个像素的RGB像素信息,只需

pBuffer[i]=R;pBuffer[i+1]=G;缓冲区[i+2]=B.

这里没问题

下一步是创建一个IplImage*img,并用pBuffer的信息填充它…某种SetPixel

web上有一个SetPixel函数,即:

(((uchar*)(image­>imageData + image­>widthStep*(y))))[x * image­>nChannels + channel] = (uchar)value;

其中,值是pBuffer信息,x和y是像素坐标。但是,我无法将其付诸实施。有什么想法吗??我用C++工作。

你想做的事情你可以这样做(假设宽度和高度是图像的尺寸):


pBuffer中的数据是BYTE,但是我可以访问它,因为intBYTE是unsigned char的typedef,所以您可以安全地将其强制转换为char。因此它变成了:ipl_image_p->imageData=(char*)pBuffer;哥们,它起作用了…但是在IplImage中创建的图像是颠倒的…知道为什么吗?我不确定。但您可以尝试更改ipl_image_p->origin。它应该是0或1。两种方法都试一下,看看会发生什么。尽管如此,我还是做了很多……我在写我的主语thesys,这首歌已经困扰了我一段时间了。顺便问一下,你在哪里学过OpenCV和IplImage?通过一些书?
CvSize size;
size.height = height;
size.width = width;
IplImage* ipl_image_p = cvCreateImage(size, IPL_DEPTH_8U, 3);

for (int y = 0; y < height; ++y)
    for (int x = 0; x < width; ++x)
        for (int channel = 0; channel < 3; ++channel)
            *(ipl_image_p->imageData + ipl_image_p->widthStep * y + x * ipl_image_p->nChannels + channel) = pBuffer[x*y*3+channel];
CvSize size;
size.height = height ;
size.width = width;
IplImage* ipl_image_p = cvCreateImageHeader(size, IPL_DEPTH_8U, 3);
ipl_image_p->imageData = pBuffer;
ipl_image_p->imageDataOrigin = ipl_image_p->imageData;