我在网上阅读,发现可以根据使用边缘检测器检测到的线数,然后应用Hough变换来判断图像是否像素化<我试过那种方法,但霍夫变换似乎无法正确检测线条,我不明白为什么它不能正常工作
以下是一些可供参考的结果图像:canny边缘检测结果
以及霍夫变换的结果
如何改进测线检测
我使用的代码基于一些在线教程:
img = cv2.imread(image_path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
high_thresh, thresh_im = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
lowThresh = 0.5*high_thresh
edges = cv2.Canny(img, lowThresh, high_thresh)
minLineLength = 200
maxLineGap = 10
lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength,maxLineGap)
for x1,y1,x2,y2 in lines[0]:
cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
edges = cv2.Canny(gray,50,150,apertureSize = 3)
minLineLength = 200
maxLineGap = 10
lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength,maxLineGap)
# edited this line
for line in lines:
x1,y1,x2,y2 = line[0]
cv2.line(image,(x1,y1),(x2,y2),(0,255,0),2)
我试图检测黄色物体。我在HSV配色方案中执行颜色分割,使用cvInRange阈值到黄色范围,它返回一个二进制阈值蒙版,检测到的区域显示为白色,而其他颜色被忽略和涂黑。我认为获取边缘不仅会减少findConTour()的计算,还会使边缘平面的变化更加明显。因此,而不是这样做: 我做到了: 请参阅下面显示的图像帧输出的代码附加图片。 原始黄色对象1 HSV颜色空间中的对象2 在cvInrRange变为
我正在尝试使用Python OpenCV和Hough变换算法检测表线并从图像中提取完整的表。我需要有每条线的所有坐标,目的是绘制相同比例的相同表格。我了解Hough变换的工作原理,并尝试在没有OpenCV的情况下实现它,但在大图像上速度非常慢。 这是来自示例OpenCV Hough Transfrom的代码 Canny边缘检测返回图像Canny边缘检测结果 但是检测的结果是豪斯变换的结果 我不知道
我尝试过各种演示代码,如“opencv查找:轮廓”,模板匹配(效果不好,因为它无法检测到顶盖的旋转) 我发现最好的方法是将Canny边缘检测和Hough变换圆相结合,这样Canny边缘检测的输出结果可以是Hough变换圆的输入图像,结果如下。 不幸的是,并非所有圆圈都被检测到,如果我更改
我需要一个我一直在工作的算法的帮助。我试图检测阈值图像中的所有线条,检测所有线条,然后只输出那些平行的线条。阈值图像输出我感兴趣的对象,然后我通过canny边缘检测器过滤该图像。然后,该边缘图像通过概率Hough变换。现在,我希望该算法能够检测任何图像中的平行线。我想通过检测所有直线的坐标并计算它们的斜率(然后是角度)来实现这一点。平行线必须具有相同或几乎相同的角度,这样我只能输出具有相同角度的线
我想知道如何使用OpenCV在我的摄像机上检测图像。该图像可以是500个图像中的一个。 我此刻正在做的事: 我想要检测的图像是2-5KB小的。很少有人在上面发短信,但其他的只是一些迹象。这里有一个例子: 你们知道我怎么做吗?
问题内容: 我正在使用JAI并使用以下文件创建文件: 我在该行之前检查文件是否存在。但是,如何检查文件是.bmp还是.tiff还是图像文件? 有人知道吗? 问题答案: Image Magick项目具有识别图像的功能,并且有一个用于Image Magick的Java包装器,称为JMagick,我认为您可能需要考虑而不是重新发明轮子: http://www.jmagick.org 我一直在使用Imag