bigcat88 / pillow_heif

Python library for working with HEIF images and plugin for Pillow.
BSD 3-Clause "New" or "Revised" License
218 stars 17 forks source link

crash during encoding when using with cv2 [macOS] #89

Open zhou13 opened 1 year ago

zhou13 commented 1 year ago

Describe the bug

This program will crash on my iMac:

Steps/Code to Reproduce

from PIL import Image
import cv2
from pillow_heif import register_heif_opener

register_heif_opener()

with Image.open("10003860486.jpg") as img:
    img.load()
img.save("2.heic")

Expected Results

No crash

Actual Results

    10739 segmentation fault 

I am on Mac. Note that if I remove the line import cv2, or if I move it after from pillow_heif import register_heif_opener, then the program runs normally.

Versions

{'version': {'libheif': '1.14.2', 'x265': 'x265 HEVC encoder (3.4+31-6722fce1f)', 'aom': 'AOMedia Project AV1 Encoder 3.5.0'}, 'decoders': {'HEVC': 1, 'AV1': 1, 'AVC': 0}, 'encoders': {'HEVC': 1, 'AV1': 1, 'AVC': 0}}
bigcat88 commented 1 year ago

WOW o_0... Thanks for the issue.

bigcat88 commented 1 year ago

Exception occurs in x265 library, somewhere near x265::Search::codeIntraLumaQT. Looks like the only way to understand is to build all libraries in debug mode and trace with Xcode - will try to do that when will have time for this.

Affected only arm64 build for Apple and affected all versions(tested down to 0.8.0). Linux, Windows, macOS Intel - works fine.