LINUX.ORG.RU
решено ФорумTalks

Gimp 2.8.4


0

2

Хочу посканировать свою коллекцию календариков... И столкнулся с эстетической проблемой - мой CanonScan LIDE 25 обрезает 2 мм по полям! Что мне крайне не нравится. Так думаю фиг с ним кину на средину а потом разверну :)
Так вот, а как его ровно развернуть? Не ротейтом же крутить по пол градуса год каждую открыточьку... Может есть какае-то примочька особая, ведь задача я думаю не из редких.

На вооружении есть gimp 2.6.12 && 2.8.4 (могу 2.9 собрать, но он какой-то глючный)

★★

Последнее исправление: DenisPA (всего исправлений: 2)

а если прямоугольничек из белой бумаги подставить, чтобы ровно лежали?

А то повороты на пол градуса это все таки уничтожение качества и/или меееедлеееннно.

djzielony
()
Ответ на: комментарий от DenisPA

А по другому тогда, вроде никак, крути, верти. Ведь каждый календарик по другому смещается, нужен индивидуальный подход. Только если написать какой нибудь детектор края картинки, прифитить к краю линию, взять её угол в системе координат и автоматом на такой угол доворачивать картинки.

djzielony
()
Ответ на: комментарий от djzielony

Да, я уже думал об этом, наверное в отпуске этим займусь. Я просто думал есть какае-то штука для вращения прямоугольников или квадратов.

DenisPA ★★
() автор топика
Ответ на: комментарий от djzielony

Да ладно если готового нет, то я сам напишу обработчик BMPшек... Так даже интереснее будет...

DenisPA ★★
() автор топика
Ответ на: комментарий от DenisPA

Мне самому интересно стало. Дай пару сканов, а то я все свои обрезал до картинки, так что не имею на чем поработать.

djzielony
()
Ответ на: комментарий от Shlyapa

Scan Tailor is an interactive post-processing tool for scanned pages. It performs operations such as page splitting, deskewing...
deskewing

Ну да. Но сам сделать, все равно хочу.

djzielony
()

Хочу посканировать свою коллекцию календариков... И столкнулся с эстетической проблемой - мой CanonScan LIDE 25 обрезает 2 мм по полям!

Так отрежь из картона типа коробки от блендамеда 2мм полосочку и положи её сбоку от сканируемой картинки.

Napilnik ★★★★★
()
Ответ на: комментарий от djzielony

написать какой нибудь детектор края картинки, прифитить к краю линию, взять её угол в системе координат и автоматом на такой угол доворачивать картинки.

На OpenCV такое в 5 строчек реализуется.

kranky ★★★★★
()

Хочу посканировать свою коллекцию календариков... И столкнулся с эстетической проблемой - мой CanonScan LIDE 25 обрезает 2 мм по полям! Что мне крайне не нравится. Так думаю фиг с ним кину на средину а потом разверну :)

лучше парочку картонных направляющих полосочек подложи. Разворачивать - это убивать разрешение.

dikiy ★★☆☆☆
()
Ответ на: комментарий от dikiy

Да, так и сделал. По жалуй это самый правильный вариант.

DenisPA ★★
() автор топика

o_0
У меня обычно или чуток смещается тоже (ротейтом в том самом гимпе и правлю), или норм... а насчёт обрезается - то же самое, у края нельзя класть (Epson TX219)

ossnewcomer
()
Ответ на: комментарий от kranky

Ну да, этим и взялся. И показалось слишком простым и стало неинтересно. Но подумав, то нужно подготовить картинку чтобы распознавались только нужные линии, а не вообще все ну и всякие мелочи.

djzielony
()
Ответ на: комментарий от djzielony

Но подумав, то нужно подготовить картинку чтобы распознавались только нужные линии, а не вообще все ну и всякие мелочи.

Думаю достаточно будет Гаусса + Кэнни с исключением вложенных контуров.

kranky ★★★★★
()
Ответ на: комментарий от vsn

Держи. Можешь ужать до 5, если хочешь =)

#!/usr/bin/python
import cv2
import numpy as np
import sys
import math

def norm(vector):
    return np.sqrt(np.dot(vector, vector))

def unit_vector(vector):
    return vector / norm(vector)

def angle_between(v1, v2):
    v1_u = unit_vector(v1)
    v2_u = unit_vector(v2)
    angle = np.arccos(np.dot(v1_u, v2_u))
    if math.isnan(angle):
        if (v1_u == v2_u).all():
            return 0.0
        else:
            return np.pi
    return angle

cv2.namedWindow('win1', cv2.WINDOW_AUTOSIZE)
cv2.namedWindow('win2', cv2.WINDOW_AUTOSIZE)

max_area = 0
frame = cv2.imread(sys.argv[1], 0)
frame_c = cv2.imread(sys.argv[1], 1)
s = cv2.Canny(frame, 100, 150, apertureSize=5)
contours, hier = cv2.findContours(s, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours :
	cnt_len = cv2.arcLength(cnt, True)
	result = cv2.approxPolyDP(cnt, 0.05*cnt_len, 1)
	if len(result) ==4 and cv2.isContourConvex(result) :
		area1 = cv2.contourArea(result)
		if area1 > max_area :
			ext_poly = result
			max_area = area1
cv2.drawContours(frame, [result], -1, 200, 4)
M = cv2.moments(result)
centroid_x = int(M['m10']/M['m00'])
centroid_y = int(M['m01']/M['m00'])
center = (centroid_x, centroid_y)
#cv2.circle(frame, (centroid_x, centroid_y), 5, (0, 0, 250))
corners = np.array(result[:, 0, :], np.float32).reshape(-1, 2)
ang = angle_between((corners[0][0]-corners[1][0],corners[0][1]-corners[1][1]),(1,0))
ang = -1*(ang*180/np.pi)
print ang

matrix = cv2.getRotationMatrix2D(center, ang, 1.0)
frame_c = cv2.warpAffine(frame_c, matrix, frame.shape, flags=cv2.INTER_LINEAR)

cv2.imshow('win1', frame)
cv2.imshow('win2', frame_c)
cv2.waitKey()

испытывал на этой картинке: http://rghost.net/44355522/image.png

$ python pic90.py bad20.png
-19.9503557768
kranky ★★★★★
()

Прошу прощения, что мимо темы.

GIMP из репов у меня на каждый чих вешает систему намертво (возможно виноват gegl). Драйвера проприетарные от nvidia.

GIMP 2.8 через некоторое время начинает ужасно тормозить - даже менюшки отрисовываются по несколько секунд. Работать просто невозможно с ним становится.

В системе только GTK+ 2.24.12.

ТСу - попробуйте посмотреть в сторону imagemagick.

andreyu ★★★★★
()
Последнее исправление: andreyu (всего исправлений: 1)
Ответ на: комментарий от andreyu

GIMP 2.8 через некоторое время начинает ужасно тормозить - даже менюшки отрисовываются по несколько секунд.

У меня тоже тормозит. Не по несколько секунд конечно, но тормоза явно заметны.

Работать просто невозможно с ним становится.

Имхо, работать с ним уже стало невозможно после выхода 2.8

kranky ★★★★★
()
Ответ на: комментарий от kranky

Имхо, работать с ним уже стало невозможно после выхода 2.8

Не, плюшки 2.8 мне нравятся. А в 2.9 их стало еще больше. Но толку от плюшек ноль, если испольльзовать их нет возможности.
Хз что делать. Откатываться на 2.6 не хочется.

andreyu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.