<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3856141</guid>
        <pubDate>Fri, 10 Dec 2021 17:04:44 +0000</pubDate>
        <title>Определение количества фрагментов на изображении</title>
        <link>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3856141</link>
        <description><![CDATA[tumanovalex: Нашелся добрый человек, который сделал код на C++ (<a class='tag-url' href='https://www.cyberforum.ru/graphics-dev/thread2907053.html' target='_blank'>https://www.cyberforum.ru/graphics-dev/thread2907053.html</a>). Я попытался переделать его для определения количества найденных по шаблону SquareBlackColor.jpg фрагментов в изображении pattern.jpg (изображения есть в прикрепленном проекте)<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;opencv2/highgui.hpp&#62;</div><div class="code_line">#include &#60;opencv2/imgcodecs.hpp&#62;</div><div class="code_line">#include &#60;opencv2/imgproc.hpp&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">void DisplayMessage(std::string sMes)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; sMes &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;system(&quot;pause&quot;);</div><div class="code_line">&nbsp;&nbsp;exit(EXIT_SUCCESS);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main(int argc, char** argv)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;if (argv[1] == NULL)</div><div class="code_line">&nbsp;&nbsp; &nbsp;DisplayMessage(&quot;Original image missing!&quot;);</div><div class="code_line">&nbsp;&nbsp;if (argv[2] == NULL)</div><div class="code_line">&nbsp;&nbsp; &nbsp;DisplayMessage(&quot;Template image missing!&quot;);</div><div class="code_line">&nbsp;&nbsp;if (argc &#62; 3)</div><div class="code_line">&nbsp;&nbsp; &nbsp;DisplayMessage(&quot;There should be two parameters in the command line!&quot;);</div><div class="code_line">&nbsp;&nbsp;cv::Mat imgorig &nbsp;= imread(argv[1], cv::IMREAD_UNCHANGED);</div><div class="code_line">&nbsp;&nbsp;cv::Mat imgtempl = imread(argv[2], cv::IMREAD_UNCHANGED);</div><div class="code_line">&nbsp;&nbsp;cv::Mat result = cv::Mat(imgorig.rows - imgtempl.rows + 1, imgorig.cols - imgtempl.cols + 1, CV_32FC1);</div><div class="code_line">&nbsp;&nbsp;cv::matchTemplate(imgorig, imgtempl, result, cv::TM_CCOEFF_NORMED);</div><div class="code_line">&nbsp;&nbsp;cv::namedWindow(&quot;Result&quot;, cv::WINDOW_NORMAL);</div><div class="code_line">&nbsp;&nbsp;cv::imshow(&quot;Result&quot;, result);</div><div class="code_line">&nbsp;&nbsp;cv::imwrite(&quot;Result.jpg&quot;, result);</div><div class="code_line">&nbsp;&nbsp;auto first = result.begin&#60;float&#62;();</div><div class="code_line">&nbsp;&nbsp;auto last = result.end&#60;float&#62;();</div><div class="code_line">&nbsp;&nbsp;cv::waitKey(0);</div><div class="code_line">&nbsp;&nbsp;int i = 0;</div><div class="code_line">&nbsp;&nbsp;for (; first != last; ++first)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; if (*first &#62; 0.9f)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;i++;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>, но ничего не получилось, в цикле в ветку if нет заходов. Хотя по полученному в результате работы matchTemplate изображению видно, что фрагменты были найдены. Может кто-нибудь подскажет, как подсчитать количество найденных фрагментов.<br>
<span class="b-attach" data-size="19952" data-hits="149" data-attach-id="63189" data-attach-post-id="3856141">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3856141&amp;attach_id=63189' title='Скачать файл' target='_blank'>CppOpenCVstudy.zip</a> (, : 149)
		</span>]]></description>
        <author>tumanovalex</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3855867</guid>
        <pubDate>Wed, 08 Dec 2021 08:17:35 +0000</pubDate>
        <title>Определение количества фрагментов на изображении</title>
        <link>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3855867</link>
        <description><![CDATA[scrambrella: <strong class='tag-b'>tumanovalex</strong><br>
Питон несёт с собой фуеву тучу библиотек, за что очень любим говнокодерами. Предлагаете всё переписать на С? Это большая коммерческая работа.]]></description>
        <author>scrambrella</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3855382</guid>
        <pubDate>Tue, 30 Nov 2021 19:44:39 +0000</pubDate>
        <title>Определение количества фрагментов на изображении</title>
        <link>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3855382</link>
        <description><![CDATA[tumanovalex: Спасибо за ссылку. Обязательно посмотрю. По ссылке <a class='tag-url' href='https://docs.opencv.org/4.x/d4/dc6/tutorial_py_template_matching.html' target='_blank'>https://docs.opencv.org/4.x/d4/dc6/tutorial...e_matching.html</a> есть пример Template Matching with Multiple Objects на Питоне:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">import cv2 as cv</div><div class="code_line">import numpy as np</div><div class="code_line">from matplotlib import pyplot as plt</div><div class="code_line">img_rgb = cv.imread(&#39;mario.png&#39;)</div><div class="code_line">img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY)</div><div class="code_line">template = cv.imread(&#39;mario_coin.png&#39;,0)</div><div class="code_line">w, h = template.shape[::-1] // Получение формы изображения-шаблона и определение размеров формы шаблона по горизонтали и вертикали?</div><div class="code_line">res = cv.matchTemplate(img_gray,template,cv.TM_CCOEFF_NORMED) // получение результата сравнения с шаблоном-одно изображение?</div><div class="code_line">threshold = 0.8</div><div class="code_line">loc = np.where( res &#62;= threshold) // сравнение с порогом</div><div class="code_line">for pt in zip(*loc[::-1])// откуда появляется массив?</div><div class="code_line">&nbsp;&nbsp; &nbsp;cv.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2) // выделение красным каждого найденного объекта?</div><div class="code_line">cv.imwrite(&#39;res.png&#39;,img_rgb)</div></ol></div></div></div></div>К сожалению, с Питоном не знаком. Хотел бы перевести код на С++. По функциям OpenCV вопросов нет. Непонятные мне вещи указал в комментариях к коду. Может быть кто-нибудь поможет перевести код на С++?]]></description>
        <author>tumanovalex</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3855111</guid>
        <pubDate>Fri, 26 Nov 2021 20:14:59 +0000</pubDate>
        <title>Определение количества фрагментов на изображении</title>
        <link>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3855111</link>
        <description><![CDATA[tychalex: Посмотрите на странице <a class='tag-url' href='https://ru.stackoverflow.com/questions/812394/Поиск-изображения-в-изображении/812762#812762' target='_blank'>https://ru.stackoverflow.com/questions/8123...и/812762#812762</a>, там есть пример и обсуждение темы поиска по шаблону]]></description>
        <author>tychalex</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3854981</guid>
        <pubDate>Wed, 24 Nov 2021 17:02:56 +0000</pubDate>
        <title>Определение количества фрагментов на изображении</title>
        <link>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3854981</link>
        <description><![CDATA[scrambrella: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=424253&view=findpost&p=3854846'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2021-11-23T04:40:15+00:00">23.11.21, 04:40</time></span><div class='quote '>В интернете много информации по обработке изображений с помощью ИИ, а есть более простые способы решения этой задачи? К сожалению, раньше обработкой изображений не занимался</div></div><br>
Заплатят больше за решение с помощью ИИ.]]></description>
        <author>scrambrella</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3854912</guid>
        <pubDate>Wed, 24 Nov 2021 06:30:56 +0000</pubDate>
        <title>Определение количества фрагментов на изображении</title>
        <link>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3854912</link>
        <description><![CDATA[Mikle: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=424253&view=findpost&p=3854896'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2021-11-23T17:19:34+00:00">23.11.21, 17:19</time></span><div class='quote '>Фона, на который накладываются картинки, нет. Есть просто картинка (jpg), на которой есть одинаковые элементы.</div></div><br>
А между этими элементами что? Фона не может не быть, JPG - это прямоугольное изображение, если между фрагментами есть расстояние, значит есть пиксели с каким-то содержимым. Вопрос - с каким. Ответ &quot;с каким угодно&quot; не годится, ведь может оказаться рисунок, в точности соответствующий исходному фрагменту, тогда мы его не отличим.<br>
Так что, если нужно решение - нужна более строгая формулировка условия задачи.<br>
А если нужно определение корреляционной функции, так его нет в общем виде - мы сами определяем условия соответствия одного изображения другому.]]></description>
        <author>Mikle</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3854896</guid>
        <pubDate>Tue, 23 Nov 2021 17:19:34 +0000</pubDate>
        <title>Определение количества фрагментов на изображении</title>
        <link>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3854896</link>
        <description><![CDATA[tumanovalex: Я плохо рассказал о задаче. Фона, на который накладываются картинки, нет. Есть просто картинка (jpg), на которой есть одинаковые элементы. Эти элементы повторяются по горизонтали (несколько рядов элементов на изображении), между ними есть небольшие расстояния по вертикали и горизонтали (поэтому и указал, что они не пересекаются). В качестве шаблона для подсчета можно в графическом редакторе вырезать один из элементов на изображении, сохранить и использовать его для подсчета. В качестве примера прикрепил картинку типа &quot;шахматная доска&quot;, на которой нужно определить, например, количество черных квадратов, белых квадратов, пар &quot;белый и черный квадрат&quot;. Изображение может быть цветным или черно-белым. На реальной картинке элементы более сложные.Я где-то читал, что нужно вычислить корреляционную функцию между изображением и его шаблоном. Если эта функция имеет наибольшее значение, то значит участок изображения очень похож на шаблон. Как я понимаю, нужно по изображению &quot;перемещать&quot; шаблон и вычислять корреляционную функцию между участком изображения и шаблона. Вот только не помню, как нужно было вычислять эту функцию. Есть, наверное, и другие способы.<br>
<span class="b-attach" data-size="10809" data-hits="484" data-attach-id="63142" data-attach-post-id="3854896">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3854896&amp;attach_id=63142' title='Скачать файл' target='_blank'>pattern______________________.png</a> (, : 484)
		</span>]]></description>
        <author>tumanovalex</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3854849</guid>
        <pubDate>Tue, 23 Nov 2021 05:21:42 +0000</pubDate>
        <title>Определение количества фрагментов на изображении</title>
        <link>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3854849</link>
        <description><![CDATA[Mikle: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=424253&view=findpost&p=3854846'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2021-11-23T04:40:15+00:00">23.11.21, 04:40</time></span><div class='quote '>Фрагменты на изображении не перекрываются.</div></div><br>
А какой был фон ДО нанесения на него фрагментов? Тут три варианта:<br>
№1. Однотонный фон. Тогда достаточно посчитать отдельные фрагменты, контрастные с фоном, ведь &quot;Фрагменты на изображении не перекрываются&quot;.<br>
№2. Фон - заранее известная картинка. Тогда достаточно вычесть из результата эту картинку, и получим №1.<br>
№3. Фон случайный и заранее неизвестен - тогда задача нерешаема, ведь фон заранее может содержать участки, похожие на искомое изображение.]]></description>
        <author>Mikle</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3854846</guid>
        <pubDate>Tue, 23 Nov 2021 04:40:15 +0000</pubDate>
        <title>Определение количества фрагментов на изображении</title>
        <link>https://forum.sources.ru/index.php?showtopic=424253&amp;view=findpost&amp;p=3854846</link>
        <description><![CDATA[tumanovalex: Мне нужно подсчитать количество фрагментов на изображении. Приложение должно быть десктопное, без использования интернета. Шаблон фрагмента - это элемент изображения, полученный из этого же изображения путем выделения нужного фрагмента и его сохранения. Фрагменты на изображении не перекрываются. В интернете много информации по обработке изображений с помощью ИИ, а есть более простые способы решения этой задачи? К сожалению, раньше обработкой изображений не занимался. Пока научился на C# загружать изображения, перемещаться по пикселам. Помогите, пожалуйста, ссылками на учебники и ресурсы, которые помогли бы мне решить эту задачу.]]></description>
        <author>tumanovalex</author>
        <category>Программирование графики</category>
      </item>
	
      </channel>
      </rss>
	