±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁ˱ßÔµ¼ì²âµÄ¸÷Àà±ßÔµËã×Ó£¬ÒÔ¼°¶ÔÔͼ¼°ËüÐýת±ä»»ºóµÄͼÏñ½øÐнǵã¼ì²â
£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚCSDN£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
±ßÔµ¼ì²â£º
1.RobertsËã×Ó
2.PrewittËã×Ó
3.SobelËã×Ó
4.LaplacianËã×Ó
5.Cannyº¯Êý
´úÂëÈçÏ£º
import cv2
import numpy as np
import matplotlib.pyplot as plt
image = cv2.imread('lenna.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('origin', image)
h, w = image.shape # »ñȡͼÏñµÄ¸ß¶ÈºÍ¿í¶È
# RobertsËã×Ó
kernelx = np.array([[-1, 0], [0, 1]], dtype=int)
kernely = np.array([[0, -1], [1, 0]], dtype=int)
x = cv2.filter2D(image, cv2.CV_16S, kernelx)
y = cv2.filter2D(image, cv2.CV_16S, kernely)
absX = cv2.convertScaleAbs(x)
absY = cv2.convertScaleAbs(y)
Roberts = cv2.addWeighted(absX, 0.5, absY, 0.5,
0)
cv2.imshow('Roberts', Roberts )
# PrewittËã×Ó
kernelx = np.array([[1, 1, 1], [0, 0, 0], [-1,
-1, -1]], dtype=int)
kernely = np.array([[-1, 0, 1], [-1, 0, 1],
[-1, 0, 1]], dtype=int)
x = cv2.filter2D(image, cv2.CV_16S, kernelx)
y = cv2.filter2D(image, cv2.CV_16S, kernely)
absX = cv2.convertScaleAbs(x)
absY = cv2.convertScaleAbs(y)
Prewitt = cv2.addWeighted(absX, 0.5, absY, 0.5,
0)
cv2.imshow('Prewitt', Prewitt)
# Sobel Â˲¨Æ÷ ½øÐбߵļì²â
sobel_horizontal = cv2.Sobel(image, cv2.CV_64F,
1, 0, ksize=5) # ˮƽ·½Ïò
sobel_vetical = cv2.Sobel(image, cv2.CV_64F,
0, 1, ksize=5) # ´¹Ö±·½Ïò
cv2.imshow('sobel_H', sobel_horizontal) # ˮƽ·½Ïò
cv2.imshow('sobel_V', sobel_vetical) # ´¹Ö±·½Ïò
# ÀÆÕÀ˹Ëã×Ó ½øÐбߵļì²â 64F´ú±íÿһ¸öÏñËØµãÔªËØÕ¼64λ¸¡µãÊý
laplacian = cv2.Laplacian(image, cv2.CV_64F,
ksize=5)
cv2.imshow('laplacian', laplacian)
# # Canny±ß¼ì²âÆ÷
canny = cv2.Canny(image, 50, 240)
cv2.imshow('Canny', canny)
cv2.waitKey(0)
cv2.destroyAllWindows()
|
½á¹ûͼÈçÏÂ
Roberts

prewitt

Laplacian

canny

Sobel_v

sobel_h

Éè¼Æ¼ì²â¾ßÓÐÌØ¶¨½Ç¶È±ßÔµµÄËã×Ó£»
¼ì²â¾ßÓÐ45o½ÇµÄ±ßÔµµÄ3¡Á3Ëã×Ó£»
¼ì²â¾ßÓÐ45o½ÇµÄ±ßÔµµÄ5¡Á5Ëã×Ó£»
ÕâÀïÎÒʹÓõÄÊÇprewittÄ£°å
3x3´úÂëÈçÏ£º
import cv2
import numpy as np
import matplotlib.pyplot as plt
image = cv2.imread('lenna.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('origin', image)
# RobertsËã×Ó
kernelx = np.array([[1, 1, 0], [1, 0, -1], [0,
-1, -1]], dtype=int)
kernely = np.array([[1, 1, 0], [1, 0, -1], [0,
-1, -1]], dtype=int)
x = cv2.filter2D(image, cv2.CV_16S, kernelx)
y = cv2.filter2D(image, cv2.CV_16S, kernely)
absX = cv2.convertScaleAbs(x)
absY = cv2.convertScaleAbs(y)
Prewitt = cv2.addWeighted(absX, 0.5, absY, 0.5,
0)
cv2.imshow('Prewitt', Prewitt)
cv2.waitKey(0)
cv2.destroyAllWindows()
|
5x5´úÂëÈçÏÂ
import cv2
import numpy as np
import matplotlib.pyplot as plt
image = cv2.imread('lenna.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('origin', image)
# RobertsËã×Ó
kernelx = np.array([[1, 1, 1, 1, 0], [1, 1,
1, 0, -1], [1,1,0, -1, -1],[1,0,-1,-1,-1],[0,-1,-1,-1,-1]],
dtype=int)
kernely = np.array([[1, 1, 1, 1, 0], [1, 1,
1, 0, -1], [1,1,0, -1, -1],[1,0,-1,-1,-1],[0,-1,-1,-1,-1]],
dtype=int)
x = cv2.filter2D(image, cv2.CV_16S, kernelx)
y = cv2.filter2D(image, cv2.CV_16S, kernely)
absX = cv2.convertScaleAbs(x)
absY = cv2.convertScaleAbs(y)
Prewitt = cv2.addWeighted(absX, 0.5, absY, 0.5,
0)
cv2.imshow('Prewitt', Prewitt)
cv2.waitKey(0)
cv2.destroyAllWindows()
|
½Çµã¼ì²â
import cv2 as
cv
import numpy as np
from matplotlib import pyplot as plt
def cornerHarri(imgae):
gray = cv.cvtColor(imgae, cv.COLOR_BGR2GRAY)
gray = np.float32(gray)
dst = cv.cornerHarris(gray, 2, 3, 0.04)
dst = cv.dilate(dst, None)
imgae[dst>0.01*dst.max()]=[0,0,255]
src = cv.imread("whiteandblack.jpg")
rows, cols, channel = src.shape
#ÈÆÍ¼ÏñµÄÖÐÐÄÐýת
#²ÎÊý£ºÐýתÖÐÐÄ Ðýת¶ÈÊý scale
M = cv.getRotationMatrix2D((cols/2, rows/2),
30, 1)
#²ÎÊý£ºÔʼͼÏñ Ðýת²ÎÊý ÔªËØÍ¼Ïñ¿í¸ß
rotated = cv.warpAffine(src, M, (cols, rows))
cv.imshow("contours", src)
cornerHarri(src)
cv.imshow("corn",src)
cornerHarri(rotated)
cv.imshow("corn1",rotated)
cv.waitKey(0)
cv.destroyAllWindows()
|
ÕâÀïÊǶÔÔͼ¼°ËüÐýת±ä»»ºóµÄͼÏñ½øÐнǵã¼ì²â
ͼÏñÈçÏÂ
Ôͼ£º

½Çµã¼ì²âºó£º

ÐýתºóµÄ½Çµã¼ì²â£º

ʹÓÃcv2.goodFeaturesToTrack()¼ì²â½Çµã
µÀÀíÒ»ÑùÏÂÃæ¸ø³ö´úÂ루½á¹ûͼ¾Í²»·ÅÁË£©£º
import numpy
as np
import cv2
from matplotlib import pyplot as plt
def track(imgae):
gray = cv2.cvtColor(rotated,cv2.COLOR_BGR2GRAY)
corners = cv2.goodFeaturesToTrack(gray,25,0.01,10)
corners = np.int0(corners)
for i in corners:
x,y = i.ravel()
cv2.circle(rotated,(x,y),3,255,-1)
img = cv2.imread('whiteandblack.jpg') rows, cols, channel = img.shape
#ÈÆÍ¼ÏñµÄÖÐÐÄÐýת
#²ÎÊý£ºÐýתÖÐÐÄ Ðýת¶ÈÊý scale
M = cv2.getRotationMatrix2D((cols/2, rows/2),
30, 1)
#²ÎÊý£ºÔʼͼÏñ Ðýת²ÎÊý ÔªËØÍ¼Ïñ¿í¸ß
rotated = cv2.warpAffine(img, M, (cols, rows))
cv2.imshow("contours", img)
track(img)
cv2.imshow("corn",img)
track(rotated)
cv2.imshow("corn1",rotated)
cv.waitKey(0)
cv.destroyAllWindows()
|
|