Найдите известное изображение sub в увеличенном изображении

Проверьте имя в БД перед вставкой новой записи

$data = array(
    "id_username" => $this->session->id_account,
    "name_character" => $nome,
    "birthdate" => $data,
    "origin" => $origem,
    "gender" => $sexo,
    "pergunta1" => $pergunta3,
    "pergunta2" => $pergunta4,
    "history" => $history
);
$if_exists = $this->usuarios_model->check_user($data['name_character']);

//Here apply condition to check if user is exists or not
if($if_exists > 0){
    //Already Exists
}else{
    $this->usuarios_model->criarPersonagem($data); //New registration
}

Модель

public function check_user($name_character){

    //Here, get the number if rows with the new user name
    return $this->db->get_where('characters', ['Character' => $name_character])->num_rows();
}
20
задан Benjamin Lee 18 November 2008 в 03:13
поделиться

2 ответа

Вы сказали, что Ваше изображение не может быть точно тем же, но затем сказать, что Вы не хотите "нечеткие" алгоритмы. Я не уверен, что это совместимо. В целом, тем не менее, я думаю, что Вы хотите посмотреть регистрация изображения алгоритмы. Существует пакет C++ с открытым исходным кодом, названный ITK, который мог бы обеспечить некоторые подсказки. Также ImageJ является популярным пакетом Java с открытым исходным кодом. Оба из них имеют по крайней мере некоторые регистрационные возможности в наличии, если Вы вводите по абсолютному адресу вокруг.

4
ответ дан 30 November 2019 в 01:11
поделиться

Вот скелет кода, который Вы хотели бы использовать:

// look for all (x,y) positions where target appears in desktop
List<Loc> findMatches(Image desktop, Image target, float threshold) {
  List<Loc> locs;
  for (int y=0; y<desktop.height()-target.height(); y++) {
      for (int x=0; x<desktop.width()-target.width(); x++) {
          if (imageDistance(desktop, x, y, target) < threshold) {
              locs.append(Loc(x,y));
          }
      }
   }
   return locs;
}

// computes the root mean squared error between a rectangular window in 
// bigImg and target.
float imageDistance(Image bigImg, int bx, int by, Image target) {
    float dist = 0.0;
    for (int y=0; y<target.height(); y++) {
        for (int x=0; x<target.width(); x++) {
            // assume RGB images...
            for (int colorChannel=0; colorChannel<3; colorChannel++) {
                dist += Math.pow(target.getPixel(x,y) - bigImg.getPixel(bx+x,by+y), 2);
            }
         }
    }
    return Math.sqrt(dist) / target.width() / target.height();
}

Вы могли рассмотреть другие расстояния изображения (см. подобный вопрос ). Для Вашего приложения ошибка RMS является, вероятно, хорошим выбором.

существуют, вероятно, различные библиотеки Java, которые вычисляют это расстояние для Вас эффективно.

5
ответ дан 30 November 2019 в 01:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: