<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Intel IPP PCA RGB Image Subtraction in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Intel-IPP-PCA-RGB-Image-Subtraction/m-p/967468#M20302</link>
    <description>&lt;DIV&gt;Hi,&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;I am developing a motion tracking application on an IPAQ H3970 with Windows CE. The camera that I am using for the application is LifeView FlyCAM-CF (350k). &lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;When I subtract one RGB image from another using the ippiSub_8u_C3RSfs function, the resultant image is divided into 3. That is I can see the same subtracted image three times in the same video frame. Even when I save the resultant image as a bitmap file, it still shows as three.&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Below is a snippet of my code. Please suggest a way to rectify this.&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Thank you.&lt;/DIV&gt;
&lt;DIV&gt;Ankit Garg&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;//Global variables&lt;BR /&gt;intg_prexsize=160;&lt;BR /&gt;intg_preysize=120;&lt;BR /&gt;intg_Capxsize=320;&lt;BR /&gt;intg_Capysize=240;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;//Structure Definition Used&lt;BR /&gt;struct RGB_Struct&lt;BR /&gt;{&lt;BR /&gt;short width;&lt;BR /&gt;short height;&lt;BR /&gt;UINT8 *rgb;&lt;BR /&gt;};&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;//The function below takes two consecutive captures from the video and subtracts them&lt;BR /&gt;RGB_Struct *RGB1Temp, *RGB2Temp, *RGB3Temp;&lt;BR /&gt;RGB_Struct *g_pRGB2Out, *g_pRGB2Temp, *g_pRGB1Out, *g_pRGB1Temp;&lt;BR /&gt;unsigned char *pRGB1Temp, *pg_pRGB1Temp, *pRGB2Temp, *pg_pRGB2Temp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;SetCursor(LoadCursor(NULL, IDC_WAIT));&lt;BR /&gt;PreviewStop(hWnd);&lt;/DIV&gt;
&lt;DIV&gt;g_pRGB1Out = (RGB_Struct *) AllocFileRGB(g_Capxsize, g_Capysize);&lt;BR /&gt;g_pRGB1Temp = (RGB_Struct *) AllocFileRGB( g_Capysize,g_Capxsize);&lt;BR /&gt;RGB1Temp = (RGB_Struct *) AllocFileRGB( g_Capysize,g_Capxsize);&lt;/DIV&gt;
&lt;DIV&gt;PlaySound(L"&lt;A target="_blank"&gt;\Program&lt;/A&gt; Files\FlyCAM-CF Tools\CAMERA.WAV", NULL, SND_SYNC);&lt;/DIV&gt;
&lt;DIV&gt;Capture_A_Frame((unsigned char *)g_pRGB1Out-&amp;gt;rgb, &amp;amp;dSize);&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;ShowRGB(hWnd, g_pRGB1Out);&lt;BR /&gt;Sleep(1000);&lt;/DIV&gt;
&lt;DIV&gt;pRGB1Temp=RGB1Temp-&amp;gt;rgb;&lt;BR /&gt;for(y=g_Capxsize-1;y&amp;gt;=0;y--)&lt;BR /&gt;{&lt;BR /&gt;pg_pRGB1Temp=g_pRGB1Temp-&amp;gt;rgb+y*g_Capysize*3;&lt;BR /&gt;for(x=0;x&lt;G_CAPYSIZE&gt;{&lt;BR /&gt;*pRGB1Temp++=*pg_pRGB1Temp++;&lt;BR /&gt;*pRGB1Temp++=*pg_pRGB1Temp++;&lt;BR /&gt;*pRGB1Temp++=*pg_pRGB1Temp++;&lt;BR /&gt;}&lt;BR /&gt;}&lt;/G_CAPYSIZE&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;const Ipp8u *pSrc1 = (Ipp8u *)(g_pRGB1Out-&amp;gt;rgb);&lt;BR /&gt;int src1Step = 720;&lt;BR /&gt;IppiSize roiSize = {240, 320};&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;SetCursor(NULL);&lt;BR /&gt;PreviewStart2(hWnd);&lt;/DIV&gt;
&lt;DIV&gt;SetCursor(LoadCursor(NULL, IDC_WAIT));&lt;BR /&gt;PreviewStop(hWnd);&lt;/DIV&gt;
&lt;DIV&gt;g_pRGB2Out = (RGB_Struct *) AllocFileRGB(g_Capxsize, g_Capysize);&lt;BR /&gt;g_pRGB2Temp = (RGB_Struct *) AllocFileRGB( g_Capysize,g_Capxsize);&lt;BR /&gt;RGB2Temp = (RGB_Struct *) AllocFileRGB( g_Capysize,g_Capxsize);&lt;BR /&gt;RGB3Temp = (RGB_Struct *) AllocFileRGB( g_Capysize,g_Capxsize);&lt;BR /&gt;&lt;BR /&gt;PlaySound(L"&lt;A target="_blank"&gt;\Program&lt;/A&gt; Files\FlyCAM-CF Tools\CAMERA.WAV", NULL, SND_SYNC);&lt;/DIV&gt;
&lt;DIV&gt;Capture_A_Frame((unsigned char *)g_pRGB2Out-&amp;gt;rgb, &amp;amp;dSize);&lt;/DIV&gt;
&lt;DIV&gt;pRGB2Temp=RGB2Temp-&amp;gt;rgb;&lt;BR /&gt;for(y=g_Capxsize-1;y&amp;gt;=0;y--)&lt;BR /&gt;{&lt;BR /&gt;pg_pRGB2Temp=g_pRGB2Temp-&amp;gt;rgb+y*g_Capysize*3;&lt;BR /&gt;for(x=0;x&lt;G_CAPYSIZE&gt;{&lt;BR /&gt;*pRGB2Temp++=*pg_pRGB2Temp++;&lt;BR /&gt;*pRGB2Temp++=*pg_pRGB2Temp++;&lt;BR /&gt;*pRGB2Temp++=*pg_pRGB2Temp++;&lt;BR /&gt;}&lt;BR /&gt;}&lt;/G_CAPYSIZE&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;ShowRGB(hWnd, g_pRGB2Out);&lt;BR /&gt;Sleep(2000);&lt;/DIV&gt;
&amp;lt;
DIV&amp;gt;&lt;BR /&gt;const Ipp8u *pSrc2 = (const Ipp8u*)(g_pRGB2Out-&amp;gt;rgb);&lt;BR /&gt;//Ipp8u *pDst;&lt;BR /&gt;Ipp8u *pDst = (Ipp8u*)(RGB3Temp-&amp;gt;rgb);&lt;BR /&gt;int src2Step = 720;&lt;BR /&gt;int dstStep = 720;&lt;BR /&gt;int scaleFactor = 1;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;// Subtracts the 2 images here&lt;BR /&gt;ippiSub_8u_C3RSfs(pSrc1, src1Step, pSrc2, src2Step, pDst, dstStep, roiSize, scaleFactor); &lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;// The subtracted image is displayed below as 3 copies in a frame&lt;BR /&gt;ShowRGB(hWnd, RGB3Temp);&lt;BR /&gt;Sleep(5000);&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;SetCursor(NULL);&lt;BR /&gt; FreeFileRGB(RGB1Temp);&lt;BR /&gt;FreeFileRGB(RGB2Temp);&lt;BR /&gt;FreeFileRGB(RGB3Temp);&lt;BR /&gt;FreeFileRGB(g_pRGB1Out);&lt;BR /&gt;FreeFileRGB(g_pRGB1Temp);&lt;BR /&gt;FreeFileRGB(g_pRGB2Out);&lt;BR /&gt;FreeFileRGB(g_pRGB2Temp);&lt;/DIV&gt;
&lt;DIV&gt;PreviewStart(hWnd);&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;// Displays the image to the screen&lt;BR /&gt;BOOL ShowRGB (HWND hWnd, RGB_Struct *pRGB)&lt;BR /&gt;{&lt;BR /&gt;HDC hDC, hDCMem;&lt;BR /&gt;HGDIOBJ hOldObject;&lt;BR /&gt;HBITMAP hBitmap;&lt;/DIV&gt;
&lt;DIV&gt;if (!pRGB-&amp;gt;rgb || pRGB-&amp;gt;width&amp;lt;=0 || pRGB-&amp;gt;height&amp;lt;=0)&lt;BR /&gt;return FALSE;&lt;/DIV&gt;
&lt;DIV&gt;/*&lt;BR /&gt;if ( (g_prexsize==160) &amp;amp;&amp;amp; (g_preysize==120) )&lt;BR /&gt;{&lt;BR /&gt;// o Device Context&lt;BR /&gt;if (!(hDC=GetDC(hWnd)))&lt;BR /&gt;return FALSE;&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;// o Device Context&lt;BR /&gt;if (!(hDC=GetDC(NULL)))&lt;BR /&gt;return FALSE;&lt;BR /&gt;}&lt;BR /&gt;*/&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;// o Device Context&lt;BR /&gt;if (!(hDC=GetDC(hWnd)))&lt;BR /&gt;return FALSE;&lt;/DIV&gt;
&lt;DIV&gt;//  compatible DC&lt;BR /&gt;hDCMem = CreateCompatibleDC(hDC);&lt;BR /&gt;if (!hDCMem)&lt;BR /&gt;return FALSE;&lt;/DIV&gt;
&lt;DIV&gt;//  bitmap handle&lt;BR /&gt;if ((hBitmap = CreateBitmap(pRGB-&amp;gt;width, pRGB-&amp;gt;height, 1, 24, pRGB-&amp;gt;rgb)) == NULL)&lt;BR /&gt;{&lt;BR /&gt;g_MainWindowInactiveDoNotClose=TRUE;&lt;BR /&gt;MessageBox( NULL, TEXT("CreateBitmap ERROR!"), NULL, NULL);&lt;BR /&gt;g_MainWindowInactiveDoNotClose=FALSE;&lt;/DIV&gt;
&lt;DIV&gt;return FALSE;&lt;BR /&gt;}&lt;/DIV&gt;
&lt;DIV&gt;// select object&lt;BR /&gt;if ((hOldObject=SelectObject(hDCMem, hBitmap)) == NULL)&lt;BR /&gt;{&lt;BR /&gt;g_MainWindowInactiveDoNotClose=TRUE;&lt;BR /&gt;MessageBox( NULL, TEXT("SelectObject ERROR!"), NULL, NULL);&lt;BR /&gt;g_MainWindowInactiveDoNotClose=FALSE;&lt;/DIV&gt;
&lt;DIV&gt;return FALSE;&lt;BR /&gt;}&lt;/DIV&gt;
&lt;DIV&gt;if (!BitBlt(hDC, g_preysize==120 ? 60 : 0 ,&lt;BR /&gt; g_preysize==120 ? 5: 0 ,&lt;BR /&gt; pRGB-&amp;gt;width, pRGB-&amp;gt;height, hDCMem, 0, 0, SRCCOPY)) //SRCCOPY&lt;BR /&gt;return FALSE;&lt;/DIV&gt;
&lt;DIV&gt;SelectObject(hDCMem,hOldObject);&lt;BR /&gt;DeleteObject(hBitmap);&lt;BR /&gt;DeleteDC(hDCMem);&lt;BR /&gt;ReleaseDC (hWnd, hDC);&lt;/DIV&gt;
&lt;DIV&gt;return TRUE;&lt;BR /&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;//Fills up the RGB_Struct&lt;BR /&gt;VOID *AllocFileRGB(short width, short height)&lt;BR /&gt;{&lt;BR /&gt;RGB_Struct *pRGB;&lt;BR /&gt;&lt;BR /&gt;pRGB = new RGB_Struct;&lt;BR /&gt;pRGB-&amp;gt;width = width;&lt;BR /&gt;pRGB-&amp;gt;height = height;&lt;BR /&gt;pRGB-&amp;gt;rgb = (UINT8 *) malloc(width*height*3 * sizeof(UINT8));&lt;BR /&gt;return (RGB_Struct *) pRGB;&lt;BR /&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;//Frees the memory allocated to RGB_Struct&lt;BR /&gt;void FreeFileRGB(RGB_Struct *pRGB)&lt;BR /&gt;{&lt;BR /&gt;if (pRGB-&amp;gt;rgb)&lt;BR /&gt;{&lt;BR /&gt;free((void *) pRGB-&amp;gt;rgb);&lt;BR /&gt;pRGB-&amp;gt;rgb = NULL;&lt;BR /&gt;}&lt;/DIV&gt;
&lt;DIV&gt;if (pRGB)&lt;BR /&gt;{&lt;BR /&gt;free((void *) pRGB);&lt;BR /&gt;pRGB = NULL;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;&lt;/DIV&gt;</description>
    <pubDate>Wed, 10 Mar 2004 18:33:59 GMT</pubDate>
    <dc:creator>gargankit28</dc:creator>
    <dc:date>2004-03-10T18:33:59Z</dc:date>
    <item>
      <title>Intel IPP PCA RGB Image Subtraction</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Intel-IPP-PCA-RGB-Image-Subtraction/m-p/967468#M20302</link>
      <description>&lt;DIV&gt;Hi,&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;I am developing a motion tracking application on an IPAQ H3970 with Windows CE. The camera that I am using for the application is LifeView FlyCAM-CF (350k). &lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;When I subtract one RGB image from another using the ippiSub_8u_C3RSfs function, the resultant image is divided into 3. That is I can see the same subtracted image three times in the same video frame. Even when I save the resultant image as a bitmap file, it still shows as three.&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Below is a snippet of my code. Please suggest a way to rectify this.&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Thank you.&lt;/DIV&gt;
&lt;DIV&gt;Ankit Garg&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;//Global variables&lt;BR /&gt;intg_prexsize=160;&lt;BR /&gt;intg_preysize=120;&lt;BR /&gt;intg_Capxsize=320;&lt;BR /&gt;intg_Capysize=240;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;//Structure Definition Used&lt;BR /&gt;struct RGB_Struct&lt;BR /&gt;{&lt;BR /&gt;short width;&lt;BR /&gt;short height;&lt;BR /&gt;UINT8 *rgb;&lt;BR /&gt;};&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;//The function below takes two consecutive captures from the video and subtracts them&lt;BR /&gt;RGB_Struct *RGB1Temp, *RGB2Temp, *RGB3Temp;&lt;BR /&gt;RGB_Struct *g_pRGB2Out, *g_pRGB2Temp, *g_pRGB1Out, *g_pRGB1Temp;&lt;BR /&gt;unsigned char *pRGB1Temp, *pg_pRGB1Temp, *pRGB2Temp, *pg_pRGB2Temp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;SetCursor(LoadCursor(NULL, IDC_WAIT));&lt;BR /&gt;PreviewStop(hWnd);&lt;/DIV&gt;
&lt;DIV&gt;g_pRGB1Out = (RGB_Struct *) AllocFileRGB(g_Capxsize, g_Capysize);&lt;BR /&gt;g_pRGB1Temp = (RGB_Struct *) AllocFileRGB( g_Capysize,g_Capxsize);&lt;BR /&gt;RGB1Temp = (RGB_Struct *) AllocFileRGB( g_Capysize,g_Capxsize);&lt;/DIV&gt;
&lt;DIV&gt;PlaySound(L"&lt;A target="_blank"&gt;\Program&lt;/A&gt; Files\FlyCAM-CF Tools\CAMERA.WAV", NULL, SND_SYNC);&lt;/DIV&gt;
&lt;DIV&gt;Capture_A_Frame((unsigned char *)g_pRGB1Out-&amp;gt;rgb, &amp;amp;dSize);&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;ShowRGB(hWnd, g_pRGB1Out);&lt;BR /&gt;Sleep(1000);&lt;/DIV&gt;
&lt;DIV&gt;pRGB1Temp=RGB1Temp-&amp;gt;rgb;&lt;BR /&gt;for(y=g_Capxsize-1;y&amp;gt;=0;y--)&lt;BR /&gt;{&lt;BR /&gt;pg_pRGB1Temp=g_pRGB1Temp-&amp;gt;rgb+y*g_Capysize*3;&lt;BR /&gt;for(x=0;x&lt;G_CAPYSIZE&gt;{&lt;BR /&gt;*pRGB1Temp++=*pg_pRGB1Temp++;&lt;BR /&gt;*pRGB1Temp++=*pg_pRGB1Temp++;&lt;BR /&gt;*pRGB1Temp++=*pg_pRGB1Temp++;&lt;BR /&gt;}&lt;BR /&gt;}&lt;/G_CAPYSIZE&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;const Ipp8u *pSrc1 = (Ipp8u *)(g_pRGB1Out-&amp;gt;rgb);&lt;BR /&gt;int src1Step = 720;&lt;BR /&gt;IppiSize roiSize = {240, 320};&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;SetCursor(NULL);&lt;BR /&gt;PreviewStart2(hWnd);&lt;/DIV&gt;
&lt;DIV&gt;SetCursor(LoadCursor(NULL, IDC_WAIT));&lt;BR /&gt;PreviewStop(hWnd);&lt;/DIV&gt;
&lt;DIV&gt;g_pRGB2Out = (RGB_Struct *) AllocFileRGB(g_Capxsize, g_Capysize);&lt;BR /&gt;g_pRGB2Temp = (RGB_Struct *) AllocFileRGB( g_Capysize,g_Capxsize);&lt;BR /&gt;RGB2Temp = (RGB_Struct *) AllocFileRGB( g_Capysize,g_Capxsize);&lt;BR /&gt;RGB3Temp = (RGB_Struct *) AllocFileRGB( g_Capysize,g_Capxsize);&lt;BR /&gt;&lt;BR /&gt;PlaySound(L"&lt;A target="_blank"&gt;\Program&lt;/A&gt; Files\FlyCAM-CF Tools\CAMERA.WAV", NULL, SND_SYNC);&lt;/DIV&gt;
&lt;DIV&gt;Capture_A_Frame((unsigned char *)g_pRGB2Out-&amp;gt;rgb, &amp;amp;dSize);&lt;/DIV&gt;
&lt;DIV&gt;pRGB2Temp=RGB2Temp-&amp;gt;rgb;&lt;BR /&gt;for(y=g_Capxsize-1;y&amp;gt;=0;y--)&lt;BR /&gt;{&lt;BR /&gt;pg_pRGB2Temp=g_pRGB2Temp-&amp;gt;rgb+y*g_Capysize*3;&lt;BR /&gt;for(x=0;x&lt;G_CAPYSIZE&gt;{&lt;BR /&gt;*pRGB2Temp++=*pg_pRGB2Temp++;&lt;BR /&gt;*pRGB2Temp++=*pg_pRGB2Temp++;&lt;BR /&gt;*pRGB2Temp++=*pg_pRGB2Temp++;&lt;BR /&gt;}&lt;BR /&gt;}&lt;/G_CAPYSIZE&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;ShowRGB(hWnd, g_pRGB2Out);&lt;BR /&gt;Sleep(2000);&lt;/DIV&gt;
&amp;lt;
DIV&amp;gt;&lt;BR /&gt;const Ipp8u *pSrc2 = (const Ipp8u*)(g_pRGB2Out-&amp;gt;rgb);&lt;BR /&gt;//Ipp8u *pDst;&lt;BR /&gt;Ipp8u *pDst = (Ipp8u*)(RGB3Temp-&amp;gt;rgb);&lt;BR /&gt;int src2Step = 720;&lt;BR /&gt;int dstStep = 720;&lt;BR /&gt;int scaleFactor = 1;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;// Subtracts the 2 images here&lt;BR /&gt;ippiSub_8u_C3RSfs(pSrc1, src1Step, pSrc2, src2Step, pDst, dstStep, roiSize, scaleFactor); &lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;// The subtracted image is displayed below as 3 copies in a frame&lt;BR /&gt;ShowRGB(hWnd, RGB3Temp);&lt;BR /&gt;Sleep(5000);&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;SetCursor(NULL);&lt;BR /&gt; FreeFileRGB(RGB1Temp);&lt;BR /&gt;FreeFileRGB(RGB2Temp);&lt;BR /&gt;FreeFileRGB(RGB3Temp);&lt;BR /&gt;FreeFileRGB(g_pRGB1Out);&lt;BR /&gt;FreeFileRGB(g_pRGB1Temp);&lt;BR /&gt;FreeFileRGB(g_pRGB2Out);&lt;BR /&gt;FreeFileRGB(g_pRGB2Temp);&lt;/DIV&gt;
&lt;DIV&gt;PreviewStart(hWnd);&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;// Displays the image to the screen&lt;BR /&gt;BOOL ShowRGB (HWND hWnd, RGB_Struct *pRGB)&lt;BR /&gt;{&lt;BR /&gt;HDC hDC, hDCMem;&lt;BR /&gt;HGDIOBJ hOldObject;&lt;BR /&gt;HBITMAP hBitmap;&lt;/DIV&gt;
&lt;DIV&gt;if (!pRGB-&amp;gt;rgb || pRGB-&amp;gt;width&amp;lt;=0 || pRGB-&amp;gt;height&amp;lt;=0)&lt;BR /&gt;return FALSE;&lt;/DIV&gt;
&lt;DIV&gt;/*&lt;BR /&gt;if ( (g_prexsize==160) &amp;amp;&amp;amp; (g_preysize==120) )&lt;BR /&gt;{&lt;BR /&gt;// o Device Context&lt;BR /&gt;if (!(hDC=GetDC(hWnd)))&lt;BR /&gt;return FALSE;&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;// o Device Context&lt;BR /&gt;if (!(hDC=GetDC(NULL)))&lt;BR /&gt;return FALSE;&lt;BR /&gt;}&lt;BR /&gt;*/&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;// o Device Context&lt;BR /&gt;if (!(hDC=GetDC(hWnd)))&lt;BR /&gt;return FALSE;&lt;/DIV&gt;
&lt;DIV&gt;//  compatible DC&lt;BR /&gt;hDCMem = CreateCompatibleDC(hDC);&lt;BR /&gt;if (!hDCMem)&lt;BR /&gt;return FALSE;&lt;/DIV&gt;
&lt;DIV&gt;//  bitmap handle&lt;BR /&gt;if ((hBitmap = CreateBitmap(pRGB-&amp;gt;width, pRGB-&amp;gt;height, 1, 24, pRGB-&amp;gt;rgb)) == NULL)&lt;BR /&gt;{&lt;BR /&gt;g_MainWindowInactiveDoNotClose=TRUE;&lt;BR /&gt;MessageBox( NULL, TEXT("CreateBitmap ERROR!"), NULL, NULL);&lt;BR /&gt;g_MainWindowInactiveDoNotClose=FALSE;&lt;/DIV&gt;
&lt;DIV&gt;return FALSE;&lt;BR /&gt;}&lt;/DIV&gt;
&lt;DIV&gt;// select object&lt;BR /&gt;if ((hOldObject=SelectObject(hDCMem, hBitmap)) == NULL)&lt;BR /&gt;{&lt;BR /&gt;g_MainWindowInactiveDoNotClose=TRUE;&lt;BR /&gt;MessageBox( NULL, TEXT("SelectObject ERROR!"), NULL, NULL);&lt;BR /&gt;g_MainWindowInactiveDoNotClose=FALSE;&lt;/DIV&gt;
&lt;DIV&gt;return FALSE;&lt;BR /&gt;}&lt;/DIV&gt;
&lt;DIV&gt;if (!BitBlt(hDC, g_preysize==120 ? 60 : 0 ,&lt;BR /&gt; g_preysize==120 ? 5: 0 ,&lt;BR /&gt; pRGB-&amp;gt;width, pRGB-&amp;gt;height, hDCMem, 0, 0, SRCCOPY)) //SRCCOPY&lt;BR /&gt;return FALSE;&lt;/DIV&gt;
&lt;DIV&gt;SelectObject(hDCMem,hOldObject);&lt;BR /&gt;DeleteObject(hBitmap);&lt;BR /&gt;DeleteDC(hDCMem);&lt;BR /&gt;ReleaseDC (hWnd, hDC);&lt;/DIV&gt;
&lt;DIV&gt;return TRUE;&lt;BR /&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;//Fills up the RGB_Struct&lt;BR /&gt;VOID *AllocFileRGB(short width, short height)&lt;BR /&gt;{&lt;BR /&gt;RGB_Struct *pRGB;&lt;BR /&gt;&lt;BR /&gt;pRGB = new RGB_Struct;&lt;BR /&gt;pRGB-&amp;gt;width = width;&lt;BR /&gt;pRGB-&amp;gt;height = height;&lt;BR /&gt;pRGB-&amp;gt;rgb = (UINT8 *) malloc(width*height*3 * sizeof(UINT8));&lt;BR /&gt;return (RGB_Struct *) pRGB;&lt;BR /&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;//Frees the memory allocated to RGB_Struct&lt;BR /&gt;void FreeFileRGB(RGB_Struct *pRGB)&lt;BR /&gt;{&lt;BR /&gt;if (pRGB-&amp;gt;rgb)&lt;BR /&gt;{&lt;BR /&gt;free((void *) pRGB-&amp;gt;rgb);&lt;BR /&gt;pRGB-&amp;gt;rgb = NULL;&lt;BR /&gt;}&lt;/DIV&gt;
&lt;DIV&gt;if (pRGB)&lt;BR /&gt;{&lt;BR /&gt;free((void *) pRGB);&lt;BR /&gt;pRGB = NULL;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 10 Mar 2004 18:33:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Intel-IPP-PCA-RGB-Image-Subtraction/m-p/967468#M20302</guid>
      <dc:creator>gargankit28</dc:creator>
      <dc:date>2004-03-10T18:33:59Z</dc:date>
    </item>
    <item>
      <title>Re: Intel IPP PCA RGB Image Subtraction</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Intel-IPP-PCA-RGB-Image-Subtraction/m-p/967469#M20303</link>
      <description>&lt;DIV&gt;Dear Customer,&lt;/DIV&gt;
&lt;DIV&gt;Could you please submit this issue through our Intel Premier Support at &lt;A href="https://premier.intel.com" target="_blank"&gt;https://premier.intel.com&lt;/A&gt; and our support engineer will look into your issue?&lt;BR /&gt;&lt;BR /&gt;Thanks,&lt;BR /&gt;Ying &lt;BR /&gt;Intel IPP&lt;/DIV&gt;</description>
      <pubDate>Tue, 16 Mar 2004 03:04:21 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Intel-IPP-PCA-RGB-Image-Subtraction/m-p/967469#M20303</guid>
      <dc:creator>Ying_S_Intel</dc:creator>
      <dc:date>2004-03-16T03:04:21Z</dc:date>
    </item>
  </channel>
</rss>

