Sindbad~EG File Manager

Current Path : /usr/share/hplip/base/__pycache__/
Upload File :
Current File : //usr/share/hplip/base/__pycache__/imageprocessing.cpython-310.pyc

o

�/�a���@s�ddlmZmZddlTddlZddlZddlZddlZddlZddl	Z	ddl
mZddl
mZdZ
dZdZd	d
�Zdd�Zd
d�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Z d+d,�Z!d^d.d/�Z"d0d1�Z#d2d3�Z$d4d5�Z%d6d7�Z&d8d9�Z'd:d;�Z(d<d=�Z)d>d?�Z*d@dA�Z+dBdC�Z,dDdE�Z-dFdG�Z.dHdI�Z/dJdK�Z0dLdM�Z1dNdO�Z2dPdQ�Z3dRdS�Z4dTdU�Z5dVdW�Z6dXdY�Z7dZd[�Z8d\d]�Z9dS)_�)�utils�os_utils)�*N)�core_install)�dcheck���2�cCs�ddl}ddl}	|jd|jdf}t|�|�d�}|�|�||d�gd�g�}|�|dd�dd�f�}|dd}|dd}	|�||	g�|jd|�||	g�|jd|�||	g�|jd|�||	g�|jdg}
dd�|
D�}d	d�|D�}d
d�|D�}
dd�|
D�}dd�|D�}d
d�|D�}t	|�}t
|
�}t	|�}t
|�}tt||��}tt||��}|�ddt|d|�gddt|d|	�ggd�g�}|�|�|�|�dd�dd�f}|j
||||f|jd�}|S)Nr����?)rrr
��?cS�g|]}|d�qS�r���.0�ptrr�(/usr/share/hplip/base/imageprocessing.py�
<listcomp>V�z rotate_image.<locals>.<listcomp>cS�g|]}|dkr|�qSrr�r�xrrrrW�cS�g|]}|dkr|�qSrrrrrrrXrcSr�r
rrrrrrZrcSrrr�r�yrrrr[rcSrrrrrrrr\r)�flags)�numpy�cv2�shape�tuple�array�vstack�getRotationMatrix2D�matrix�A�max�min�int�abs�
warpAffine�INTER_LINEAR)�image�angle�npr!�
image_size�image_center�rot_mat�rot_mat_notranslate�image_w2�image_h2�rotated_coords�x_coords�x_pos�x_neg�y_coords�y_pos�y_neg�right_bound�
left_bound�	top_bound�	bot_bound�new_w�new_h�	trans_mat�
affine_mat�resultrrr�rotate_image4sR���$�rHcCstt�|tjd��d@}|d@dkr|ntj|}|tjtjtj}|t�|�|t�|�}|t�|�|t�|�}||krLt�||�nt�||�}tj||}	||kr_|n|}
|
t�|�}|t�|�t�|	�}|t�|�}
|
t�|�}|d||d|
fS)a9
    Given a rectangle of size wxh that has been rotated by 'angle' (in
    radians), computes the width and height of the largest possible
    axis-aligned rectangle within the rotated rectangle.

    Original JS code by 'Andri' and Magnus Hoff from Stack Overflow

    Converted to Python by Aaron Snoswell
    r�r
r)r+�math�floor�pi�cos�sin�atan2�tan)�w�hr0�quadrant�
sign_alpha�alpha�bb_w�bb_h�gamma�delta�length�d�arrrrr�largest_rotated_rect{s 

�r]c	Cs�|jd|jdf}t|dd�t|dd�f}||dkr$|d}||dkr.|d}t|d|d�}t|d|d�}t|d|d�}t|d|d�}|||�||�fS)zn
    Given a NumPy / OpenCV 2 image, crops it to the given width and height,
    around it's centre point
    r
rr
)r"r+)	r/�width�heightr2r3�x1�x2�y1�y2rrr�crop_around_center�s rdcCsddl}ddl}ddlm}ddl}|�|�}|jdd�\}}|�||j�}|j	|dddd�}	|j
|	d|jdddd	d
�}
g}g}|
dD]%\}
}}}|�|�
||||
��}|�|�t|�}|dkrk|�|�qF|srd}|St|�}|D]
}|t|�kr�|}qx|dks�|dkr�d}|S)
Nr��Imager�drI)�apertureSizer
g�f@�)�
minLineLength�
maxLineGap���)r r!�PILrfrJr$r"�cvtColor�COLOR_BGR2GRAY�Canny�HoughLinesPrL�degreesrO�appendr,r*)�imgr1r!rfrJr/�image_height�image_width�gray�edges�lines�angles�temp_anglesr`rbrarcr0�median_angle�itemrrr�
Deskew_angle1�s:


��rcsddl}ddl}ddl�ddlm}ddlm�|j\}}��|�	d��
��j�}d|�||f�d}��fdd�}d}	d	}
��
|
|
|	|	�}g}|D]}
|||
�\}}|�|�qM|sbd}|St|�}||�|�}|dkrt|}n|}|d
ks~|dkr�d}|S)Nrre��
interpolation�1r
��o@csJ�j||ddd�}�j|dd�}��|dd�|dd�d�}||fS)NFr)�reshape�orderr
��axis���r)�rotate�sum)�arrr0�data�hist�score��interr1rr�
find_score�s"z!Deskew_angle2.<locals>.find_scorerirlrm)�sysrJr rnrf�
scipy.ndimager��sizer$�convert�getdata�uint8r��arangertr)�index)rur�rJ�im�wd�ht�pix�bin_imgr�rY�limitr{�scoresr0r�r��
best_angle�
best_scorerr�r�
Deskew_angle2�s6
r�cCs�ddl}ddl}ddlm}ddl}t|�}t|�}|dkr)|dkr)t||g�}nt||g�}|dkr7|dks9|S|dksA|dkrC|S|�	|�}|j
dd�\}	}
|�|�}t||�}t
|gt|
|	|�|���R�}
|�|
�S)Nrre�Zi����rlrmr)r r!rnrfrJrr�r*r)r$r"�copyrHrdr]�radians�	fromarray)r�r1r!rfrJ�angle1�angle2r0r/rvrw�
image_orig�
image_rotated�image_rotated_croppedrrr�deskews6


���
	r�cCsbddlm}	|�|�j}|r|ddkrdS|ddkr/|ddkr/|ddkr/|dkr/dSdS)Nr)�	ImageStati,Tr
rF)rnr��Stat�var)r��lineart_moder��vrrr�	blankpage(s,r�c
Cs�ddl}ddl}|jdd�\}}|d|d}}|�||f|d�}|�|d�}	|�|d�}
t||
||	�}t||	||
�}|d|d|7<|d|d|7<|�||||f�S)Nrrr)rr)rr
)rr)r
r)r!r r"r&r,r+r-)
r/r0r!r1rRrQ�cX�cY�MrMrN�nW�nHrrr�rotate_bound5sr�c
	Cs�tt��dkrddl}|�|jd�ddlm}m}nddlm}m}||jd��5}z|�	|�Wnt
yD|�d�}|�	|�Ynw|��|�
�}|��\}}}}	|Wd�S1sawYdS)N�r�C)�
PyTessBaseAPI�PSM)�psm�RGB)r+�get_tesseract_version�locale�	setlocale�LC_ALL�	tesserocrr�r��AUTO_OSD�SetImage�IOErrorr��	Recognize�
AnalyseLayout�Orientation)
r�r�r�r��api�it�orientation�	directionr��deskew_anglerrr�orientangleOs"
�$�r�cCs@ddlm}ddl}ddddd�}t|�|�||�}|�|�S)Nrrei�r�)rr
rrI)rnrfr r�r$r�)r�r0rfr1�orient_dict�rotatedrrr�
autoorientcs

r�cCs$|j\}}|�dd|d|df�S)N�)r��crop)rurQrRrrr�initialcropms
r�cCsRt|�D]"\}}|��tt|dt���t|dt��}|tkr&|Sq|S�N)�	enumerate�sort�floatr��obviousness�len�	threshold)�vals�i�tmp�averagerrr�	find_lineqs$�r�cs>ddl}|j\�}dd�|g}t|���}g�|D]	}��t|��qt��}|�d�}|ddkrB|�	��fdd�t
|�D���n|�	��fdd�t|�D������}t
|�|d<|�|�}	|t
|	�|d<|�|dd�}
t
|
�|d<|�|dd�}|�|�}�t
|�|d	<|d|d	ks�|d|dkr�dSt|�S)
Nr�.�3c�$g|]}�|�|d���qSrr�rr��r�r^rrr��$zgetbox.<locals>.<listcomp>cr�rrr�r�rrr�r�r
rIr)r r��listr�rtr*�platform�python_version�splitr$�range�xranger�r��flipud�swapaxesr#)rur1r_�retval�pixels�pixel�
pyPlatform�num�forupper�forlower�forleft�forrightrr�r�getboxzs0

 

 r�cCs�ddlm}ddl}ddl}|�|�|�d�}t|�}|�|dk�}|jdd�\}}|j	dd�\}	}
|�|�||	�||
�f}t
|�|��}t|�}
|�
|
�}|S)Nrre�rIrIr�)rnrfr r!�blurr$�
auto_canny�argwherer*r)r�r�r�r�)r�rfr1r!�blurred�canny�ptsrbr`rcra�croppedru�boxrGrrr�autocrop�s
rcCs�ddlm}ddl}ddl}|�|�|�d�}|�|dd�}|�|dk�}|jdd�\}}|j	dd�\}	}
|�|�d|	�||
�f}|�
|�S)Nrrer��
rr�)rnrfr r!r�r$rqr�r*r)r�)r�rfr1r!rrrrbr`rcrarrrr�	mixedfeed�s
rcCsVddlm}m}|�}|D]}	|�||�d�q
	|�|�|D]}t�|�q!|S)Nr)�
PdfFileMerger�
PdfFileReader�hpscan)�PyPDF2rr	rt�write�os�remove)�adf_page_files�
outputfilerr	�merger�prrr�generatePdfFile�s
rcCs�ddlm}ddlm}		|�||d|df�}
d}|D]�}|	�|�}
zY|rX||dks3||dkrX|
�||d||df�|
�|
|d|d||d||d�n$|
�||d||df�|
�|
|d|d||d||d�WnAty�t	�
d�Yn4ty�}zt�
|�tr�t	�
d�WYd}~nd}~wty�}zt	�
d�WYd}~nd}~ww|
��t�|�|d7}q|
��|S)Nr)�canvasreg�ׁsF��?r
rI)�reportlab.pdfgenrrnrf�Canvas�open�setPageSize�drawInlineImage�	NameErrorr��exit�AssertionError�log�error�PY3�	Exception�showPager
�unlink�save)rr�orient_list�brx�bry�tlx�tly�output_pathrrf�cr�rr��errr�generatePdfFile_canvas�s<
,*�

���

r,cs�ddl�ddlm�ddlm}g}d}|dkr|�}	|t|�kr�||||dg}�fdd�|D�}t�fdd�|D��dd�����fd	d
�|D��}��|�}|D]}	t	�
|	�qX	|dkr�d}
|�d�}|�|
�|�
t|
d
��d|
}t�|�nt�d||�}
|�|
�|d}|t|�ks"|dkr�t�d||�}t|d��}
|�|
�Wd�	|S1s�wY	|SdS)Nrre)r�.pdfr
csg|]}��|��qSr)rrrerrr=sz!documentmerge.<locals>.<listcomp>csg|]}��|j�|jf�qSr)r�r�)r�z)r1rrr?sc3s �|]}��|����VqdSr�)�asarray�resize)rrQ)�	min_shaper1rr�	<genexpr>@s�z documentmerge.<locals>.<genexpr>ztemp.pdfr��rbzrm -f �	hpscandocr�wb)r rnrfrrr��sorted�hstackr�r
rr�r#rtrr�run�createSequencedFilenamer)r�extr)r�list_imr�r�imgs�	imgs_combr�temp�cmd�output�foutr)rfr1r1r�
documentmergesN



� 
��rB���Q��?cCsXddl}ddl}|�|�}ttdd||��}ttdd||��}|�|||�}|S)Nrr�)r r!�medianr+r)r*rq)r/�sigmar1r!r��lower�upper�edgedrrrr�es
r�cCsDddlm}ddl}|�|���}d||dk<d||dk<|�|�S)Nrrer�rDr�)rnrfr r/r�r�)r�rfr1�bwrrr�crushedts
rKc	Cszddl}ddl}ddlm}|�|�}|�||j�}d}d}|||}|�|dd��|j	�}|�
|dddd�}|�|�S)	Nrreg@g�rD���)r!r rnrfr$rorp�clip�astyper��fastNlMeansDenoisingr�)	r�r!r1rfr/rxrU�beta�denoisedrrr�bg_color_removals

rTcC�$ddlm}|�|�}|�|�}|S�Nr)�ImageEnhance)rnrW�	Sharpness�enhance�r��factorrW�enhancer_object�outrrr�adjust_sharpness��

r^cCrUrV)rnrW�ContrastrYrZrrr�adjust_contrast�r_racCrUrV)rnrW�
BrightnessrYrZrrr�adjust_brightness�r_rccCrUrV)rnrW�ColorrYrZrrr�adjust_color�r_recCs.|�d�dkr
td�dSd}gd�}|D]}t�|�}|r'tj�||�}nq|dkr�|�d�}|dd}tj	dd	krRt
jd
||gt
jt
j
d�}|��\}	}
nt
jd|gt
jt
j
d�}|��\}	}
tj�|�ru|d
|dd}n
|d
|dd}t�|�dS|d
|dd}t�|�dS)Nr-Fz-PDF viewer is trying open other than PDF file�)�kpdf�acroread�xpdf�evincezxdg-openTrz_ocr.pdfrI�ocrmypdf)�stdout�stderr�pypdfocrz  � �&)�endswith�printr�whichr
�path�joinr�r��version_info�
subprocess�Popen�PIPE�STDOUT�communicate�isfiler�execute)r@�ocr�
pdf_viewer�pdf_viewer_listr��vv�g�
output_ocrr]rlrmr?rrr�merge_PDF_viewer�s2
�
r�c
C�Td}zddl}W|Sty }zt|�}WYd}~|Sd}~wtd�}Y|S�Nr�Error occurred)rn�ImportError�str)�scanjet_flagrnrrrr�	check_pil��
���
r�c
Cr�r�)r r�r�)r�r1rrrr�check_numpy�r�r�c
Cr�r�)r!r�r�)r�r!rrrr�check_opencv�r�r�c	CsBd}zddl}W|Szddl}WY|Std�}YY|Sr�)rnrkr�)r�rnrkrrr�check_pypdfocr�s
��r�c
Cr�r�)�skimager�r�)r�r�rrrr�
check_skimage�r�r�c
Cs�d}z tt��dkrddl}|�|jd�ddl}W|Sddl}W|Sty9}zt|�}WYd}~|Sd}~wtyO}zt|�}WYd}~|Sd}~wtd�}Y|S)Nr�rr�r�)	r+r�r�r�r�r�r�r��AttributeError)r�r�r�rrrr�check_tesserocr_imutils	s(


������
r�c
Cr�r�)rr�r�)r�rrrrr�check_pypdf2r�r�c
Csvd}t��}|�d�}|ddkr9zddl}W|Sty/}zt|�}WYd}~|Sd}~wtd�}Y|SdS)Nr�rr�r��zbar)r�r�r�r�r�r�)r�r�r�r�rrrr�
check_zbar's

���
r�c Cs"ddl}ddlm}g}i}|j\}}	}
t}t|t�}t|	t�}
t}d|kr.|kr�nn�d|kr:|kr�nn�|d}|d}||}|d|}|||�||�f}|j\}}}td|d�D] }td|d�D]}|||f}|�|d|d|df�qnqe|d}|d}||}|d|}|||�||�f}|j\}}}td|d�D] }td|d�D]}|||f}|�|d|d|df�q�q�d|kr�|k�r�nn�|
|kr�|	k�r�nn�|d}|d}||}|d|}|||�||�f}|j\}}}td|d�D]"}td|d�D]}|||f}|�|d|d|df��q�q|d}|d}||}|d|}|||�||�f}|j\}}}td|d�D]"}td|d�D]}|||f}|�|d|d|df��qh�q_||k�r�|k�r6nn�d|k�r�|	k�r6nn�|d|}||}|d}|d}|||�||�f}|j\}}}td|d�D]"}td|d�D]}|||f}|�|d|d|df��qАq�|d|}||}|d}|d}|||�||�f}|j\}}}td|d�D]"}td|d�D]}|||f}|�|d|d|df��q�qd|k�rB|k�r�nn�d|k�rP|	k�r�nn�|d|}||}|d}|d}|||�||�f}|j\}}}td|d�D]"}td|d�D]}|||f}|�|d|d|df��q��q{|d|}||}|d}|d}|||�||�f}|j\}}}td|d�D]"}td|d�D]}|||f}|�|d|d|df��qАq�t|�}|D]
}|||�	|�<�q�|�
�}t|�}t|�}||d}t|�S)Nr��ior��r
rr�)
r r�r�r"�punchhole_marginr+r�rt�set�count�keysr�r6) �xcord�ycord�radiusrur1r��lr[r^r_�channelsr`rarbrc�s1�s2�s3�s4�myimgrQrRr*r��j�rgblist�mr.�d_keys�z_list�sortlist�trrr�
dominantcolor7s�0��4 � �8 � �8 � �r�csT|�t|��t|���g}td��D]�����fdd�td�D�}|�|�q|S)Nr
cs8g|]}t�|t���d�|�|��qSr)r+r�)rr���f�n�sr�rrr�s8z"lineargradient.<locals>.<listcomp>rI)r#r�rt)�dominant_color�white_color�
pixelcount�RGB_list�curr_vectorrr�r�lineargradient�sr�c%Cs*ddl}ddlm}ddlm}ddlm}m}ddlm	}m
}ddlm}ddl
m}	ddlm}
	d	}|�|�}||�}
|
|
�}|j\}}t}t|t�}t|t�}t}t|�}|�d
dd�}|||�}||||d
�\}}}}t|||�D]�\}}}d|kr�|kr�nnd|kr�|ks�nd|kr�|kr�nn||kr�|ks�nd|kr�|kr�nnd|kr�|ks�n||kr�|k�r
nqxd|kr�|k�r
nqx|	|||d|j�\}} t||||�}!tt|�t| ��D]\}"}#|!d|!d|!ddf||"|#f<q�qx|�|�}$|$S)Nrrer�)�rgba2rgb�rgb2gray)�hough_circle�hough_circle_peaks)r)�circle)�img_as_ubyte�rL�"r
)�total_num_peaksrrD)r rnrfr�r��
skimage.colorr�r��skimage.transformr�r��skimage.featurer�skimage.drawr��skimage.utilr�r$r"r�r+r�r��zipr�r�r�)%r�r1rfr�r�r�r�r�rr�r��	max_peaksru�img_grayr/r^r_r`rarbrcry�hough_radii�	hough_res�accums�cx�cy�radii�center_y�center_xr��rr�cc�dominantpixr�r��
finalimagerrr�punchhole_removal�sD


...4"�
r�cCsjddlm}ddl}ddl}ddl}ddl}|j|dd�}|�||j�}	t	t
|d|d|d��}
g}|�t|
ddd�t|
d|d�t|
d|d�gt
|
ddd�t
|
d|d	�t
|
d|d	�gf�|D]@\}}
|j|dd�}|j|
dd�}
|�|	||
�}|j\}}td|d�D]}td|d�D]}|||fd	kr�d
|||f<q�q�qm|�|�}|S)Nrrer�)�dtyper
rr�rD)rDrDrDrD)rnrfr r!rJr�r$ro�
COLOR_RGB2HSVr��rgb2hsvrtr)r*�inRanger"r�r�)r��color�color_rangerfr1r!rJr��npimg�hsv_img�	hsv_color�
boundariesrGrH�maskr_r^rRrQr�rrr�
color_dropout�s462�
���
r�c	Cs�|d|d|d}}}t|||�}t|||�}||}||kr%d}n2||kr6d|||dd}n!||krGd|||dd}n||krWd|||dd}|dkr^d}n||}|}t|d�}t|d�}t|d�}|||fS)	Nr�r�<ih�x��rDr)r)r*r+)	�rr��b�mx�mn�dfrRr�r�rrrr�s(
r�c
CsXd}z	ddlm}W|Sty"}zt|�}WYd}~|Sd}~wtd�}Y|S)Nrr�r�)r�r�r�r�)r�r�rrrr�check_scipy!s���
r�cCstjdkr
|�d�S|S)N)rIrzUTF-8)r�rv�decode)r�rrr�_read_string,s

r�c
Cs�z9tjddgtjtjd�}|��\}}t|���}|dkr#t|���}t�d|tj�}|r7|�	d�}|dWSWdSt
yL}zWYd}~dSd}~ww)N�	tesseractz-v)rmrlrfz^tesseract ((?:\d+\.)+\d+).*r
r)rwrxryr{r��strip�re�searchr��group�OSError)r�stdout_version�version�
version_matchr+rrrr�2s

��r�)rC):�baserr�base.grJr
r�r�r�rw�	installerrrr�r�r�rHr]rdrr�r�r�r�r�r�r�r�r�rrrr,rBr�rKrTr^rarcrer�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr�<module>snG$!2 

	/@
G#r."

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists