Latest posts on Возникает проблема при откладке topichttp://python.su/forum/topic/41841/2022-08-02T20:32:00+03:00Общий :: Python для новичков :: Возникает проблема при откладке
2022-08-02T20:32:00+03:00FishHook223606<blockquote><em>Taulan22</em><br/>я в png выложил</blockquote>там С# какой-то, какое это имеет отношение к проблемам с отладкой питона?
Общий :: Python для новичков :: Возникает проблема при откладке
2022-08-02T20:00:11+03:00Taulan22223605<blockquote><em>FishHook</em><br/>Taulan22Объясни пожалуйста. Я не понимаю, может я тупой. Вот запостил ты какой-то код. Просто код без минимального объяснения, что код должен делать. Прилепил какую-то картинку, непонятно что иллюстрирующую, там какие-то магические слова, непонятно какое отношение имеющие к коду и вопросу в заголовке. И, у тебя “Возникает проблема при откладке”. Какая проблема, как возникает, каким образом проявляется - хер его знает. Так вот чего я не понимаю, ты сам считаешь, что твой пост имеет смысл для постороннего читателя? Объясни, как на основании твоего поста можно понять твои проблемы с отладкой</blockquote>я в png выложил
Общий :: Python для новичков :: Возникает проблема при откладке
2022-08-01T21:59:46+03:00py.user.next223592<blockquote><em>Taulan22</em><br/>Прикреплённый файлы:<br/>attachment Screenshot_8.png (20,9 KБ)</blockquote>Попробуй везде cotegories переименовать в categories.
Общий :: Python для новичков :: Возникает проблема при откладке
2022-08-01T11:51:13+03:00FishHook223585<strong>Taulan22</strong><br/>Объясни пожалуйста. Я не понимаю, может я тупой. Вот запостил ты какой-то код. Просто код без минимального объяснения, что код должен делать. Прилепил какую-то картинку, непонятно что иллюстрирующую, там какие-то магические слова, непонятно какое отношение имеющие к коду и вопросу в заголовке. И, у тебя “Возникает проблема при откладке”. Какая проблема, как возникает, каким образом проявляется - хер его знает. Так вот чего я не понимаю, ты сам считаешь, что твой пост имеет смысл для постороннего читателя? Объясни, как на основании твоего поста можно понять твои проблемы с отладкой
Общий :: Python для новичков :: Возникает проблема при откладке
2022-08-01T10:38:32+03:00Taulan22223582<div class="code"><pre> <span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
<span class="kn">import</span> <span class="nn">click</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">re</span>
<span class="kn">import</span> <span class="nn">face_recognition.api</span> <span class="kn">as</span> <span class="nn">face_recognition</span>
<span class="kn">import</span> <span class="nn">multiprocessing</span>
<span class="kn">import</span> <span class="nn">itertools</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">import</span> <span class="nn">PIL.Image</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
<span class="k">def</span> <span class="nf">scan_known_people</span><span class="p">(</span><span class="n">known_people_folder</span><span class="p">):</span>
<span class="n">known_names</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">known_face_encodings</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="nb">file</span> <span class="ow">in</span> <span class="n">image_files_in_folder</span><span class="p">(</span><span class="n">known_people_folder</span><span class="p">):</span>
<span class="n">basename</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="nb">file</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">img</span> <span class="o">=</span> <span class="n">face_recognition</span><span class="o">.</span><span class="n">load_image_file</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span>
<span class="n">encodings</span> <span class="o">=</span> <span class="n">face_recognition</span><span class="o">.</span><span class="n">face_encodings</span><span class="p">(</span><span class="n">img</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">encodings</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
<span class="n">click</span><span class="o">.</span><span class="n">echo</span><span class="p">(</span><span class="s2">"WARNING: More than one face found in {}. Only considering the first face."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">file</span><span class="p">))</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">encodings</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">click</span><span class="o">.</span><span class="n">echo</span><span class="p">(</span><span class="s2">"WARNING: No faces found in {}. Ignoring file."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">file</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">known_names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">basename</span><span class="p">)</span>
<span class="n">known_face_encodings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">encodings</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="k">return</span> <span class="n">known_names</span><span class="p">,</span> <span class="n">known_face_encodings</span>
<span class="k">def</span> <span class="nf">print_result</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">distance</span><span class="p">,</span> <span class="n">show_distance</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
<span class="k">if</span> <span class="n">show_distance</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s2">"{},{},{}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">distance</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s2">"{},{}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">name</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">test_image</span><span class="p">(</span><span class="n">image_to_check</span><span class="p">,</span> <span class="n">known_names</span><span class="p">,</span> <span class="n">known_face_encodings</span><span class="p">,</span> <span class="n">tolerance</span><span class="o">=</span><span class="mf">0.6</span><span class="p">,</span> <span class="n">show_distance</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
<span class="n">unknown_image</span> <span class="o">=</span> <span class="n">face_recognition</span><span class="o">.</span><span class="n">load_image_file</span><span class="p">(</span><span class="n">image_to_check</span><span class="p">)</span>
<span class="c1"># Scale down image if it's giant so things run a little faster</span>
<span class="k">if</span> <span class="nb">max</span><span class="p">(</span><span class="n">unknown_image</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span> <span class="o">></span> <span class="mi">1600</span><span class="p">:</span>
<span class="n">pil_img</span> <span class="o">=</span> <span class="n">PIL</span><span class="o">.</span><span class="n">Image</span><span class="o">.</span><span class="n">fromarray</span><span class="p">(</span><span class="n">unknown_image</span><span class="p">)</span>
<span class="n">pil_img</span><span class="o">.</span><span class="n">thumbnail</span><span class="p">((</span><span class="mi">1600</span><span class="p">,</span> <span class="mi">1600</span><span class="p">),</span> <span class="n">PIL</span><span class="o">.</span><span class="n">Image</span><span class="o">.</span><span class="n">LANCZOS</span><span class="p">)</span>
<span class="n">unknown_image</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">pil_img</span><span class="p">)</span>
<span class="n">unknown_encodings</span> <span class="o">=</span> <span class="n">face_recognition</span><span class="o">.</span><span class="n">face_encodings</span><span class="p">(</span><span class="n">unknown_image</span><span class="p">)</span>
<span class="k">for</span> <span class="n">unknown_encoding</span> <span class="ow">in</span> <span class="n">unknown_encodings</span><span class="p">:</span>
<span class="n">distances</span> <span class="o">=</span> <span class="n">face_recognition</span><span class="o">.</span><span class="n">face_distance</span><span class="p">(</span><span class="n">known_face_encodings</span><span class="p">,</span> <span class="n">unknown_encoding</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">distances</span> <span class="o"><=</span> <span class="n">tolerance</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">True</span> <span class="ow">in</span> <span class="n">result</span><span class="p">:</span>
<span class="p">[</span><span class="n">print_result</span><span class="p">(</span><span class="n">image_to_check</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">distance</span><span class="p">,</span> <span class="n">show_distance</span><span class="p">)</span> <span class="k">for</span> <span class="n">is_match</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">distance</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">known_names</span><span class="p">,</span> <span class="n">distances</span><span class="p">)</span> <span class="k">if</span> <span class="n">is_match</span><span class="p">]</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">print_result</span><span class="p">(</span><span class="n">image_to_check</span><span class="p">,</span> <span class="s2">"unknown_person"</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="n">show_distance</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">unknown_encodings</span><span class="p">:</span>
<span class="c1"># print out fact that no faces were found in image</span>
<span class="n">print_result</span><span class="p">(</span><span class="n">image_to_check</span><span class="p">,</span> <span class="s2">"no_persons_found"</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="n">show_distance</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">image_files_in_folder</span><span class="p">(</span><span class="n">folder</span><span class="p">):</span>
<span class="k">return</span> <span class="p">[</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">folder</span><span class="p">,</span> <span class="n">f</span><span class="p">)</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="n">folder</span><span class="p">)</span> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="sa">r</span><span class="s1">'.*\.(jpg|jpeg|png)'</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">)]</span>
<span class="k">def</span> <span class="nf">process_images_in_process_pool</span><span class="p">(</span><span class="n">images_to_check</span><span class="p">,</span> <span class="n">known_names</span><span class="p">,</span> <span class="n">known_face_encodings</span><span class="p">,</span> <span class="n">number_of_cpus</span><span class="p">,</span> <span class="n">tolerance</span><span class="p">,</span> <span class="n">show_distance</span><span class="p">):</span>
<span class="k">if</span> <span class="n">number_of_cpus</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
<span class="n">processes</span> <span class="o">=</span> <span class="bp">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">processes</span> <span class="o">=</span> <span class="n">number_of_cpus</span>
<span class="c1"># macOS will crash due to a bug in libdispatch if you don't use 'forkserver'</span>
<span class="n">context</span> <span class="o">=</span> <span class="n">multiprocessing</span>
<span class="k">if</span> <span class="s2">"forkserver"</span> <span class="ow">in</span> <span class="n">multiprocessing</span><span class="o">.</span><span class="n">get_all_start_methods</span><span class="p">():</span>
<span class="n">context</span> <span class="o">=</span> <span class="n">multiprocessing</span><span class="o">.</span><span class="n">get_context</span><span class="p">(</span><span class="s2">"forkserver"</span><span class="p">)</span>
<span class="n">pool</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">Pool</span><span class="p">(</span><span class="n">processes</span><span class="o">=</span><span class="n">processes</span><span class="p">)</span>
<span class="n">function_parameters</span> <span class="o">=</span> <span class="nb">zip</span><span class="p">(</span>
<span class="n">images_to_check</span><span class="p">,</span>
<span class="n">itertools</span><span class="o">.</span><span class="n">repeat</span><span class="p">(</span><span class="n">known_names</span><span class="p">),</span>
<span class="n">itertools</span><span class="o">.</span><span class="n">repeat</span><span class="p">(</span><span class="n">known_face_encodings</span><span class="p">),</span>
<span class="n">itertools</span><span class="o">.</span><span class="n">repeat</span><span class="p">(</span><span class="n">tolerance</span><span class="p">),</span>
<span class="n">itertools</span><span class="o">.</span><span class="n">repeat</span><span class="p">(</span><span class="n">show_distance</span><span class="p">)</span>
<span class="p">)</span>
<span class="n">pool</span><span class="o">.</span><span class="n">starmap</span><span class="p">(</span><span class="n">test_image</span><span class="p">,</span> <span class="n">function_parameters</span><span class="p">)</span>
<span class="nd">@click.command</span><span class="p">()</span>
<span class="nd">@click.argument</span><span class="p">(</span><span class="s1">'known_people_folder'</span><span class="p">)</span>
<span class="nd">@click.argument</span><span class="p">(</span><span class="s1">'image_to_check'</span><span class="p">)</span>
<span class="nd">@click.option</span><span class="p">(</span><span class="s1">'--cpus'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s1">'number of CPU cores to use in parallel (can speed up processing lots of images). -1 means "use all in system"'</span><span class="p">)</span>
<span class="nd">@click.option</span><span class="p">(</span><span class="s1">'--tolerance'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mf">0.6</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s1">'Tolerance for face comparisons. Default is 0.6. Lower this if you get multiple matches for the same person.'</span><span class="p">)</span>
<span class="nd">@click.option</span><span class="p">(</span><span class="s1">'--show-distance'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">bool</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s1">'Output face distance. Useful for tweaking tolerance setting.'</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">known_people_folder</span><span class="p">,</span> <span class="n">image_to_check</span><span class="p">,</span> <span class="n">cpus</span><span class="p">,</span> <span class="n">tolerance</span><span class="p">,</span> <span class="n">show_distance</span><span class="p">):</span>
<span class="n">known_names</span><span class="p">,</span> <span class="n">known_face_encodings</span> <span class="o">=</span> <span class="n">scan_known_people</span><span class="p">(</span><span class="n">known_people_folder</span><span class="p">)</span>
<span class="c1"># Multi-core processing only supported on Python 3.4 or greater</span>
<span class="k">if</span> <span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">version_info</span> <span class="o"><</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">))</span> <span class="ow">and</span> <span class="n">cpus</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
<span class="n">click</span><span class="o">.</span><span class="n">echo</span><span class="p">(</span><span class="s2">"WARNING: Multi-processing support requires Python 3.4 or greater. Falling back to single-threaded processing!"</span><span class="p">)</span>
<span class="n">cpus</span> <span class="o">=</span> <span class="mi">1</span>
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">image_to_check</span><span class="p">):</span>
<span class="k">if</span> <span class="n">cpus</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="p">[</span><span class="n">test_image</span><span class="p">(</span><span class="n">image_file</span><span class="p">,</span> <span class="n">known_names</span><span class="p">,</span> <span class="n">known_face_encodings</span><span class="p">,</span> <span class="n">tolerance</span><span class="p">,</span> <span class="n">show_distance</span><span class="p">)</span> <span class="k">for</span> <span class="n">image_file</span> <span class="ow">in</span> <span class="n">image_files_in_folder</span><span class="p">(</span><span class="n">image_to_check</span><span class="p">)]</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">process_images_in_process_pool</span><span class="p">(</span><span class="n">image_files_in_folder</span><span class="p">(</span><span class="n">image_to_check</span><span class="p">),</span> <span class="n">known_names</span><span class="p">,</span> <span class="n">known_face_encodings</span><span class="p">,</span> <span class="n">cpus</span><span class="p">,</span> <span class="n">tolerance</span><span class="p">,</span> <span class="n">show_distance</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">test_image</span><span class="p">(</span><span class="n">image_to_check</span><span class="p">,</span> <span class="n">known_names</span><span class="p">,</span> <span class="n">known_face_encodings</span><span class="p">,</span> <span class="n">tolerance</span><span class="p">,</span> <span class="n">show_distance</span><span class="p">)</span>
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="err">“</span><span class="n">__main__</span><span class="err">”</span><span class="p">:</span>
<span class="n">main</span><span class="p">()</span>
</pre></div>