这样一张9000*7000像素的图片该怎么样实现找出两个圆的区域。求大佬
# -*- coding: gbk -*-import cv2import numpy as npimage_path = r"C:\Users\17607\Desktop\smls pictures\Pic_20231122151507973.bmp"def row_method(src): image_width = src.shape[1] image_height = src.shape[0] image = np.array(src) cimage = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 灰度图 circles = cv2.HoughCircles(cimage, cv2.HOUGH_GRADIENT, 1, 40, param1=50, param2=30, minRadius=0, maxRadius=0) circles = np.uint16(np.around(circles)) # 取整 for i in circles[0, :]: center_x, center_y, radius = i[0], i[1], i[2] if 0 <= center_x - radius < image_width and 0 <= center_x + radius < image_width and \ 0 <= center_y - radius < image_height and 0 <= center_y + radius < image_height: cv2.circle(image, (i[0], i[1]), i[2], (0, 0, 255), 2) # 在原图上画圆,圆心,半径,颜色,线框 cv2.circle(image, (i[0], i[1]), 2, (255, 0, 0), 2) # 画圆心 cv2.putText(image, "param1=250, param2=58", (20, 20), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2) cv2.imshow("row_circles", image)src = cv2.imread(image_path) # 读取图片位置resized_image = cv2.resize(src, (src.shape[1] // 10, src.shape[0] // 10))cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE)cv2.imshow("input image", resized_image)threshold_OTSU_method(resized_image)row_method(resized_image)cv2.waitKey(0)cv2.destroyAllWindows()
这个只能得到有很多没用信息希望能得到这两个区域。。求大佬
根据你提供的代码和图片,看起来你正在尝试使用霍夫圆变换(Hough Circle Transform)来检测图片中的圆。然而,你遇到的问题是检测到了过多的圆形,而你只关心两个特定的圆。
要解决这个问题,你可以在检测到圆之后,检查这些圆的半径是否在你的预期范围内。只有当圆的半径在你期望的范围内时,你才在原图上画出这个圆和它的圆心。
以下是修改后的代码:
# -*- coding: gbk -*-import cv2import numpy as npimage_path = r"C:\Users\17607\Desktop\smls pictures\Pic_20231122151507973.bmp"expected_radius_min = 100 # 预期的最小半径expected_radius_max = 200 # 预期的最大半径def row_method(src): image_width = src.shape[1] image_height = src.shape[0] image = np.array(src) cimage = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 灰度图 circles = cv2.HoughCircles(cimage, cv2.HOUGH_GRADIENT, 1, 40, param1=50, param2=30, minRadius=expected_radius_min, maxRadius=expected_radius_max) circles = np.uint16(np.around(circles)) # 取整 for i in circles[0, :]: center_x, center_y, radius = i[0], i[1], i[2] if 0 <= center_x - radius < image_width and 0 <= center_x + radius < image_width and \ 0 <= center_y - radius < image_height and 0 <= center_y + radius < image_height: cv2.circle(image, (i[0], i[1]), i[2], (0, 0, 255), 2) # 在原图上画圆,圆心,半径,颜色,线框 cv2.circle(image, (i[0], i[1]), 2, (255, 0, 0), 2) # 画圆心 cv2.putText(image, "param1=250, param2=58", (20, 20), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2) cv2.imshow("row_circles", image)src = cv2.imread(image_path) # 读取图片位置resized_image = cv2.resize(src, (src.shape[1] // 10, src.shape[0] // 10))cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE)cv2.imshow("input image", resized_image)row_method(resized_image)cv2.waitKey(0)cv2.destroyAllWindows()
在这个修改后的代码中,我增加了两个变量expected_radius_min
和expected_radius_max
,用于指定你期望的圆的半径范围。只有当检测到的圆的半径在这个范围内时,才会在原图上画出这个圆和它的圆心。这样就可以过滤掉那些不必要的圆形,只保留你关心的两个圆。
本文向大家介绍python数据处理 根据颜色对图片进行分类的方法,包括了python数据处理 根据颜色对图片进行分类的方法的使用技巧和注意事项,需要的朋友参考一下 前面一篇文章有说过,利用scrapy来爬取图片,是为了对图片数据进行分类而收集数据。 本篇文章就是利用上次爬取的图片数据,根据图片的颜色特征来做一个简单的分类处理。 实现步骤如下: 1:图片路径添加 2:对比度处理 3:滤波处理 4:数
本文向大家介绍Python-使用Matplotlib处理PNG图片,包括了Python-使用Matplotlib处理PNG图片的使用技巧和注意事项,需要的朋友参考一下 Matplotlib是Python中令人惊叹的可视化库,用于数组的二维图。Matplotlib是一个基于NumPy数组的多平台数据可视化库,旨在与更广泛的SciPy堆栈配合使用。 示例
本文向大家介绍浅谈python图片处理Image和skimage的区别,包括了浅谈python图片处理Image和skimage的区别的使用技巧和注意事项,需要的朋友参考一下 做cnn的难免要做大量的图片处理。由于接手项目时间不长,且是新项目,前段时间写代码都很赶,现在稍微总结(恩,总结是个好习惯)。 1,首先安装python-Image和python-skimage、python-matplot
PIL QRCode 几种图片转字符算法介绍 验证码破解
classpath : herosphp\image\VerifyCode API说明 方法名称 说明 getInstance 创建验证码实例 configure 配置验证码信息 generate 产生验证码字符 show 显示验证码图片 举个栗子: $config = array('x'=>10, 'y'=>30, 'w'=>120, 'h'=>50, 'f'=>22); $verify = V
本文向大家介绍Python实现识别手写数字 Python图片读入与处理,包括了Python实现识别手写数字 Python图片读入与处理的使用技巧和注意事项,需要的朋友参考一下 写在前面 在上一篇文章Python徒手实现手写数字识别—大纲中,我们已经讲过了我们想要写的全部思路,所以我们不再说全部的思路。 我这一次将图片的读入与处理的代码写了一下,和大纲写的过程一样,这一段代码分为以下几个部分: 读入