<?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=436854&amp;view=findpost&amp;p=3897195</guid>
        <pubDate>Mon, 27 Nov 2023 06:39:38 +0000</pubDate>
        <title>Перевести температуру в цвет</title>
        <link>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3897195</link>
        <description><![CDATA[Pit-Bul: все заработало как и хотелось]]></description>
        <author>Pit-Bul</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3896325</guid>
        <pubDate>Mon, 30 Oct 2023 09:44:38 +0000</pubDate>
        <title>Перевести температуру в цвет</title>
        <link>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3896325</link>
        <description><![CDATA[Pit-Bul: прошу прощения, я реально походу тупой, либо устал )))<br>
<br>
<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">Mat temperatureMatrix = new Mat(1, t_array.ToArray().Length, MatType.CV_16S, tmp.ToArray());</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
вот оно зло, должно быть <br>
<br>
<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">Mat temperatureMatrix = new Mat(24, 32, MatType.CV_16S, tmp.ToArray());</div></ol></div></div></div></div>]]></description>
        <author>Pit-Bul</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3896319</guid>
        <pubDate>Mon, 30 Oct 2023 08:46:11 +0000</pubDate>
        <title>Перевести температуру в цвет</title>
        <link>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3896319</link>
        <description><![CDATA[Pit-Bul: я наверное тупой, но что то не выходит аленький цветочек. Код от <strong class='tag-b'>Majestio</strong> работает, но выдает линию а не изображение 24х32 пикселя<br>
пытаюсь сделать решапе не выходит<br>
<br>
<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">ndarray t_array = np.frombuffer(data.Skip(8).ToArray(), dtype: np.Int16);</div><div class="code_line">t_array.reshape(24, 32);</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2023-10-30T09:01:41+00:00">30.10.23, 09:01</time></span></span><br>
пошел дальше, преобразовал массив в двумерный, тоже не помогает<br>
<br>
<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">ndarray t_array = np.frombuffer(data.Skip(8).ToArray(), dtype: np.Int16);</div><div class="code_line">int index = 0;</div><div class="code_line">Int16[,] twoDimensionalArray = new Int16[24, 32];</div><div class="code_line">var tmp = t_array.ToList&#60;Int16&#62;();</div><div class="code_line">for (int x = 0; x &#60; 24; x++)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (int y = 0; y &#60; 32; y++)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;twoDimensionalArray[x, y] = tmp[index];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;index++;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div><div class="code_line">Mat temperatureMatrix = new Mat(1, t_array.ToArray().Length, MatType.CV_16S, tmp.ToArray());</div><div class="code_line">&nbsp;</div><div class="code_line">Mat normalizedMatrix = new Mat();</div><div class="code_line">Cv2.Normalize(temperatureMatrix, normalizedMatrix, 0, 255, NormTypes.MinMax, MatType.CV_8U);</div><div class="code_line">Mat coloredImage = new Mat();</div><div class="code_line">Cv2.ApplyColorMap(normalizedMatrix, coloredImage, ColormapTypes.Jet);</div></ol></div></div></div></div>]]></description>
        <author>Pit-Bul</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3895258</guid>
        <pubDate>Tue, 26 Sep 2023 18:48:53 +0000</pubDate>
        <title>Перевести температуру в цвет</title>
        <link>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3895258</link>
        <description><![CDATA[Pit-Bul: ну по крайней мере мат теперь не пустой и с этим уже можно работать]]></description>
        <author>Pit-Bul</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3895257</guid>
        <pubDate>Tue, 26 Sep 2023 18:46:43 +0000</pubDate>
        <title>Перевести температуру в цвет</title>
        <link>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3895257</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=436854&view=findpost&p=3895255'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pit&#045;Bul &#064; <time class="tag-quote__quoted-time" datetime="2023-09-26T17:10:35+00:00">26.09.23, 17:10</time></span><div class='quote '>Majestio, спасибо большое. Вроде стало лучше, но картинки по прежнему нет, буду ковырять Ваш вариант.</div></div><br>
ChatGPT часто врет - и это нужно учитывать. Но наколки на варианты вычислений нужно &quot;запоминать&quot;.]]></description>
        <author>Majestio</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3895255</guid>
        <pubDate>Tue, 26 Sep 2023 17:10:35 +0000</pubDate>
        <title>Перевести температуру в цвет</title>
        <link>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3895255</link>
        <description><![CDATA[Pit-Bul: <strong class='tag-b'>Majestio</strong>, спасибо большое. Вроде стало лучше, но картинки по прежнему нет, буду ковырять Ваш вариант.]]></description>
        <author>Pit-Bul</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3895253</guid>
        <pubDate>Tue, 26 Sep 2023 15:08:04 +0000</pubDate>
        <title>Перевести температуру в цвет</title>
        <link>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3895253</link>
        <description><![CDATA[Majestio: <strong class='tag-b'>Pit-Bul</strong>, сорян - не владею шарпомъ. Но умею запрягать ChatGPT. Зацени-затести ответ его, может быть поможет:<br>
<br>
<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">using OpenCvSharp;</div><div class="code_line">using System;</div><div class="code_line">&nbsp;</div><div class="code_line">class Program</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;static void Main(string[] args)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Задайте значения шкалы температур</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;double minTemp = 20;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;double maxTemp = 150;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Задайте массив значений температуры</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;short[] temperatureValues = { 50, 75, 100, 125 };</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Создайте матрицу для хранения значений температуры</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Mat temperatureMatrix = new Mat(1, temperatureValues.Length, MatType.CV_16S, temperatureValues);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Нормализуйте значения температуры в диапазон от 0 до 1</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Mat normalizedMatrix = new Mat();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Cv2.Normalize(temperatureMatrix, normalizedMatrix, 0, 255, NormTypes.MinMax, MatType.CV_8U);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Преобразуйте значения температуры в цвета с использованием ColorMap_JET</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Mat coloredImage = new Mat();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Cv2.ApplyColorMap(normalizedMatrix, coloredImage, ColormapTypes.Jet);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Выведите результат</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Cv2.ImShow(&quot;Colored Image&quot;, coloredImage);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Cv2.WaitKey(0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Cv2.DestroyAllWindows();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div><br>
Комментарий ChatGPT:<br>
<br>
В этом примере мы используем библиотеку OpenCvSharp для работы с OpenCV в C#. Мы создаем матрицу temperatureMatrix, содержащую значения температуры, затем нормализуем ее и применяем цветовую шкалу ColormapTypes.Jet с помощью функции ApplyColorMap. Результат будет отображен в окне.]]></description>
        <author>Majestio</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3895247</guid>
        <pubDate>Tue, 26 Sep 2023 12:37:04 +0000</pubDate>
        <title>Перевести температуру в цвет</title>
        <link>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3895247</link>
        <description><![CDATA[Pit-Bul: так, продолжим, вот до чего доковырял я:<br>
<br>
1. Я получаю массив int16 в размере 768 штук, каждое значение поделенное на 100 это температура точки с точностью 2 знака до запятой. Начальное разрешение матрицы 32х24 пикселя<br>
2. Далее я создаю массив картинки bgr_array длинной 32*24*3<br>
3. Далее я преобразую каждое значение температуры в цвет через HSV палитру. То есть маплю диапазон температуры от 10 до 150 градусов к hue от 260 до 0 (обратный диапазон чтобы синий был на низких температурах, красный на высоких), а сатурацию и насыщенность задаю в 1. А далее полученный цвет перевожу из HSV диапазона в RGB<br>
<br>
<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">public static int ThempToHue(decimal themp)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;decimal value = themp/100;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (value &#62; 260)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;while (value&#62;260)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;value-= 260;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;return (int)Map(value, 10, 150, 260, 0);</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
итоговый код получения массива следующий<br>
<br>
<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">var array_csharp = t_array.ToList&#60;UInt16&#62;();</div><div class="code_line">int width = 32;</div><div class="code_line">int height = 24;</div><div class="code_line">int bytesPerPixel = 3;</div><div class="code_line">int pixel_length = width * height * bytesPerPixel;</div><div class="code_line">byte[] bgr_array = new byte[pixel_length * bytesPerPixel];</div><div class="code_line">&nbsp;</div><div class="code_line">for (int i = 0; i &#60; array_csharp.Count; i++)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;int thempToHue = Utilites.ThempToHue(array_csharp[i]);</div><div class="code_line">&nbsp;&nbsp; &nbsp;var col = Utilites.ColorFromHSV(thempToHue, 1f, 1f);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;bgr_array[bytesPerPixel * i] = col.R;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;bgr_array[bytesPerPixel * i + 1] = col.G;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;bgr_array[bytesPerPixel * i + 2] = col.B;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<br>
Далее пытаюсь преобразовать это дело в картинку с помощью OpenCV<br>
<br>
<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">&nbsp;Mat src = new Mat(24, 32, MatType.CV_8UC3);</div><div class="code_line">&nbsp;src = Cv2.ImDecode(bgr_array.ToArray(), ImreadModes.AnyColor);</div><div class="code_line">&nbsp;var fName = $&quot;\images\{x}.jpg&quot;;</div><div class="code_line">&nbsp;x++;</div><div class="code_line">&nbsp;src.SaveImage(fName, new ImageEncodingParam(ImwriteFlags.JpegProgressive, 255));</div></ol></div></div></div></div><br>
<br>
и вот тут беда, при сохранении выдает ошибку что изображение пустое. В чем может быть дело ?]]></description>
        <author>Pit-Bul</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3893491</guid>
        <pubDate>Mon, 31 Jul 2023 18:01:00 +0000</pubDate>
        <title>Перевести температуру в цвет</title>
        <link>https://forum.sources.ru/index.php?showtopic=436854&amp;view=findpost&amp;p=3893491</link>
        <description><![CDATA[Pit-Bul: Доброго времени суток. Проблема нарисовалась. Получаю с тепловизора массив int16 значений температуры. Надо каждое значение температуры переконвертировать по цветовой шкале. Например я задаю шкалу от 20 градусов по Цельсию до 150 градусов по Цельсию, что будет соответствовать переходу цвета от синего к красному. Если не ошибаюсь, то в OpenCV  это соответствует ColorMap_JET. Как перевести значение температуры в цвет не могу придумать, может кто что то дельное посоветует, ибо с Гуглом у меня не сложилось. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2023-07-31T18:08:19+00:00">31.07.23, 18:08</time></span></span><br>
кстати, OpenCv.Sharp использовать можно, он у меня есть уже в проекте]]></description>
        <author>Pit-Bul</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	