[英]Rotate image based in centroid using the rotation matrix
我发现这篇文章是这些家伙使用质心旋转了一个鸡蛋图像。 我在 OTSU 图像中找到了质心:
_, thr = cv2.threshold(grayscale, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
moment = cv2.moments(thr)
if moment['m00'] !=0 :
centroid = (int(moment['m10'] / moment['m00']), int(moment['m01'] / moment['m00']))
cv2.circle(result, centroid, 3, (0, 255, 0), -1)
showImage(result, "Centroid")
研究建议使用旋转矩阵使用质心旋转图像:
你能帮我如何使用 opencv 使用旋转矩阵吗?
这是我目前的方法,最近我找到了质心:
输入图像:
def showImage(img, titulo):
plt.figure(figsize=(5,5))
plt.title(titulo)
plt.imshow(img)
plt.show()
# Segmentar
imagePath = "images/sample1.jpeg"
image = cv2.imread(imagePath)
# convertir de formato BGR a RGB
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
original = image
# Mostrar imagen original
showImage(image, "Imagen Original")
#Aplicar filtro paso bajo (blur)
image = cv2.blur(image,(9,9),0)
# Convertir a HSV:
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# Mostrar canal R el cual el huevo presenta mayor contraste
showImage(hsv, "hsv image")
# Convertir escala de grises el hsv
grayscale = cv2.cvtColor(hsv, cv2.COLOR_RGB2GRAY)
showImage(grayscale, "Escala de grises hsv")
# Aplicar binarización OTSU
_, thr = cv2.threshold(grayscale, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
showImage(thr, "OTSU imagen")
# Poner máscara thr a la imágen original
result = cv2.bitwise_and(original, original, mask=thr)
showImage(result, "Imagen segmentada")
# Buscar centroide
moment = cv2.moments(thr)
if moment['m00'] !=0 :
centroid = (int(moment['m10'] / moment['m00']), int(moment['m01'] / moment['m00']))
cv2.circle(result, centroid, 3, (0, 255, 0), -1)
showImage(result, "Centroid")
您可以使用 OpenCV 中的warpAffine和warpPerspective等变形函数。 看来, warpAffine (仿射变换)对于您的应用程序来说已经足够了。 无论如何,您可以简单地使用以下代码:
Point center = Point( image.cols/2, image.rows/2 );
Mat rot_mat = getRotationMatrix2D( center, angle, scale ); // rot_mat is 2x3 double matrix), you can set scale=1
Mat warp_rotate_dst;
warpAffine( image, warp_rotate_dst, rot_mat, image.size());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.