MySQLdb - то, что я использовал прежде.
, Если Вы размещаете, использует версию 2.5 Python или выше, поддержка sqlite3 баз данных встроена (sqlite, позволяет Вам иметь реляционную базу данных, которая является просто файлом в Вашей файловой системе). Но покупатель остерегается, sqlite не подходит для производства, таким образом, это может зависеть, что Вы пытаетесь сделать с ним.
Другая опция может состоять в том, чтобы назвать Ваш хост и жаловаться или изменить хосты. Честно в эти дни у любого сам уважение веб-хоста, который поддерживает Python и mysql, должен быть MySQLdb пред установленный.
Вы можете получить очень хорошие результаты, используя алгоритм квантования октодерева . Другие алгоритмы квантования можно найти в Википедии .
Я согласен с комментариями - для программного решения определенно потребуется дополнительная информация. Но до тех пор, предполагая, что вы получите значения RGB для каждого пикселя изображения, вам следует рассмотреть цветовое пространство HSV , где можно сказать, что оттенок представляет «тон» каждого пикселя. Затем вы можете использовать гистограмму , чтобы определить наиболее часто используемые тона в вашем изображении.
Ну, я предполагаю, что вы может получить доступ к каждому пиксельному цвету RGB. Это можно сделать двумя способами, в зависимости от того, как вы этого хотите.
Сначала вы можете просто создать некоторые из всех пикселей R, G и B. Вот так.
Псевдокод.
int Red = 0;
int Green = 0;
int Blue = 0;
foreach (Pixels as aPixel) {
Red += aPixel.getRed();
Green += aPixel.getGreen();
Blue += aPixel.getBlue();
}
Затем посмотрите, какой из них больше .
Это даст вам только изображение более красного, зеленого или синего.
Другой способ также даст вам статический или комбинированный цвет (например, оранжевый), просто создав гистограмму каждой комбинации RGB.
Псевдокод .
Map ColorCounts = new();
foreach (Pixels as aPixel) {
const aRGB = aPixel.getRGB();
var aCount = ColorCounts.get(aRGB);
aCount++;
ColorCounts.put(aRGB, aCount);
}
Тогда посмотрите, у кого больше счетчика. Вы также можете уменьшить цветовое разрешение, поскольку обычная окраска RGB даст вам до 6,7 миллиона цветов.
Это легко сделать, задав RGB диапазонам цветов. Например, предположим, что RGB - это 8 шагов, а не 256.
Псевдокод.
function Reduce(Color) {
return (Color/32)*32; // 32 is 256/8 as for 8 ranges.
}
function ReduceRGB(RGB) {
return new RGB(Reduce(RGB.getRed()),Reduce(RGB.getGreen() Reduce(RGB.getBlue()));
}
Map ColorCounts = new();
foreach (Pixels as aPixel) {
const aRGB = ReduceRGB(aPixel.getRGB());
var aCount = ColorCounts.get(aRGB);
aCount++;
ColorCounts.put(aRGB, aCount);
}
Тогда вы можете увидеть, какой диапазон имеет наибольшее значение.
Я надеюсь, что этот метод имеет для вас смысл.