Как наложить на картинку на другое изображение в Python opencv

Техника, используемая в принятом ответе, работает только для однострочного текста ( demo ), но не для многострочного текста ( demo ) - как отмечено там.

Если кому-то нужно вертикально центрировать многострочный текст на изображение, вот несколько способов (методы 1 и 2, вдохновленные этой статьей CSS-Tricks )

Метод # 1: таблицы CSS ( FIDDLE ) (IE8 + ( caniuse ))

CSS:

div {
    display: table;
}
span {
    vertical-align: middle;
    display: table-cell;
}

Метод # 2: псевдоэлемент на контейнере ( FIDDLE ) (IE8 +)

CSS:

div {
   height: 200px; /* height of image */
}

div:before {
  content: '';
  display: inline-block;
  height: 100%;
  vertical-align: middle;
  margin-right: -0.25em; /* Adjusts for spacing */
}

img {
    position: absolute;
}

span {
  display: inline-block;
  vertical-align: middle;
  margin-left: 200px;  /* width of image */
}

Способ №3: Flexbox ( FIDDLE ) ( caniuse )

CSS (вышеупомянутая скрипта содержит префиксы поставщика):

div {   
    display: flex; 
    align-items: center;    
}
img {
    min-width: 200px; /* width of image */
}

0
задан shahidammer 4 March 2019 в 11:11
поделиться

1 ответ

Формат маски странный для чтения OpenCv в моей системе (используя opencv 3.4.2). Я смог прочитать его с помощью cv2.IMREAD_UNCHANGED, но он показывает, что в вашей маске 4 канала (я ожидал только один канал). Приведенный ниже код дает противоположное или то, что вы ожидаете:

 img = cv2.imread(r"C:\Users\...\Desktop\\W1kle.jpg")
 mask = cv2.imread(r"C:\Users\...\Desktop\LZdyB.png",cv2.IMREAD_UNCHANGED) 
 mask = mask[:,:,3]
 res = cv2.bitwise_and(img,img,mask=mask)
 cv2.imshow("image",res)
 cv2.waitKey(0)

Надеюсь, это поможет вам :)

0
ответ дан wdudzik 4 March 2019 в 11:11
поделиться
Другие вопросы по тегам:

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