Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
3 / 3 / 0
Регистрация: 22.09.2020
Сообщений: 28

Масштаб картинки с учетом содержимого

08.01.2021, 22:25. Показов 2160. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте, захотелось написать программу, которая бы "забавно" сжимала изображение. Испробовав .resize в PIL, .transpose в cv2, сайты для искажения картинки, не нашел достойного результата.
Подскажите пожалуйста методы или примеры, как можно реализовать подобные "непотребства".
P.s нашел еще два способа: этот сайт дает приемлимый результат, но для меня проблематично разобраться как выгружать фотографию на него http://www.imgonline.com.ua/picture-distortion.php , photoshop.api.
Изображения
  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.01.2021, 22:25
Ответы с готовыми решениями:

Масштаб картинки
как задавать масштаб на картинке (написать прогу) если картинка загружается так procedure TForm1.Button1Click(Sender: TObject); var...

Canvas масштаб картинки
var logo: TImage; begin logo:= TImage.Create(startform); logo.Picture.LoadFromFile('Resources/Treiler/logo.png'); //не...

Как изменять масштаб картинки
Всем привет. Как изменять масштаб картинки в picturebox?

2
3 / 3 / 0
Регистрация: 22.09.2020
Сообщений: 28
09.01.2021, 13:33  [ТС]
я решил остановиться на эффекте "рыбьего глаза". Успешно позаимствовав код с разных сайтов, встретил проблему. Выводится картинка с этим черным обрамлением, хотелось бы его сделать прозрачным.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import cv2
import numpy as np
import random
from PIL import Image
from PIL import ImageDraw
 
 
def main():
    src = cv2.imread('image.jpg')
    h, w = src.shape[0:2]
    intrinsics = np.zeros((3, 3), np.float64)
    intrinsics[0, 0] = 100
    intrinsics[1, 1] = 100
    intrinsics[2, 2] = 10
    intrinsics[0, 2] = w / 2
    intrinsics[1, 2] = h / 2
    newCamMtx = np.zeros((3, 3), np.float64)
    newCamMtx[0, 0] = 1000
    newCamMtx[1, 1] = 1000
    newCamMtx[2, 2] = 1
    newCamMtx[0, 2] = w / 2
    newCamMtx[1, 2] = h / 2
    dist_coeffs = np.zeros((1, 4), np.float64)
    dist_coeffs[0, 0] = -45.0
    dist_coeffs[0, 1] = random.randint(0, 9)
    dist_coeffs[0, 2] = random.randint(0, 9)
    dist_coeffs[0, 3] = random.randint(0, 2)
    map1, map2 = cv2.initUndistortRectifyMap(intrinsics, dist_coeffs, None, newCamMtx, src.shape[:2], cv2.CV_16SC2)
    res = cv2.remap(src, map1, map2, cv2.INTER_LINEAR)
    scale_percent = 30 
    width = int(res.shape[1] * scale_percent / 100)
    height = int(res.shape[0] * scale_percent / 100)
    dim = (width, height)
    resized = cv2.resize(res, dim, interpolation=cv2.INTER_AREA)
    (h, w, d) = resized.shape
    center = (w // 2, h // 2)
    M = cv2.getRotationMatrix2D(center, 180, 1.0)
    rotated = cv2.warpAffine(resized, M, (w, h))
    isWritten = cv2.imwrite('D:/Users/User/Desktop/Image.png', rotated)
    cv2.waitKey(0)
    image = cv2.imread('D:/Users/User/Desktop/Image.png')
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    threshold_level = 50
    coords = np.column_stack(np.where(gray < threshold_level))
    mask = gray < threshold_level
    image[mask] = (0, 0, 0)
    cv2.waitKey()
    isWritten = cv2.imwrite('D:/Users/User/Desktop/Image.png', image)
    if isWritten:
        print('Image is successfully saved as file.')
 
 
if __name__ == '__main__':
    main()
> image[mask] = (0, 0, 0) этот кортеж - цвет на который заменяются черные пиксели в изображении. Вероятно от него и стоит плясать
Миниатюры
Масштаб картинки с учетом содержимого  
0
3 / 3 / 0
Регистрация: 22.09.2020
Сообщений: 28
09.01.2021, 13:44  [ТС]
ну надо же так) как только выложил и описал проблему, дак сразу она решилась.
Python
1
2
3
4
5
6
7
src = cv2.imread(file_name)
tmp = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
_,alpha = cv2.threshold(tmp,0,255,cv2.THRESH_BINARY)
b, g, r = cv2.split(src)
rgba = [b,g,r, alpha]
dst = cv2.merge(rgba,4)
isWritten = cv2.imwrite('D:/Users/User/Desktop/Image.png', dst)
прекрасным образом обрезало лишнее
Миниатюры
Масштаб картинки с учетом содержимого  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.01.2021, 13:44
Помогаю со студенческими работами здесь

Увеличить и уменьшить масштаб картинки
есть код: import os import pygame import requests import sys import time # Создайте оконное приложение, отображающее...

Масштаб области или картинки
У меня есть графика, рисую посредством Graphics, нужно сделать, чтобы по кнопке я мог увеличить нужную область или уменьшить, помогите как...

Как поменять масштаб картинки?
Привет! Мне нужно менять масштаб картинки. Я хочу чтобы она периодически увеличивалась и уменьшалась. Я загружаю картинку таким образом...

Выпадающий список с учетом регистра содержимого
Всем привет , создаю выпадающий список: Set x = ws.Range(&quot;D:D&quot;).SpecialCells(xlCellTypeConstants) With...

Как увеличить, или уменьшить размер картинки? (масштаб)
Есть картинка, размером 400*400 пикселей. Через PictureBox вывожу её на экран, если задаю размер 400*400, то все хорошо, а если меньший,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru