<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="http://forum.ubuntu-fr.org/extern.php?action=feed&amp;tid=1161491&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[Forum Ubuntu-fr.org / OpenCV et logiciel de cryptage - Problème de couleurs]]></title>
		<link>http://forum.ubuntu-fr.org/viewtopic.php?id=1161491</link>
		<description><![CDATA[Les sujets les plus récents dans OpenCV et logiciel de cryptage - Problème de couleurs.]]></description>
		<lastBuildDate>Wed, 16 Jan 2013 12:29:05 +0000</lastBuildDate>
		<generator>FluxBB</generator>
		<item>
			<title><![CDATA[Réponse à&#160;:  OpenCV et logiciel de cryptage - Problème de couleurs]]></title>
			<link>http://forum.ubuntu-fr.org/viewtopic.php?pid=12227871#p12227871</link>
			<description><![CDATA[<p>Tu ne perds pas de couleur au sens propre du terme, j&#039;ai testé et tu as un décalage quelque part (essaye avec une image simple, comme par exemple un cercle chromatique sur fond blanc en basse résolution).<br />C&#039;est parce tu as des décalages et que tu testes sur une image avec une bonne résolution, que tu as l&#039;impression qu&#039;elle pâlit (si on mélange les couleurs primaires, ça donne du blanc ...).</p>]]></description>
			<author><![CDATA[dummy@example.com (sogyam)]]></author>
			<pubDate>Wed, 16 Jan 2013 12:29:05 +0000</pubDate>
			<guid>http://forum.ubuntu-fr.org/viewtopic.php?pid=12227871#p12227871</guid>
		</item>
		<item>
			<title><![CDATA[OpenCV et logiciel de cryptage - Problème de couleurs]]></title>
			<link>http://forum.ubuntu-fr.org/viewtopic.php?pid=12138201#p12138201</link>
			<description><![CDATA[<p>Bonjour à tous !</p><p>Je me suis mis depuis peu à utiliser OpenCV pour pouvoir faire de la modification photo, ce qui m&#039;a permis par la même occasion d&#039;avancer mon projet de la Fac, c&#039;est à dire réaliser un logiciel de cryptage photo.</p><p>Alors no problèmes avec le programme, j&#039;arrive à crypter ou plutôt &quot;mélanger&quot; les pixels d&#039;une image pour ensuite les &quot;démélanger&quot; grâce à mon code, mais apparaît alors un problème un peu bête, je perds les couleurs avec les images jpeg et je ne comprends vraiment pas pourquoi ?</p><p>Dans mon code, je génère une position où va atterrir un pixel, que je stock ensuite dans un fichier.txt pour ensuite décrypter la photo à l&#039;aide de ce fichier.</p><p>Voila mon code pour le cryptage :</p><div class="codebox"><pre class="vscroll"><code>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;assert.h&gt;
#include &lt;opencv/cv.h&gt;
#include &lt;opencv/highgui.h&gt;
#include &lt;time.h&gt;

void Crypto(const IplImage* base, IplImage* final)
{

    srand(time(NULL));

    int x, k;
    int i, j;
    int **OCC = NULL;
    FILE *xfile = NULL;
    CvScalar p, p2;

    OCC = malloc(base-&gt;height* sizeof(int*));
    if(OCC == NULL)
        exit(EXIT_FAILURE);

    for(i = 0; i &lt; base-&gt;height; i++)
    {
        OCC[i] = malloc(base-&gt;width * sizeof(int));
        if(OCC[i] == NULL)
            exit(EXIT_FAILURE);
    }

    for(j = 0; j&lt;base-&gt;height; j++)
        for(i = 0; i&lt;base-&gt;width; i++)
            OCC[j][i] = 0;

    xfile = fopen(&quot;xfile.txt&quot;, &quot;w+&quot;);

    for(j = 0; j &lt; base-&gt;height; j++)
    {
        for(i = 0; i &lt; base-&gt;width; i++)
        {
            do
            {
                x = (rand()%(base-&gt;width));
            }
            while(OCC[j][x] == 1);
            OCC[j][x]++;
            fprintf(xfile, &quot;%d &quot;, x);

            for (k = 0; k &lt; base-&gt;nChannels; ++k)
            {
                p2 = cvGet2D (base, j, x);
                p.val[k] = p2.val[k];
            }
            cvSet2D (final, j, i, p);
        }
    }

    fclose(xfile);
}

int main (int argc, char* argv[])
{
    IplImage* base = NULL;
    IplImage* final = NULL;
    const char* src_path = NULL;
    const char* dst_path = NULL;
    const char* window_title = &quot;Crypto&quot;;

    if (argc &lt; 3)
    {
        fprintf (stderr, &quot;usage: %s IMAGE [SAVE_PATH]\n&quot;, argv[0]);
        return EXIT_FAILURE;
    }

    src_path = argv[1];
    dst_path = argv[2];

    if (!(base = cvLoadImage (src_path, CV_LOAD_IMAGE_UNCHANGED)))
    {
        fprintf (stderr, &quot;couldn&#039;t open image file: %s\n&quot;, src_path);
        return EXIT_FAILURE;
    }

    final = cvCreateImage (cvGetSize (base), IPL_DEPTH_8U, 4);

    Crypto(base, final);

    cvNamedWindow (window_title, CV_WINDOW_AUTOSIZE);
    cvShowImage (window_title, final);

    cvWaitKey(0);
    cvDestroyAllWindows();

    if (dst_path &amp;&amp; !cvSaveImage (dst_path, final, NULL))
    {
        fprintf (stderr, &quot;couldn&#039;t write image to file: %s\n&quot;, dst_path);
    }

    cvReleaseImage(&amp;base);
    cvReleaseImage(&amp;final);

    return EXIT_SUCCESS;
}</code></pre></div><p>Et pour le décryptage :</p><div class="codebox"><pre class="vscroll"><code>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;assert.h&gt;
#include &lt;opencv/cv.h&gt;
#include &lt;opencv/highgui.h&gt;

void Decrypt(const IplImage* base, IplImage* final)
{
    int x;
    int k;
    int i, j;
    FILE *xfile = NULL;
    CvScalar p, p2;

    assert (base-&gt;depth == IPL_DEPTH_8U);

    xfile = fopen(&quot;xfile.txt&quot;, &quot;r&quot;);

    for(j = 0; j &lt; final-&gt;height; j++)
    {
        for(i = 0; i &lt; final-&gt;width; i++)
        {
            fscanf(xfile, &quot;%d&quot;, &amp;x);

            for (k = 0; k &lt; final-&gt;nChannels; ++k)
            {
                p2 = cvGet2D (base, j, i);
                p.val[k] = p2.val[k];
            }
            cvSet2D (final, j, x, p);
        }
    }

    fclose(xfile);
}

int main (int argc, char* argv[])
{
    IplImage* base = NULL;
    IplImage* final = NULL;
    const char* src_path = NULL;
    const char* dst_path = NULL;
    const char* window_title = &quot;Crypto&quot;;

    if (argc &lt; 3)
    {
        fprintf (stderr, &quot;usage: %s IMAGE [SAVE_PATH]\n&quot;, argv[0]);
        return EXIT_FAILURE;
    }

    src_path = argv[1];
    dst_path = argv[2];

    if (!(base = cvLoadImage (src_path, CV_LOAD_IMAGE_UNCHANGED)))
    {
        fprintf (stderr, &quot;couldn&#039;t open image file: %s\n&quot;, src_path);
        return EXIT_FAILURE;
    }

    final = cvCreateImage (cvGetSize (base), IPL_DEPTH_8U, 4);
    Decrypt(base, final);

    cvNamedWindow (window_title, CV_WINDOW_AUTOSIZE);
    cvShowImage (window_title, final);

    cvWaitKey(0);
    cvDestroyAllWindows();

    if (dst_path &amp;&amp; !cvSaveImage (dst_path, final, NULL))
    {
        fprintf (stderr, &quot;couldn&#039;t write image to file: %s\n&quot;, dst_path);
    }

    cvReleaseImage(&amp;base);
    cvReleaseImage(&amp;final);

    return EXIT_SUCCESS;
}</code></pre></div><p>Si quelqu&#039;un a une explication je suis preneur <img src="http://forum.ubuntu-fr.org/img/smilies/big_smile.png" width="15" height="15" alt="big_smile" /></p>]]></description>
			<author><![CDATA[dummy@example.com (MiteKudasai)]]></author>
			<pubDate>Tue, 08 Jan 2013 22:13:34 +0000</pubDate>
			<guid>http://forum.ubuntu-fr.org/viewtopic.php?pid=12138201#p12138201</guid>
		</item>
	</channel>
</rss>
