Thao tác hình ảnh trong python

  • Thao tác hình ảnh trong python
    GIMP
  • Tải xuống
  • Tin tức

  • Giới thiệu về GIMP
  • Tài liệu
  • Quyên tặng

  • Tham gia vào
  • hướng dẫn

  • Đặc trưng
  • Ghi chú phát hành
  • lộ trình
  • Câu hỏi thường gặp

  • Báo cáo lỗi
  • Bàn luận
  • Sách
  • nhà tài trợ

  • voi răng mấu
  • Twitter
  • Facebook
  • điểm ảnh. chúng tôi (diễn đàn)

Nguồn cấp tin tức GIMP. Liên hệ với chúng tôi

Thao tác hình ảnh trong python

Trừ khi có ghi chú khác, Trang web GIMP của Nhóm GIMP được cấp phép theo Creative Commons Ghi công-Chia sẻ tương tự 4. 0 Giấy phép quốc tế.

Video hướng dẫn

Liên kết đến các video trình bày kiến ​​thức cơ bản về Xử lý

  • Thao tác hình ảnh trong python

    Bit vuông

    Kết hợp với phép toán AND

    Bổ sung theo bit đề cập đến việc bổ sung hai hình ảnh khác nhau và quyết định hình ảnh nào sẽ được hiển thị bằng cách sử dụng thao tác

    # printing out details of image min, max and the wrap around
    print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
    print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))
    
    print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
    print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
    
    4 trên mỗi pixel của hình ảnh

    # the bitwise_and function executes the AND operation
    # on both the images
    bitwiseAnd = cv2.bitwise_and(rectangle, circle)
    cv2.imshow("AND", bitwiseAnd)
    cv2.waitKey(0)
    

    Phép cộng từng bit của cả hình tròn và hình vuông cho chúng ta kết quả đầu ra trông như thế này,

    VÀ Bit vuông

    Đưa ra lựa chọn với phép toán OR

    Bitwise OR cung cấp cho chúng tôi sản phẩm của hai hình ảnh với thao tác

    # printing out details of image min, max and the wrap around
    print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
    print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))
    
    print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
    print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
    
    5 được thực hiện trên mỗi pixel của hình ảnh

    # printing out details of image min, max and the wrap around
    print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
    print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))
    
    print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
    print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
    
    1

    Khi thực hiện thao tác Bitwise OR, bạn sẽ nhận được thông tin như thế này,

    HOẶC bit vuông

    Độc quyền với hoạt động XOR

    Một thao tác khác được cung cấp bởi mô-đun

    # printing out details of image min, max and the wrap around
    print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
    print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))
    
    print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
    print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
    
    6 là thao tác XOR, chúng ta có thể sử dụng thao tác này thông qua hàm
    # printing out details of image min, max and the wrap around
    print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
    print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))
    
    print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
    print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
    
    7

    # printing out details of image min, max and the wrap around
    print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
    print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))
    
    print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
    print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
    
    4

    Hình vuông bit XOR

    Phủ định sử dụng thao tác NOT

    Cuối cùng, chúng ta có thao tác phủ định, được thực hiện bằng hàm

    # printing out details of image min, max and the wrap around
    print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
    print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))
    
    print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
    print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
    
    8

    Thao tác KHÔNG chỉ yêu cầu một hình ảnh vì chúng tôi không thêm hoặc bớt bất kỳ thứ gì ở đây

    Tuy nhiên, chúng tôi vẫn sử dụng nó trên cả hai ở đây, đó cũng là một tùy chọn

    # printing out details of image min, max and the wrap around
    print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
    print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))
    
    print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
    print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
    
    6

    Trong trường hợp này, hình tròn nằm bên trong hình vuông và do đó không nhìn thấy được,

    Không phải bit vuông

    Tạo mặt nạ cho hình ảnh bằng Python OpenCV

    Mặt nạ được sử dụng trong Xử lý hình ảnh để xuất Vùng quan tâm hoặc đơn giản là một phần của hình ảnh mà chúng tôi quan tâm

    Chúng tôi có xu hướng sử dụng các thao tác bitwise để tạo mặt nạ vì nó cho phép chúng tôi loại bỏ các phần của hình ảnh mà chúng tôi không cần

    Vì vậy, hãy bắt đầu với việc đắp mặt nạ

    Quá trình tạo mặt nạ cho hình ảnh

    Chúng tôi có ba bước trong việc che giấu

    1. Tạo một canvas đen có cùng kích thước với hình ảnh và đặt tên là
      # printing out details of image min, max and the wrap around
      print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
      print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))
      
      print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
      print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
      
      9
    2. Thay đổi các giá trị của mặt nạ bằng cách vẽ bất kỳ hình nào trong ảnh và tô màu trắng cho hình đó
    3. Thực hiện thao tác THÊM từng bit trên hình ảnh bằng mặt nạ

    Theo quy trình tương tự, hãy tạo một vài mặt nạ và sử dụng chúng trên hình ảnh của chúng ta

    Đầu tiên, hãy làm việc với mặt nạ hình chữ nhật

    # printing out details of image min, max and the wrap around
    print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
    print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))
    
    print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
    print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
    
    8

    Bây giờ, hãy thử với mặt nạ hình tròn

    # printing out details of image min, max and the wrap around
    print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
    print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))
    
    print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
    print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
    
    0

    Nếu mọi thứ hoạt động tốt, chúng ta sẽ nhận được kết quả đầu ra trông giống như thế này,

    Mặt nạ hình chữ nhật

    Sự kết luận

    Cuối cùng thì chúng ta cũng bắt đầu với cốt lõi của Xử lý hình ảnh và việc hiểu các hoạt động theo bit và mặt nạ trong đó là điều quan trọng

    Nó giúp chúng tôi chặn các phần hoặc chỉ lấy các phần của hình ảnh mà chúng tôi quan tâm, vì vậy, một khái niệm khá hữu ích

    Chúng tôi đang tiến hành với tốc độ khá, nhưng, trong trường hợp bạn muốn bỏ qua thời gian và đi đến cuối cùng, hãy là khách của tôi

    Đây là các bài viết cho phép bạn xem xét OpenCV và Nhận dạng khuôn mặt cũng như triển khai Java của Android và CameraX OpenCV