2014-06-09 38 views
5

Làm thế nào tôi có thể thay đổi mảng numpy thành hình ảnh opencv màu xám trong python? Sau khi xử lý, tôi nhận được một mảng với các thuộc tính sau: giá trị tối đa là: 0.99999999988, giá trị nhỏ nhất là 8.269656407e-08 và nhập là: <type 'numpy.ndarray'>. Tôi có thể hiển thị nó như là một hình ảnh sử dụng cv2.imshow() chức năng, nhưng tôi không thể vượt qua nó vào cv2.AdaptiveTreshold() chức năng vì nó có kiểu sai:Làm thế nào để thay đổi mảng numpy thành hình ảnh opencv grayscale

error: (-215) src.type() == CV_8UC1 in function cv::adaptiveThreshold 

Làm thế nào tôi có thể chuyển đổi np.array này để sửa định dạng?

Trả lời

9

Khi trạng thái xác nhận, adaptiveThreshold() yêu cầu hình ảnh 8-bit một kênh.

Giả sử hình ảnh nổi-điểm của bạn nằm trong khoảng từ 0 đến 1, mà dường như là trường hợp, bạn có thể chuyển đổi hình ảnh bằng cách nhân 255 và đúc để np.uint8:

float_img = np.random.random((4,4)) 
im = np.array(float_img * 255, dtype = np.uint8) 
threshed = cv2.adaptiveThreshold(im, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 3, 0) 
Các vấn đề liên quan