<?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 Opencv - cvShowImage - shows the image distorted in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Opencv-cvShowImage-shows-the-image-distorted/m-p/803807#M3438</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I have witten a program to read an uchar image, convert it into float, extend border with additional pixels (LTB - Left Top Border, RBB - right bottom border) for further operations (I haven't included that) and convert resulting float image back to uchar image for showing/saving. When i try to show.save using opencv calls, I get the image distorted as follows:&lt;/P&gt;&lt;P&gt;Code&lt;/P&gt;&lt;P&gt;#include &lt;STDIO.H&gt;&lt;BR /&gt;&lt;BR /&gt;#include &lt;CV.H&gt;&lt;BR /&gt;#include &lt;HIGHGUI.H&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;#define LTB 30&lt;BR /&gt;#define RBB 20&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;void convert_datatype_uchartofloat(IplImage* image_source, IplImage* image_converted);&lt;BR /&gt;void convert_datatype_floattouchar(IplImage* image_source, IplImage* image_converted);&lt;BR /&gt;void border_extend(IplImage* image_src, IplImage* image_extended,&lt;BR /&gt;                   int lefttopborder, int rightbottomborder);&lt;BR /&gt;&lt;BR /&gt;int main()&lt;BR /&gt;{&lt;BR /&gt;    IplImage* image_src;&lt;BR /&gt;    IplImage* image_converted;&lt;BR /&gt;    IplImage* image_extended;&lt;BR /&gt;    IplImage* image_show;&lt;BR /&gt;    CvSize size_src;&lt;BR /&gt;    CvSize size_show;&lt;BR /&gt;    CvSize size_extended;&lt;BR /&gt;&lt;BR /&gt;    image_src = cvLoadImage("2012-02-21-190911.jpg",CV_LOAD_IMAGE_GRAYSCALE);&lt;BR /&gt;    size_src = cvGetSize(image_src);&lt;BR /&gt;&lt;BR /&gt;    image_converted = cvCreateImage(size_src, IPL_DEPTH_32F, 1);&lt;BR /&gt;    convert_datatype_uchartofloat(image_src, image_converted);&lt;BR /&gt;&lt;BR /&gt;    size_extended.width = LTB + size_src.width + RBB;&lt;BR /&gt;    size_extended.height = LTB + size_src.height + RBB;&lt;BR /&gt;    image_extended = cvCreateImage(size_extended, IPL_DEPTH_32F, 1);&lt;BR /&gt;    border_extend(image_converted, image_extended, LTB, RBB);&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;    size_show.width = size_extended.width;&lt;BR /&gt;    size_show.height = size_extended.height;&lt;BR /&gt;    image_show = cvCreateImage(size_show, IPL_DEPTH_8U, 1);&lt;BR /&gt;    convert_datatype_floattouchar(image_extended, image_show);&lt;BR /&gt;&lt;BR /&gt;    cvNamedWindow("image_extended", 1);&lt;BR /&gt;    cvShowImage("image_extended", image_show);&lt;BR /&gt;&lt;BR /&gt;    cvWaitKey(0);&lt;BR /&gt;&lt;BR /&gt;    cvReleaseImage(&amp;amp;image_src);&lt;BR /&gt;    cvReleaseImage(&amp;amp;image_converted);&lt;BR /&gt;    cvReleaseImage(&amp;amp;image_extended);&lt;BR /&gt;    cvReleaseImage(&amp;amp;image_show);&lt;BR /&gt;&lt;BR /&gt;    cvDestroyWindow("image_extended");&lt;BR /&gt;&lt;BR /&gt;    return 0;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;void convert_datatype_uchartofloat(IplImage* image_source, IplImage* image_converted)&lt;BR /&gt;{&lt;BR /&gt;    int i;&lt;BR /&gt;&lt;BR /&gt;    uchar* src_ptr;&lt;BR /&gt;    float* dst_ptr;&lt;BR /&gt;&lt;BR /&gt;    src_ptr = (uchar* )image_source-&amp;gt;imageData;&lt;BR /&gt;    dst_ptr = (float* )image_converted-&amp;gt;imageData;&lt;BR /&gt;&lt;BR /&gt;    for (i = 0; i &amp;lt; (image_source-&amp;gt;width * image_source-&amp;gt;height); i++)&lt;BR /&gt;        dst_ptr&lt;I&gt; = (float )(src_ptr&lt;I&gt;);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;void convert_datatype_floattouchar(IplImage* image_source, IplImage* image_converted)&lt;BR /&gt;{&lt;BR /&gt;    int i;&lt;BR /&gt;&lt;BR /&gt;    float* src_ptr;&lt;BR /&gt;    uchar* dst_ptr;&lt;BR /&gt;&lt;BR /&gt;    src_ptr = (float* )image_source-&amp;gt;imageData;&lt;BR /&gt;    dst_ptr = (uchar* )image_converted-&amp;gt;imageData;&lt;BR /&gt;&lt;BR /&gt;    for (i = 0; i &amp;lt; (image_source-&amp;gt;width * image_source-&amp;gt;height); i++)&lt;BR /&gt;        dst_ptr&lt;I&gt; = (uchar )(src_ptr&lt;I&gt;);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;void border_extend(IplImage* image_src, IplImage* image_extended,&lt;BR /&gt;                   int lefttopborder, int rightbottomborder)&lt;BR /&gt;{&lt;BR /&gt;  &lt;BR /&gt;    CvRect ROI_extended;&lt;BR /&gt;&lt;BR /&gt;    ROI_extended.x = lefttopborder;&lt;BR /&gt;    ROI_extended.y = lefttopborder;&lt;BR /&gt;    ROI_extended.width = image_src-&amp;gt;width;&lt;BR /&gt;    ROI_extended.height = image_src-&amp;gt;height;&lt;BR /&gt;&lt;BR /&gt;    cvSetImageROI(image_extended, ROI_extended);&lt;BR /&gt;    cvCopyImage(image_src, image_extended);&lt;BR /&gt;    cvResetImageROI(image_extended);&lt;BR /&gt;}&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/HIGHGUI.H&gt;&lt;/CV.H&gt;&lt;/STDIO.H&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For particular values of LTB and RBB, I get proper Output&lt;/P&gt;&lt;P&gt;(like 10, 10 , etc.,) . I need help regarding this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;</description>
    <pubDate>Wed, 22 Feb 2012 10:45:49 GMT</pubDate>
    <dc:creator>instrukarthik</dc:creator>
    <dc:date>2012-02-22T10:45:49Z</dc:date>
    <item>
      <title>Opencv - cvShowImage - shows the image distorted</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Opencv-cvShowImage-shows-the-image-distorted/m-p/803807#M3438</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I have witten a program to read an uchar image, convert it into float, extend border with additional pixels (LTB - Left Top Border, RBB - right bottom border) for further operations (I haven't included that) and convert resulting float image back to uchar image for showing/saving. When i try to show.save using opencv calls, I get the image distorted as follows:&lt;/P&gt;&lt;P&gt;Code&lt;/P&gt;&lt;P&gt;#include &lt;STDIO.H&gt;&lt;BR /&gt;&lt;BR /&gt;#include &lt;CV.H&gt;&lt;BR /&gt;#include &lt;HIGHGUI.H&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;#define LTB 30&lt;BR /&gt;#define RBB 20&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;void convert_datatype_uchartofloat(IplImage* image_source, IplImage* image_converted);&lt;BR /&gt;void convert_datatype_floattouchar(IplImage* image_source, IplImage* image_converted);&lt;BR /&gt;void border_extend(IplImage* image_src, IplImage* image_extended,&lt;BR /&gt;                   int lefttopborder, int rightbottomborder);&lt;BR /&gt;&lt;BR /&gt;int main()&lt;BR /&gt;{&lt;BR /&gt;    IplImage* image_src;&lt;BR /&gt;    IplImage* image_converted;&lt;BR /&gt;    IplImage* image_extended;&lt;BR /&gt;    IplImage* image_show;&lt;BR /&gt;    CvSize size_src;&lt;BR /&gt;    CvSize size_show;&lt;BR /&gt;    CvSize size_extended;&lt;BR /&gt;&lt;BR /&gt;    image_src = cvLoadImage("2012-02-21-190911.jpg",CV_LOAD_IMAGE_GRAYSCALE);&lt;BR /&gt;    size_src = cvGetSize(image_src);&lt;BR /&gt;&lt;BR /&gt;    image_converted = cvCreateImage(size_src, IPL_DEPTH_32F, 1);&lt;BR /&gt;    convert_datatype_uchartofloat(image_src, image_converted);&lt;BR /&gt;&lt;BR /&gt;    size_extended.width = LTB + size_src.width + RBB;&lt;BR /&gt;    size_extended.height = LTB + size_src.height + RBB;&lt;BR /&gt;    image_extended = cvCreateImage(size_extended, IPL_DEPTH_32F, 1);&lt;BR /&gt;    border_extend(image_converted, image_extended, LTB, RBB);&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;    size_show.width = size_extended.width;&lt;BR /&gt;    size_show.height = size_extended.height;&lt;BR /&gt;    image_show = cvCreateImage(size_show, IPL_DEPTH_8U, 1);&lt;BR /&gt;    convert_datatype_floattouchar(image_extended, image_show);&lt;BR /&gt;&lt;BR /&gt;    cvNamedWindow("image_extended", 1);&lt;BR /&gt;    cvShowImage("image_extended", image_show);&lt;BR /&gt;&lt;BR /&gt;    cvWaitKey(0);&lt;BR /&gt;&lt;BR /&gt;    cvReleaseImage(&amp;amp;image_src);&lt;BR /&gt;    cvReleaseImage(&amp;amp;image_converted);&lt;BR /&gt;    cvReleaseImage(&amp;amp;image_extended);&lt;BR /&gt;    cvReleaseImage(&amp;amp;image_show);&lt;BR /&gt;&lt;BR /&gt;    cvDestroyWindow("image_extended");&lt;BR /&gt;&lt;BR /&gt;    return 0;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;void convert_datatype_uchartofloat(IplImage* image_source, IplImage* image_converted)&lt;BR /&gt;{&lt;BR /&gt;    int i;&lt;BR /&gt;&lt;BR /&gt;    uchar* src_ptr;&lt;BR /&gt;    float* dst_ptr;&lt;BR /&gt;&lt;BR /&gt;    src_ptr = (uchar* )image_source-&amp;gt;imageData;&lt;BR /&gt;    dst_ptr = (float* )image_converted-&amp;gt;imageData;&lt;BR /&gt;&lt;BR /&gt;    for (i = 0; i &amp;lt; (image_source-&amp;gt;width * image_source-&amp;gt;height); i++)&lt;BR /&gt;        dst_ptr&lt;I&gt; = (float )(src_ptr&lt;I&gt;);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;void convert_datatype_floattouchar(IplImage* image_source, IplImage* image_converted)&lt;BR /&gt;{&lt;BR /&gt;    int i;&lt;BR /&gt;&lt;BR /&gt;    float* src_ptr;&lt;BR /&gt;    uchar* dst_ptr;&lt;BR /&gt;&lt;BR /&gt;    src_ptr = (float* )image_source-&amp;gt;imageData;&lt;BR /&gt;    dst_ptr = (uchar* )image_converted-&amp;gt;imageData;&lt;BR /&gt;&lt;BR /&gt;    for (i = 0; i &amp;lt; (image_source-&amp;gt;width * image_source-&amp;gt;height); i++)&lt;BR /&gt;        dst_ptr&lt;I&gt; = (uchar )(src_ptr&lt;I&gt;);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;void border_extend(IplImage* image_src, IplImage* image_extended,&lt;BR /&gt;                   int lefttopborder, int rightbottomborder)&lt;BR /&gt;{&lt;BR /&gt;  &lt;BR /&gt;    CvRect ROI_extended;&lt;BR /&gt;&lt;BR /&gt;    ROI_extended.x = lefttopborder;&lt;BR /&gt;    ROI_extended.y = lefttopborder;&lt;BR /&gt;    ROI_extended.width = image_src-&amp;gt;width;&lt;BR /&gt;    ROI_extended.height = image_src-&amp;gt;height;&lt;BR /&gt;&lt;BR /&gt;    cvSetImageROI(image_extended, ROI_extended);&lt;BR /&gt;    cvCopyImage(image_src, image_extended);&lt;BR /&gt;    cvResetImageROI(image_extended);&lt;BR /&gt;}&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/HIGHGUI.H&gt;&lt;/CV.H&gt;&lt;/STDIO.H&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For particular values of LTB and RBB, I get proper Output&lt;/P&gt;&lt;P&gt;(like 10, 10 , etc.,) . I need help regarding this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;</description>
      <pubDate>Wed, 22 Feb 2012 10:45:49 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Opencv-cvShowImage-shows-the-image-distorted/m-p/803807#M3438</guid>
      <dc:creator>instrukarthik</dc:creator>
      <dc:date>2012-02-22T10:45:49Z</dc:date>
    </item>
    <item>
      <title>Opencv - cvShowImage - shows the image distorted</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Opencv-cvShowImage-shows-the-image-distorted/m-p/803808#M3439</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Looks like you are not using any IPP functions; this forum is intended to discuss IPP related topics.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Naveen Gv&lt;/P&gt;</description>
      <pubDate>Wed, 22 Feb 2012 10:52:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Opencv-cvShowImage-shows-the-image-distorted/m-p/803808#M3439</guid>
      <dc:creator>Naveen_G_Intel</dc:creator>
      <dc:date>2012-02-22T10:52:00Z</dc:date>
    </item>
    <item>
      <title>Opencv - cvShowImage - shows the image distorted</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Opencv-cvShowImage-shows-the-image-distorted/m-p/803809#M3440</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Actually this is a part of an application using IPP. I am trying to get wavelet transform of an Image. For that, I need to extend border of image, and if I do so as above, I am getting Errors (Though my doubt was not in IPP -&amp;gt; you are correct). But because of this problem, I am unable to process the image properly. (Also, I am new to the forum, I was unable to locate where I can discuss this)&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Karthikeyan S&lt;/P&gt;</description>
      <pubDate>Wed, 22 Feb 2012 13:41:17 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Opencv-cvShowImage-shows-the-image-distorted/m-p/803809#M3440</guid>
      <dc:creator>instrukarthik</dc:creator>
      <dc:date>2012-02-22T13:41:17Z</dc:date>
    </item>
    <item>
      <title>Opencv - cvShowImage - shows the image distorted</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Opencv-cvShowImage-shows-the-image-distorted/m-p/803810#M3441</link>
      <description>Hi Karthikeyan S.&lt;BR /&gt;&lt;BR /&gt;The problem is theimage data access is not correct becaueIPL image are stored with 4 bytes. For example, image.width=2, theimagewidth will be 4, that is why the widthStep rather than imageWidth ismore used in image processing.&lt;BR /&gt;&lt;BR /&gt;forshowing right images, you need to change the two convert functions, for example. &lt;BR /&gt;&lt;P&gt;void convert_datatype_floattouchar(IplImage* image_source, IplImage* image_converted)&lt;BR /&gt;{&lt;BR /&gt;int i, j;&lt;/P&gt;&lt;P&gt;float* src_ptr;&lt;BR /&gt;uchar* dst_ptr;&lt;/P&gt;&lt;P&gt;src_ptr = (float* )image_source-&amp;gt;imageData;&lt;BR /&gt;dst_ptr = (uchar* )image_converted-&amp;gt;imageData;&lt;/P&gt;&lt;P&gt;for (i = 0; i &lt;IMAGE_SOURCE-&gt;height;i++) &lt;BR /&gt; for (j=0; j&lt;IMAGE_SOURCE-&gt;width;j++)&lt;BR /&gt;dst_ptr[i*&lt;STRONG&gt;image_converted-&amp;gt;widthStep/sizeof(uchar)+&lt;/STRONG&gt;j] = (uchar)(src_ptr[i*&lt;STRONG&gt;image_source-&amp;gt;widthStep/sizeof(float)+&lt;/STRONG&gt;j]);&lt;BR /&gt;}.&lt;BR /&gt;The cvCopyImage should take care of the problem internally.&lt;BR /&gt;This is same when use IPP functions, please see the article&lt;A href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-processing-an-image-from-edge-to-edge/"&gt;&lt;B&gt;Processing an Image from Edge to Edge&lt;/B&gt;&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;And if OpenCV question, you can ask in OpenCV forum from the link&lt;BR /&gt;&lt;A href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-open-source-computer-vision-library-opencv-faq/"&gt;Intel Ipp - Open Source Computer Vision Library (OpenCV) FAQ &lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;Hope it helps&lt;BR /&gt;Ying &lt;BR /&gt;&lt;BR /&gt;&lt;/IMAGE_SOURCE-&gt;&lt;/IMAGE_SOURCE-&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 23 Feb 2012 08:46:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Opencv-cvShowImage-shows-the-image-distorted/m-p/803810#M3441</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2012-02-23T08:46:22Z</dc:date>
    </item>
  </channel>
</rss>

