Latest posts on Сравнение двух фото( Нужно найти ошибку в коде ) topichttp://python.su/forum/topic/36066/2018-11-22T13:55:03+02:00Общий :: Python для экспертов :: Сравнение двух фото( Нужно найти ошибку в коде )
2018-11-22T13:55:03+02:00Striver197291Я, конечно, не видел твой файл <strong>etalot.png</strong>, но предполагаю, что он цветной, и поэтому в <strong>etalon</strong> может получаться трёхмерный массив. А данные с видеопотока ты явно к градациям серого приводишь, там точно двумерный вариант. Попробуй перед циклом вставить строку<br/><div class="code"><pre> <span class="n">etalon</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">cvtColor</span><span class="p">(</span><span class="n">etalon</span><span class="p">,</span> <span class="n">cv2</span><span class="o">.</span><span class="n">COLOR_BGR2GRAY</span><span class="p">)</span>
</pre></div>
Общий :: Python для экспертов :: Сравнение двух фото( Нужно найти ошибку в коде )
2018-10-18T17:34:33+03:00evgeniy2018123195956Извиняюсь не много не корректно поставил вопрос Мне надо по пикселям сравнить фото и при каждом совпадающем пикселе добавлять переменную на 1 ) спасибо<br/>Только ЖЕЛАТЕЛЬНО исправить эту ошибку , а не подключать другие библеотеки <br/>Заранее Спасибо
Общий :: Python для экспертов :: Сравнение двух фото( Нужно найти ошибку в коде )
2018-10-18T17:32:39+03:00evgeniy2018123195955Доброго времени суток.Есть вопрос мне вот надо по ПИКСЕЛЯМ проверить каждое фото вот нашел код.<br/>Фото еталон в 128Х128 и фото с камеры тоже делаю в 128Х128<br/><div class="code"><pre> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">128</span><span class="p">):</span>
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">128</span><span class="p">):</span>
<span class="k">if</span> <span class="n">roi_gray</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span><span class="o">==</span><span class="n">etalon</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]:</span>
<span class="n">sgodztvo</span><span class="o">+=</span><span class="mi">1</span>
<span class="k">print</span><span class="p">(</span><span class="n">sgodztvo</span><span class="p">)</span>
</pre></div>Все вроде норм написано НО почемуто )<br/>Traceback (most recent call last):<br/> File “C:\Users\Genya\Desktop\INTRESTING\FacialRecognitionProject\TEST\15.10.18\Lico_default.py”, line 30, in <module><br/> if roi_gray<em>==etalon:<br/>ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()<br/>Ну я если надо вот фулл код </em><div class="code"><pre> <span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">cv2</span>
<span class="kn">import</span> <span class="nn">time</span>
<span class="n">cap</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">VideoCapture</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">cap</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">640</span><span class="p">)</span> <span class="c1"># set Width</span>
<span class="n">cap</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mi">480</span><span class="p">)</span> <span class="c1"># set Height</span>
<span class="n">etalon</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">imread</span><span class="p">(</span><span class="s1">'./Evgeniy/etalot.png'</span><span class="p">)</span>
<span class="n">faceCascade</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">CascadeClassifier</span><span class="p">(</span><span class="s1">'lico.xml'</span><span class="p">)</span>
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
<span class="n">ret</span><span class="p">,</span> <span class="n">img</span> <span class="o">=</span> <span class="n">cap</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
<span class="n">gray</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">cvtColor</span><span class="p">(</span><span class="n">img</span><span class="p">,</span> <span class="n">cv2</span><span class="o">.</span><span class="n">COLOR_BGR2GRAY</span><span class="p">)</span>
<span class="n">faces</span> <span class="o">=</span> <span class="n">faceCascade</span><span class="o">.</span><span class="n">detectMultiScale</span><span class="p">(</span>
<span class="n">gray</span><span class="p">,</span>
<span class="n">scaleFactor</span><span class="o">=</span><span class="mf">1.2</span><span class="p">,</span>
<span class="n">minNeighbors</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
<span class="n">minSize</span><span class="o">=</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">)</span>
<span class="p">)</span>
<span class="k">for</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">w</span><span class="p">,</span><span class="n">h</span><span class="p">)</span> <span class="ow">in</span> <span class="n">faces</span><span class="p">:</span>
<span class="n">sgodztvo</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">roi_color</span> <span class="o">=</span> <span class="n">img</span><span class="p">[</span><span class="n">y</span><span class="p">:</span><span class="n">y</span><span class="o">+</span><span class="n">h</span><span class="p">,</span> <span class="n">x</span><span class="p">:</span><span class="n">x</span><span class="o">+</span><span class="n">w</span><span class="p">]</span>
<span class="n">roi_gray</span> <span class="o">=</span> <span class="n">gray</span><span class="p">[</span><span class="n">y</span><span class="p">:</span><span class="n">y</span><span class="o">+</span><span class="n">h</span><span class="p">,</span> <span class="n">x</span><span class="p">:</span><span class="n">x</span><span class="o">+</span><span class="n">w</span><span class="p">]</span>
<span class="n">roi_gray</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="n">roi_gray</span><span class="p">,(</span><span class="mi">128</span><span class="p">,</span><span class="mi">128</span><span class="p">))</span>
<span class="c1">#cv2.imwrite("Evgeniy/etalot.png",roi_gray)</span>
<span class="n">cv2</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="s2">"cut"</span><span class="p">,</span><span class="n">roi_gray</span><span class="p">)</span>
<span class="n">cv2</span><span class="o">.</span><span class="n">rectangle</span><span class="p">(</span><span class="n">img</span><span class="p">,(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">),(</span><span class="n">x</span><span class="o">+</span><span class="n">w</span><span class="p">,</span><span class="n">y</span><span class="o">+</span><span class="n">h</span><span class="p">),(</span><span class="mi">0</span><span class="p">,</span><span class="mi">255</span><span class="p">,</span><span class="mi">0</span><span class="p">),</span><span class="mi">2</span><span class="p">)</span>
<span class="c1">#roi_gray = gray[y:y+h, x:x+w]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">128</span><span class="p">):</span>
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">128</span><span class="p">):</span>
<span class="k">if</span> <span class="n">roi_gray</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span><span class="o">==</span><span class="n">etalon</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]:</span>
<span class="n">sgodztvo</span><span class="o">+=</span><span class="mi">1</span>
<span class="k">print</span><span class="p">(</span><span class="n">sgodztvo</span><span class="p">)</span>
<span class="n">cv2</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="s1">'video'</span><span class="p">,</span><span class="n">img</span><span class="p">)</span>
<span class="n">k</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">waitKey</span><span class="p">(</span><span class="mi">30</span><span class="p">)</span> <span class="o">&</span> <span class="mh">0xff</span>
<span class="k">if</span> <span class="n">k</span> <span class="o">==</span> <span class="mi">27</span><span class="p">:</span> <span class="c1"># press 'ESC' to quit</span>
<span class="k">break</span>
<span class="n">cap</span><span class="o">.</span><span class="n">release</span><span class="p">()</span>
<span class="n">cv2</span><span class="o">.</span><span class="n">destroyAllWindows</span><span class="p">()</span>
</pre></div>