제가 지금 pyautogui 로 이미지를 인식하고있는데
서칭하는데 대략 1 ~ 2 초 걸리더라고요
서칭시간을 줄이는법이 따로있을까요 ?
없다면
openCV는 이미지 서칭할떄 빠르게 잡히나요 ?
아니면
파이썬으로는 이미지 인식 걍 노답인가요 ?
C# 으로 만들어야할까요 ?
도와주세요 선생님
제가 지금 pyautogui 로 이미지를 인식하고있는데
서칭하는데 대략 1 ~ 2 초 걸리더라고요
서칭시간을 줄이는법이 따로있을까요 ?
없다면
openCV는 이미지 서칭할떄 빠르게 잡히나요 ?
아니면
파이썬으로는 이미지 인식 걍 노답인가요 ?
C# 으로 만들어야할까요 ?
도와주세요 선생님
분류 | 제목 | 글쓴이 | 최근변경 | 추천 |
---|---|---|---|---|
자유 | 프로그래밍 게시판 소개 | 피카부 | 2023.04.01 | 0/0 |
질문 | 매크로를 만드려면 어떻게 공부해야하나요? 3 | 와꾸실화냐 | 2023.08.16 | 3/0 |
질문 | 파이썬으로 오딘 매크로 만들어보신분? 4 | 또보겠지 | 2023.05.11 | 2/0 |
질문 | 아두이노 절대좌표이동 문제 해결 했습니다.(동영상첨부) 6 | 윈포에버 | 2023.03.11 | 2/0 |
질문 | 머신러닝 4부 - 머신러닝을 이용한 매이플 오토룬 풀기~ 16 | 쩌리오리 | 2021.12.22 | 2/0 |
자유 | 저의 파이썬 첫 프로젝트 프로그램이 에디터라니.. 1 | 다오 | 2024.01.11 | 1/0 |
질문 | 파이썬 배워보고 시퍼요 3 | 겸둥님 | 2023.08.22 | 1/0 |
질문 | 오딘 매크로 직접만들수 있는 방법 질문드려요 3 | 죽음의클릭 | 2023.08.10 | 1/0 |
자유 | 파이썬 공부같이 하실분 계신가요? 4 | 그렇하군 | 2023.08.26 | 1/0 |
질문 | 파이썬 관련 사이트 1 | 피카츄라이 | 2023.01.28 | 1/0 |
질문 | 파이썬 개인이 이미지 서치 제작 | 마룽파루 | 2021.11.22 | 1/0 |
질문 | 2부 - 머신러닝으로 매이플 채집룬 풀기 강좌^^ 8 | 쩌리오리 | 2021.01.06 | 1/0 |
질문 | 메이플본섭 자동사냥 정지확률없는 usb형식 메크로 공... | dojs12 | 2024.04.14 | 0/0 |
자유 | 로나 아리스 아로나 H | 아리스맨 | 2024.03.19 | 0/0 |
질문 | 롬 스크립트 만들어 주세요 | 선자당 | 2024.03.16 | 0/0 |
질문 | 오핫이나 파이썬 같은것중에 어떤게 유용할려나요??? 3 | 클라우디 | 2024.03.08 | 0/0 |
질문 | 엘디 매크로 프로그램이 제작이 가능할까요? 1 | 함대기리 | 2024.01.11 | 0/0 |
질문 | 티엘 매크로 | 띠링링링링링 | 2023.12.25 | 0/0 |
질문 | 오딘 파이썬 pyautogui 3 | gonggi | 2024.03.24 | 0/0 |
질문 | 메크로 파이썬이 제일 나은가요 6 | 정우정연아빠 | 2024.04.19 | 0/0 |
질문 | 인증 DLL(C++) 만들어 보신 분 | thankkh | 2023.10.18 | 0/0 |
광고
전체 최신 인기글
전체 주간 인기글
속도 문제라면... 네이티브 언어로 하시는게 좋아 보입니다. C언어를 이용하는게 가장 빠르고요. 그담에 C#으로 픽셀 오브젝트가 아닌 포인터를 이용해서 C언어만큼 속도를 낼 수 있습니다. lockbit로 검색해보시면 예제가 많습니다. 참고로 아래 링크에 설명이 잘 되어 있어요.
### 링크를 넣을수가 없군요^^; 구글에서 검색해보면 많은 자료가 나옵니다... ###
OpenCV도 내부적으로는 lockbit를 이용해서 포인터로 메모리 주소 참조하는걸로 알고 있는데요. 아마도... 이미지 서치한 다음에 후처리 부분에서 다시 오브젝트 방식으로 접근하는게 아닌가싶네요. 여러가지 테스트 해봤는데 일단 C가 가장 속도가 빠릅니다. 그다음에 C#이나 파이썬 같은 언어로 네이티브로 코드를 짜는게 좋고 OpenCV를 네이티브로 이용해도 비슷한 효과를 속도가 나옵니다. 아래 코드처럼
private static int[][] GetPixelArray(Bitmap bitmap)
{
var result = new int[bitmap.Height][];
var bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
for (int y = 0; y < bitmap.Height; ++y)
{
result[y] = new int[bitmap.Width];
Marshal.Copy(bitmapData.Scan0 + y * bitmapData.Stride, result[y], 0, result[y].Length);
}
bitmap.UnlockBits(bitmapData);
return result;
}
반환 값은 바이트 주소를 나타내는 포인터입니다. 편하게 코딩하려면 픽셀 2중 포문(폭, 높이)으로 처리하는게 쉽긴합니-_-;