01/10/2018, 14:05

Nhờ sửa giúp function để crop image trong Python

Mọi người giúp mình sửa cái function này với như hình bên dưới

Nếu img_crop = image_original[y:y+h,x:x+w] xảy ra error thì return nothing nếu không sẽ lưu lại image crop ở dòng thứ 2 trên img_crop.

HK boy viết 16:10 ngày 01/10/2018

Sao lại có dấu phẩy ở trong [ ] thế kia?

Nếu bạn viết kiểu mảng 2 chiều trong Pascal thì sửa thành

img_crop = image_original[y:y+h][x:x+w]
Conan Nhoc viết 16:08 ngày 01/10/2018

Đó là crop image thôi bạn ơi. Cái này ở trong python nha ko phải Pascal . cái biến Face nếu ko trả giá trị x,y,w,h thì ko crop dc image. Nếu nó trả giá trị thì mới crop dc.

Khoa NTA viết 16:20 ngày 01/10/2018

Ý của @noname00 là cú pháp bạn dùng (có thể) là của Pascal và cần phải sửa lại thành:

img_crop = image_original[y:y+h][x:x+w]

Python không hề có cú pháp như bạn viết. Bạn hiểu chứ?

Conan Nhoc viết 16:05 ngày 01/10/2018

image ban đầu là 1 matrix .[y:y+h,x:x+w] ở đây được hiểu là lấy 2 điểm hình chéo ở 1 hình chữ nhật trong Opencv trong python.
https://stackoverflow.com/questions/15589517/how-to-crop-an-image-in-opencv-using-python

Conan Nhoc viết 16:18 ngày 01/10/2018

Biến face là detect face trong image nó trả về 1 tuple . Nếu trả về tuple là 4 biến (x,y,w,h) thì crop được image. Nếu nó trả về tupe ko có gi tức là () thôi. thì sẽ ko crop dc image.
Mình muốn lưu image nếu crop dc và ko làm gì cả nếu ko crop dc

Khoa NTA viết 16:20 ngày 01/10/2018

Cái này bạn phải cài đặt thư viện numpy nhé (commandline: pip install numpy) và image_original phải là kiểu numpy.array(...) mới được nhé.

Tham khảo: https://docs.scipy.org/doc/numpy-dev/user/quickstart.html#indexing-slicing-and-iterating

Conan Nhoc viết 16:11 ngày 01/10/2018

HIX, mình biết chứ cái biến gray,image_original trong detect(gray,image_original): là 2 np.array rồi.

Khoa NTA viết 16:07 ngày 01/10/2018

Àh, tưởng bạn chưa biết :v thôi vậy mình không giúp được rồi Với lại, nếu nó ném một biệt lệ khi lỗi, thì thử dùng như này xem:

try:
    ...
except Exception as e:
    return None
else:
    # no exception was catched.
    pass
Hung viết 16:15 ngày 01/10/2018

xảy ra error thì return nothing

Bad practice. Luôn luôn phải xử lý ngoại lệ. Exception is your friend.

Conan Nhoc viết 16:06 ngày 01/10/2018

Thôi vậy muốn viết function cho tiện sau này xài lại . Cũng cảm ơn bạn nhiều .
Mình viết thế này cũng dc rồi

Bài liên quan
0