이미지 URL 변환 - imiji URL byeonhwan

이미지 학습데이터를 크롤링하며 수집하는 도중 이런 생각이 들었다.

아니 어차피 <img src> 값을 통해 이미지 url을 열어서 하드에 저장하는 방식인데.

그냥 src 값만 저장하고 나중에 읽기만한 다음에 트레이닝데이터로 쓰면 좋지 않을까?

심지어 PIL 의 Image 패키지를 사용하면 로컬경로를 넣지않고 이미지 주소값을 넣어도

이미지가 주피터에서 열린다는 사실도 알고있었다.

Image.open(url) 하면 해당 이미지가 주피터에서 열림..

그래서 나는 이미지주소만 받아서 그 이미지를 numpy 객체로 변환하는 방법을 공유하려 한다.

어차피 모델 학습을 위한 input data 는 numpy 이니까.. ㅎㅎ


먼저 나는 이미지주소만 크롤링했다.

이미지 URL 변환 - imiji URL byeonhwan

url 을 다 크롤링했다면 함수를 정의해서 사용하면된다.

import urllib
import cv2
import numpy as np

def url_to_image(url, readFlag=cv2.IMREAD_COLOR):
    # download the image, convert it to a NumPy array, and then read
    # it into OpenCV format
    resp = urllib.request.urlopen(url)
    image = np.asarray(bytearray(resp.read()), dtype="uint8")
    image = cv2.imdecode(image, cv2.IMREAD_COLOR)

    # return the image
    return image

이 함수를 간단히 설명하자면 request를 통해 url의 있는 이미지 정보를 가져오고

그 url을 읽어서 bytearray로 감싸주고 그걸 다시 uint8 형식의 np.array로 변환한다.

그리고 그것을 디코딩하여 3차원 이미지 np.array형식으로 바꿔 리턴

어렵게 설명했지만 함수이름대로 그냥 이미지 주소를 학습하기 좋은 3차원 행렬 데이터로 바꿔준다고 보면된다.

labels_np = imgPre[['imgAdr','log_score']].values

여기서 이미지 주소(imgAdr)와 종속변수인(log_score)를 가지고 있는

데이터프레임의 .value를 해주면 np.array형식으로 바뀐다.

이미지 URL 변환 - imiji URL byeonhwan

이제 이걸 for 문을 통해 순회하면서 처리하면 되는데.

imgs = np.empty((len(labels_np),188,336,3),dtype=np.uint8)

for i, (imgAdress, score) in enumerate(labels_np):
    img = url_to_image(imgAdress)
    
    if img.shape[0] != 188 or img.shape[1] != 336:
        print(imgAdress)
        
    imgs[i] = img
    print(i)

먼저 차원이 동일한 np.empty 를 만들어준다.

이것은 모든 값이 0인 np.array를 만들어주는 것으로 데이터가 들어갈 통이라고 생각하면 된다.

이제 for문을 돌면서 값을 대입한다.

여기서 주의할 점은 for문을 돌면서 request를 통해 계속 인터넷에 접속을 하는데

자꾸 접속을 반복하면 해당 호스트에서 아이피를 차단할 수 도 있고

이미지주소가 사라져서 404에러를 발생시킬수도 있다.

그래서 print(i) 를 찍어보고 에러가 발생한다면 i번째 다음부터 진행하면 된다.

* i 의 값을 에러가 발생한 인덱스 값으로 지정하면 그 다음부터 다시 값을 대입하기 시작한다.

그리고 혹시 모르니 결과값을 저장하는 습관을 기르도록하자.

np.save('img.npy',imgs)

.npy 형태로 저장한다.

For permanent links you can use: https://ezgif.com/image-to-datauri?url=https://example.com/source-image.gif

Output data URI code:

Online image to Data URI conversion tool

Data URI is a method for embedding small images directly in your HTML or CSS code using base64 encoding without the need for additional image files. It's useful when you want to improve performance by reducing the number of HTTP requests needed to load a webpage or when you want to distribute a script/HTML page with some icons or other small images but prefer to keep it in a single file, or include images in email signatures.

They can be used both in HTML, where the image data is placed inside the src attribute or in a CSS file as a background image. This tool lets you select one of both ways or just a raw data URI string without the additional code.

All major browsers currently support data URI in a CSS background property.
Data URI in a HTML image src property is not supported by Internet Explorer.

Please keep in mind it's usually not useful to embed anything larger than few kilobytes, as it will likely impact performance negatively because these images won't be cached by the browser if used in HTML and will increase CSS parsing time if used in CSS. If you have many small icons, consider using CSS sprites instead. But we won't set any hard limits for this tool; it's your call.

웹페이지 이미지 저장

한 번의 클릭으로 웹페이지를 JPG 파일로 변환하십시오! 변환하려는 페이지의 URL을 복사하여 붙여 넣고 변환 단추를 클릭하십시오.

페이지 설정

머리글

바닥글

PDF 권한 관리

변환 설정

변환 타입

프린트 레이아웃 사용

자바스크립트 제거

링크 제거

페이지 번호 추가

그레이 스케일 적용

자동 북마크

대기 시간 초

워터 마킹

투명도

회전 각도

레이어

PDF 내용 위에

PDF 내용 아래

  • 어떻게 변환하나요?

  • URL 입력 상자에 웹 페이지의 URL을 입력하십시오. 옵션 단추를 클릭하여 페이지 레이아웃, 변환 설정 및 워터 마크를 설정하십시오. 변환 버튼을 클릭하십시오. 변환이 완료되면 파일을 다운로드 할 수 있습니다.
  • 이미지 URL 변환 - imiji URL byeonhwan
  • 완벽한 변환 품질

  • 우리의 서비스는 모든 웹사이트를 원본 그대로 유지한 채 완벽한 이미지 포맷으로 변환이 가능합니다. 온라인 웹 페이지 변환 서비스 중에서 Webtopdf처럼 다양한 옵션을 제공하면서 이만한 높은 변환 품질을 유지하는 서비스가 있을까요?
  • 빠르고 쉬운 변환

  • 단순한 인터페이스로 아주 쉽게 누구나 웹 페이지를 이미지로 변환할 수 있습니다. URL을 입력하고 몇 번의 클릭만으로 옵션 설정 및 변환이 가능합니다. 정상적인 인터넷 네트워크 환경이라면 몇 초 안에 결과를 얻을 수 있습니다.
  • 안전한 온라인 변환 작업

  • 업로드한 원본 파일은 변환 후 즉시 삭제됩니다. 결과 파일들은 1시간 후 서버에서 영구히 삭제됩니다. 어느 누구도 사용자의 파일에 접근할 수 없으며, 사용자의 개인 정보는 안전하게 보호됩니다. SSL을 적용하여 암호화된 데이터 전송으로 신뢰성 있는 서비스를 제공합니다.
  • 모든 플랫폼 지원

  • Webtopdf는 웹 브라우저를 통해 서비스되는 웹 애플리케이션입니다. 익스플로러, 크롬, 사파리, 파이어 폭스, 오페라를 지원합니다. 우리의 서비스는 브라우저를 기반으로 하기 때문에 사용자가 윈도우, 리눅스, 맥을 사용하는지와 상관없이 브라우저를 띄울 수 있는 모든 플랫폼에서 사용 가능합니다.
  • 어디에서나 이용 가능

  • 인터넷 연결을 통해 어디서나 무료로 변환 서비스를 사용할 수 있습니다. Webtopdf 서비스는 클라우드에서 완벽하게 작동합니다. 모든 변환 과정은 클라우드 자체에서 진행되므로, 사용자 컴퓨터의 리소스를 소모하지 않습니다. 파일 변환을 위한 별도의 application, Active X를 설치할 필요가 없습니다.