实心矩形图像识别有关问题,期待!
实心矩形图像识别问题,期待!!!
大家好,我想在图像中找到一个矩形的位置,矩形是黑色实心的。图像是白纸黑字扫描成的。角度无法固定。
请问,无论何种角度扫描,我怎么找到矩形的位置。包括矩形的长宽,对角线坐标,越详细越好!!
------解决方案--------------------
图上除了“黑色实心的矩形”还有什么?
------解决方案--------------------
贴张图出来看看
------解决方案--------------------
楼主去年的帖子还没结呢.
你要的是机器视觉,这一课题不是很简单,类似以前我见过的一套PCB自动抄板软件,卖价15W.
只需要给出一张无元件的单或双面PCB正反面的照片,它会自动生成PRETOL99的PCB图格式,很牛的.
具体原理没有研究过,帮顶吧.
------解决方案--------------------
楼主想得太简单了.
------解决方案--------------------
由于已知仅有一个矩形,问题没有“人工视觉”那么复杂。
逐行扫描,将结果分为两种情况。
1 矩形是水平的。此情况下,每行黑色点的起始坐标相同。取得起始 X 坐标、起始 Y 坐标、终止 X 坐标、终止 Y 坐标,就可以得到四角坐标。
2 矩形是倾斜的。这样每行的 X 起始坐标会不同。此情况下只要取得最高点、最低点、最左点,最右点坐标,就是矩形的 4 个顶点。剩下的都是简单的解析几何计算。
需要考虑的是,扫描中的近似处理。因为扫描所得的点,与数学理想的点会有误差。
------解决方案--------------------
图像如上:
我是教师,想做个用数码技术识别机读卡的软件。我想检测出边框四条直线的方程,
我用hough变换检测出来很慢,没有多大的使用价值!
------解决方案--------------------
Option Explicit
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Const Pi = 3.14159265358979
Private Type Myline
topx As Integer
topy As Integer
botx As Integer
boty As Integer
End Type
Private Sub Command1_Click()
Dim bmWidth As Long
Dim bmHeight As Long
Dim Dc As Long
Dim MaxLength As Long, Alpha As Integer
Dim i As Long, j As Long, m As Long, Length As Long
Dim IpMyLine() As Myline, lpDistAlpha() As Long, maxd As Long
Dim MaxdLine As Myline, secondmaxd As Myline, midvalue() As Long
bmWidth = Picture1.Width / Screen.TwipsPerPixelX
bmHeight = Picture1.Height / Screen.TwipsPerPixelY
Dc = Picture1.hdc
MaxLength = CLng(Sqr(bmWidth * bmWidth + bmHeight * bmHeight) + 0.5)
Alpha = 180
ReDim IpMyLine(MaxLength * Alpha) As Myline
ReDim lpDistAlpha(0 To MaxLength * Alpha) As Long
大家好,我想在图像中找到一个矩形的位置,矩形是黑色实心的。图像是白纸黑字扫描成的。角度无法固定。
请问,无论何种角度扫描,我怎么找到矩形的位置。包括矩形的长宽,对角线坐标,越详细越好!!
------解决方案--------------------
图上除了“黑色实心的矩形”还有什么?
------解决方案--------------------
贴张图出来看看
------解决方案--------------------
楼主去年的帖子还没结呢.
你要的是机器视觉,这一课题不是很简单,类似以前我见过的一套PCB自动抄板软件,卖价15W.
只需要给出一张无元件的单或双面PCB正反面的照片,它会自动生成PRETOL99的PCB图格式,很牛的.
具体原理没有研究过,帮顶吧.
------解决方案--------------------
楼主想得太简单了.
------解决方案--------------------
由于已知仅有一个矩形,问题没有“人工视觉”那么复杂。
逐行扫描,将结果分为两种情况。
1 矩形是水平的。此情况下,每行黑色点的起始坐标相同。取得起始 X 坐标、起始 Y 坐标、终止 X 坐标、终止 Y 坐标,就可以得到四角坐标。
2 矩形是倾斜的。这样每行的 X 起始坐标会不同。此情况下只要取得最高点、最低点、最左点,最右点坐标,就是矩形的 4 个顶点。剩下的都是简单的解析几何计算。
需要考虑的是,扫描中的近似处理。因为扫描所得的点,与数学理想的点会有误差。
------解决方案--------------------
图像如上:
我是教师,想做个用数码技术识别机读卡的软件。我想检测出边框四条直线的方程,
我用hough变换检测出来很慢,没有多大的使用价值!
------解决方案--------------------
Option Explicit
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Const Pi = 3.14159265358979
Private Type Myline
topx As Integer
topy As Integer
botx As Integer
boty As Integer
End Type
Private Sub Command1_Click()
Dim bmWidth As Long
Dim bmHeight As Long
Dim Dc As Long
Dim MaxLength As Long, Alpha As Integer
Dim i As Long, j As Long, m As Long, Length As Long
Dim IpMyLine() As Myline, lpDistAlpha() As Long, maxd As Long
Dim MaxdLine As Myline, secondmaxd As Myline, midvalue() As Long
bmWidth = Picture1.Width / Screen.TwipsPerPixelX
bmHeight = Picture1.Height / Screen.TwipsPerPixelY
Dc = Picture1.hdc
MaxLength = CLng(Sqr(bmWidth * bmWidth + bmHeight * bmHeight) + 0.5)
Alpha = 180
ReDim IpMyLine(MaxLength * Alpha) As Myline
ReDim lpDistAlpha(0 To MaxLength * Alpha) As Long