我正在使用OpenCV和Python在图像中查找圆。我能够使用OpenCV教程中的Hough圆变换代码找到圆。我想在圆心周围裁剪一个矩形。我没有能够得到正确的裁剪功能,并尝试了多种裁剪组合,要么得到了一个错误或图像的不正确部分。有人能说明我应该如何输入裁剪坐标吗?这就是我一直遇到的错误:
错误:(-215)大小。宽度
谢谢!
img = cv2.imread('myPicture.jpg',0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
circles = cv2.HoughCircles(img,cv.CV_HOUGH_GRADIENT,1,20)
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
#draw outer circle
cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
#draw center of circle
cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)
#crop ROI around circle...?
crop_cimg = cimg[i[0]:500,i[1]:700] #crop from x, y, w, h
cv2.imshow('detected circles',crop_cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()
只要错误可能来自crom\u cimg
参数,您是否检查了以下内容:
>
图片是否足够大,以便达到(x,y)=(499699)像素?
i[0]
应大于0且小于500
i[1]
应大于0且小于700
确保您处于原始图像的有效边界内。以下代码未经测试,但您应该能够解决可能的错误。
还要注意坐标与行/列索引(它们是相互交换的)。对于大多数opencv方法,坐标是合适的,但裁剪实际上是对numpy
und的切片操作,因此使用行/列索引。
img = cv2.imread('myPicture.jpg',0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
circles = cv2.HoughCircles(img,cv.CV_HOUGH_GRADIENT,1,20)
circles = np.uint16(np.around(circles))
cropSize = (500, 700) # <- added: what size do you want to extract
for i in circles[0,:]:
#draw outer circle
cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
#draw center of circle
cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)
#crop ROI around circle...?
# make sure the bounds won't under-/overflow
cropCoords = (max(0, i[1]-cropSize[0]//2),min(img.shape[0], i[1]+cropSize[0]//2),
max(0, i[0]-cropSize[1]//2),min(img.shape[1], i[0]+cropSize[1]//2))
crop_cimg = cimg[cropCoords[0]:cropCoords[1],
cropCoords[2]:cropCoords[3]]
cv2.imshow('detected circles',crop_cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()
我尝试过各种演示代码,如“opencv查找:轮廓”,模板匹配(效果不好,因为它无法检测到顶盖的旋转) 我发现最好的方法是将Canny边缘检测和Hough变换圆相结合,这样Canny边缘检测的输出结果可以是Hough变换圆的输入图像,结果如下。 不幸的是,并非所有圆圈都被检测到,如果我更改
我有两个矩形,其中一个是另一个的剪裁。现在我想围绕剪切矩形的中心旋转较大的矩形并调整x / y值。 如何计算旋转后的新x/y值? 我只想绕着小盒子的中心旋转大盒子的x/y。因此,较大盒子的x/y点相对于较小盒子的顶部/左侧点。我有小盒子的宽度和高度,所以我可以计算大盒子相对于小盒子中心的x/y点。旋转的角度以度为单位。旋转可以是任何角度,例如10度。
问题内容: 我正在尝试使三个对象绕一个圆旋转。到目前为止,我已经能够使一个对象绕圆旋转。如果不弄乱代码,我将一无所获。谁能建议最好的方法来做到这一点?这是代码的一部分。谢谢! 问题答案: jQuery解决方案,适用于任意数量的外部项目。
我现在正在写一个小游戏,我遇到了一个问题。我需要在一个大圆的边界上画64个小圆。所以我想要这样的东西: 我已经试过很多方法,但都不管用。如何在java中使用java实现这一点。awt。组件#paint()方法和java。awt。图形课? 谢谢
抱歉,因为这是一个垃圾问题,但是我完全不知道最好的方法。我相信一定有一些内在的或常见的做法,但我找不到它,谷歌没有发现任何有价值的东西。 我有一个javafx场景,其中有许多< code >圆圈 (以下命名是为了说明我试图达到的效果) 所有位置: 在 600 x 600 的场景中。 我需要将物体放置在物体周围。我不在乎在哪里,只要它们与月球的距离并且不接触。 我最初循环遍历每个对象,检查冲突并使用
我目前正在尝试绕世界x轴旋转一个位置向量(0,0,1),然后将其旋转回其原始位置(只是尝试使其工作)。我阅读了旋转矩阵,并使它工作(排序),但我现在相当卡住了。 如图和代码所示,我在起点(0,0,1)处创建了一个立方体,并将其向下旋转30度。但顺时针旋转时,它的旋转角度似乎超过30度。但是,当我逆时针(30度)旋转它时,它确实旋转了适当的量。这导致它没有在它应该(0,0,1)的起点处结束。 我想知