Страница: 1 | 2 |
расшифруй плиз вот свой код и если есть ошибки - исправь Private Declare Function GetPixel Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long и он вообще как сканирует текст- сверху вниз , если смогешь добавь , чтоб сканил слева на право спасибо - буду благодарен
Вопрос: To sne
Добавлено: 25.05.04 13:12
Автор вопроса: TX | ICQ: 139150044
Private Type POINTAPI
x As Long
y As Long
End Type
dim i as long, j as long
dim cArray() as POINTAPI
with picture1
for i=0 to .Width / Screen.TwipsPrePixelX ' ScaleMode в Twip'ы
for j=0 to .Width / Screen.TwipsPrePixelY
if GetPixel(.hdc, i, j) = 0& then ' Работает с пикселами, не твипами (заместо ее можно использовать стандартную VB'шную, но она должна быть медленнее)
redim cArray(LUBound(cArray) + vbNull)
cArray(UBound(cArray)).X = i
cArray(UBound(cArray)).Y = j
end if
next
next
end with
private function LUBound(inArray as POINTAPI) as long
on error resume next
LUBound = &HFFFF
LUBound = UBound(inArray)
end function
Ответы
Всего ответов: 18
Номер ответа: 1
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #1
Добавлено: 25.05.04 14:57
>for j=0 to .Width / Screen.TwipsPrePixelY
- по моему, здесь ошибка. Делится твиповая ширина на количество точек на твип по вертикали.
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 25.05.04 15:38
Ну да тут ошибка, только нужно вот так >for j=0 to .Heigth / Screen.TwipsPrePixelY
<br><br>
А чтобы слева на право, это нужно первый цикл нужно сделать слева-направо, а вложенный сверху-вниз направить... особых затруднений это не вызовет...
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 25.05.04 19:27
ой.... прикольно, теги html не работают...
проверка...
Номер ответа: 4
Автор ответа:
TX
ICQ: 139150044
Вопросов: 9
Ответов: 44
Профиль | | #4
Добавлено: 26.05.04 06:14
to sne - напиши как это будет - весь код сверху вниз и слево-направо
Номер ответа: 5
Автор ответа:
TX
ICQ: 139150044
Вопросов: 9
Ответов: 44
Профиль | | #5
Добавлено: 26.05.04 06:36
to CyRax - привет а ты не мог бы помочь с прогой - написать ее не смогешь
Номер ответа: 6
Автор ответа:
TX
ICQ: 139150044
Вопросов: 9
Ответов: 44
Профиль | | #6
Добавлено: 26.05.04 06:38
to CyRax - мне надо чтобы прога сканировала изображение , с нарисованными на нем четырмя фигурами(каждая фигура - отдельно файл.jpg) (сам фон белый а фигуры черного цвета)и определяла что это за объект , и показывала - допустим - это треугольник
всего четыре фигуры(треугольник, круг, квадрат, линия)
Номер ответа: 7
Автор ответа:
TX
ICQ: 139150044
Вопросов: 9
Ответов: 44
Профиль | | #7
Добавлено: 26.05.04 06:44
sharp вот продлогает как - Просто для каждой распознаваемой фигуры ставишь ее рандомом на поле, меряешь сумму черных точек снаружи и белых внутри, меняя координаты ее опорных точек, находишь минимум этой суммы, так для каждой из возможных фигур, у той, у которой сумма будет меньше всех, больше всего шансов быть правильной. - как мне это теперь через код реализовать - не поможете
Номер ответа: 8
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #8
Добавлено: 26.05.04 17:37
Ну вот скажем это код слева направо, и снизу вверз
Private Sub Form_Load()
 im i As Long, j As Long
For i = 0 To Me.Width / Screen.TwipsPerPixelX
For j = Me.Height / Screen.TwipsPerPixelY To 0 Step &HFFFF ' For j = 0 To Me.Height / Screen.TwipsPerPixelY - для сверху вниз
 ebug.Print i, j
Next
Next
End Sub
Номер ответа: 9
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #9
Добавлено: 26.05.04 20:59
Просто так за тебя писать ничего не буду. Разве что за деньги. Да и остальные тоже. Можем только подкинуть идейку другую, а ты уж сам их применяй.
Номер ответа: 10
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #10
Добавлено: 26.05.04 21:23
И ещё, про JPG забудь. Там нет чисто белого цвета, за исключением изображений с нулевым сжатием. Да и чёрный он тоже размазывает на несколько оттенков.
Номер ответа: 11
Автор ответа:
TX
ICQ: 139150044
Вопросов: 9
Ответов: 44
Профиль | | #11
Добавлено: 27.05.04 06:06
to sne - просто вот этот сам код нужно вставить в вместо того
пошел думать, штоб он с базой данных сравнивал и определял что это за тип
Ну если кто то захочет помочь - я не против
Номер ответа: 12
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #12
Добавлено: 27.05.04 10:31
да, вот толоько debug.preint замени
Номер ответа: 13
Автор ответа:
TX
ICQ: 139150044
Вопросов: 9
Ответов: 44
Профиль | | #13
Добавлено: 28.05.04 09:50
To sne - вообщем плиз выкени весь код - сразу сшей его как один плиз
спасибо
Номер ответа: 14
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #14
Добавлено: 28.05.04 10:59
какой весь ? просто цикл замени в старом на новый, и заместо дебага поставь GetPixel... все...
Не надо надеяться на других, надо задать вопрос, и самому пытаться... а не так, что задал, и жду... пока ответят ))
Номер ответа: 15
Автор ответа:
TX
ICQ: 139150044
Вопросов: 9
Ответов: 44
Профиль | | #15
Добавлено: 28.05.04 11:27
Private Declare Function GetPixel Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As
Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Sub Form_Load()
Dim i As Long, j As Long
dim cArray() as POINTAPI
with picture1
For i = 0 To Me.Width / Screen.TwipsPerPixelX
For j = Me.Height / Screen.TwipsPerPixelY To 0 Step &HFFFF ' For j = 0 To Me.Height /
Screen.TwipsPerPixelY
 ebug.Print i, j
redim cArray(LUBound(cArray) + vbNull)
cArray(UBound(cArray)).X = i
cArray(UBound(cArray)).Y = j
end if
next
next
end with
private function LUBound(inArray as POINTAPI) as long
on error resume next
LUBound = &HFFFF
LUBound = UBound(inArray)
end function
End Sub
Private Sub Form_Load()
 im i As Long, j As Long
For i = 0 To Me.Width / Screen.TwipsPerPixelX
For j = Me.Height / Screen.TwipsPerPixelY To 0 Step &HFFFF ' For j = 0 To Me.Height /
Screen.TwipsPerPixelY - для сверху вниз
 ebug.Print i, j
Next
Next
End Sub
результат должен быть такой?