+
    Ai                     ~    ^ RI t^RIHt ^RIHtHt  ! R R4      t ! R R4      tRR	R
RRRRR/R lt	R t
R tR tR# )    N)img_as_float)_supported_float_typecheck_nDc                   ,   a  ] tR t^
t o R tR tRtV tR# )FeatureDetectorc                <    \         P                  ! . 4      V n        R # N)nparray
keypoints_selfs   &R/var/www/html/photoedit/myenv/lib/python3.14/site-packages/skimage/feature/util.py__init__FeatureDetector.__init__   s    ((2,    c                    \        4       h)zUDetect keypoints in image.

Parameters
----------
image : 2D array
    Input image.

NotImplementedError)r   images   &&r   detectFeatureDetector.detect   s     "##r   )r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes____classdictcell____classdict__s   @r   r   r   
   s     '	$ 	$r   r   c                   ,   a  ] tR t^t o R tR tRtV tR# )DescriptorExtractorc                <    \         P                  ! . 4      V n        R # r	   )r
   r   descriptors_r   s   &r   r   DescriptorExtractor.__init__   s    HHRLr   c                    \        4       h)zExtract feature descriptors in image for given keypoints.

Parameters
----------
image : 2D array
    Input image.
keypoints : (N, 2) array
    Keypoint locations as ``(row, col)``.

r   )r   r   	keypointss   &&&r   extractDescriptorExtractor.extract   s     "##r   )r$   N)r   r   r   r   r   r(   r   r   r   s   @r   r"   r"      s     )$ $r   r"   keypoints_colorkmatches_coloronly_matchesF	alignment
horizontalc               $	   \        V 4      p \        V4      p\        V P                  4      p
\        VP                  4      pV P                  ^ ,          VP                  ^ ,          8  d   VP                  ^ ,          V
^ &   M?V P                  ^ ,          VP                  ^ ,          8  d   V P                  ^ ,          V^ &   V P                  ^,          VP                  ^,          8  d   VP                  ^,          V
^&   M?V P                  ^,          VP                  ^,          8  d   V P                  ^,          V^&   WP                  8w  dP   \        P                  ! WP
                  R7      pWRV P                  ^ ,          1RV P                  ^,          13&   Tp WP                  8w  dP   \        P                  ! WP
                  R7      pWRVP                  ^ ,          1RVP                  ^,          13&   Tp\        P                  ! V P                  4      pV	R8X  d    \        P                  ! W.^R7      p^ V^ &   M7V	R8X  d    \        P                  ! W.^ R7      p^ V^&   MRV	 R2p\        V4      hV'       gc   VP                  VR,          VR,          RVR	7       VP                  VR,          V^,          ,           VR,          V^ ,          ,           RVR	7       TP                  VR
R7       VP                  ^ V P                  ^,          V^,          ,           V P                  ^ ,          V^ ,          ,           ^ 34       VP                  ^ ,          p^ RIHp VfK   \        P                  P                  ^ R7      p\!        V4       Uu. uF  pVP                  ^4      NK  	  ppM[V! V4      '       d   \!        V4       Uu. uF  pVNK  	  ppM2\#        VR4      '       d   \%        V4      V8X  d   TpMRp\        V4      h\'        V4       Fk  w  ppVw  ppVP)                  VV^3,          VV^3,          V^,          ,           3VV^ 3,          VV^ 3,          V^ ,          ,           3RVV,          R7       Km  	  R# u upi u upi )a  Plot matched features between two images.

.. versionadded:: 0.23

Parameters
----------
image0 : (N, M [, 3]) array
    First image.
image1 : (N, M [, 3]) array
    Second image.
keypoints0 : (K1, 2) array
    First keypoint coordinates as ``(row, col)``.
keypoints1 : (K2, 2) array
    Second keypoint coordinates as ``(row, col)``.
matches : (Q, 2) array
    Indices of corresponding matches in first and second sets of
    descriptors, where `matches[:, 0]` (resp. `matches[:, 1]`) contains
    the indices in the first (resp. second) set of descriptors.
ax : matplotlib.axes.Axes
    The Axes object where the images and their matched features are drawn.
keypoints_color : matplotlib color, optional
    Color for keypoint locations.
matches_color : matplotlib color or sequence thereof, optional
    Single color or sequence of colors for each line defined by `matches`,
    which connect keypoint matches. See [1]_ for an overview of supported
    color formats. By default, colors are picked randomly.
only_matches : bool, optional
    Set to True to plot matches only and not the keypoint locations.
alignment : {'horizontal', 'vertical'}, optional
    Whether to show the two images side by side (`'horizontal'`), or one above
    the other (`'vertical'`).

References
----------
.. [1] https://matplotlib.org/stable/users/explain/colors/colors.html#specifying-colors

Notes
-----
To make a sequence of colors passed to `matches_color` work for any number of
`matches`, you can wrap that sequence in :func:`itertools.cycle`.
)dtypeNr/   )axisverticalzV`plot_matched_features` accepts either 'horizontal' or 'vertical' for alignment, but 'z~' was given. See https://scikit-image.org/docs/dev/api/skimage.feature.html#skimage.feature.plot_matched_features for details.none)
facecolors
edgecolorsgray)cmap)is_color_like)seed__len__zb`matches_color` needs to be a single color or a sequence of length equal to the number of matches.-)colorNNN   r?   r   )r   listshaper
   zerosr1   r   concatenate
ValueErrorscatterimshowr2   matplotlib.colorsr9   randomdefault_rngrangehasattrlen	enumerateplot)image0image1
keypoints0
keypoints1matchesaxr*   r,   r-   r.   
new_shape0
new_shape1
new_image0
new_image1offsetr   mesgnumber_of_matchesr9   rng_colorserror_messageimatchidx0idx1s   &&$$$$$$$$                 r   plot_matched_featuresrf   ,   s   l &!F&!Ffll#Jfll#J||Aa(Q
1	a6<<?	*Q
1||Aa(Q
1	a6<<?	*Q
1\\!XXj=
;A$V\\!_$&7Q&778\\!XXj=
;A$V\\!_$&7Q&778XXfll#FL /a8q		j	 /a8q	(k * 	 


tt&	 	 	
 	

tvay(tvay(&	 	 	
 IIe&I!GGQQ&)+V\\!_vay-H!LMa(/ii###+)./@)AB)AA#**Q-)AB	}	%	%)./@)AB)AA-)AB			*	*s=/AEV/VF 	 ''g&5
d
a *T1W"5q	"ABa *T1W"5q	"AB)	 	 	
 ' CBs   RRc                     \         P                  ! V 4      p \        V ^4       \        V 4      p \	        V P
                  4      pV P                  VRR7      #    F)copy)r
   squeezer   r   r   r1   astyper   float_dtypes   & r   _prepare_grayscale_input_2Dro      sE    JJuEUAE'4K<<%<00r   c                     \         P                  ! V 4      p \        V \        ^^4      4       \	        V 4      p \        V P                  4      pV P                  VRR7      # rh   )r
   rk   r   rL   r   r   r1   rl   rm   s   & r   _prepare_grayscale_input_nDrq      sK    JJuEUE!QK E'4K<<%<00r   c                    V ^ ,          pV ^,          pV^,
          VR,          8  VR,          W2,
          ^,           8  ,          V^,
          VR,          8  ,          VR,          WB,
          ^,           8  ,          pV# )a  Mask coordinates that are within certain distance from the image border.

Parameters
----------
image_shape : (2,) array_like
    Shape of the image as ``(rows, cols)``.
keypoints : (N, 2) array
    Keypoint coordinates as ``(rows, cols)``.
distance : int
    Image border distance.

Returns
-------
mask : (N,) bool array
    Mask indicating if pixels are within the image (``True``) or in the
    border region of the image (``False``).

rA   r>    )image_shaper'   distancerowscolsmasks   &&&   r   _mask_border_keypointsry      s{    ( q>Dq>D Q,)D/	)T?do12	4qLIdO+	- T?do12	4 	 Kr   )numpyr
   utilr   _shared.utilsr   r   r   r"   rf   ro   rq   ry   rs   r   r   <module>r}      sf     $ $ $ $$K
 K
 K
 K
 K
\11r   