2012-07-24 69 views
5

Tôi đang cố gắng kéo độ tương phản của hình ảnh đến khoảng 0-255 bằng cách sử dụng cvNormalize. Nhưng khi tôi in ra các giá trị pixel đầu ra, một số số âm xuất hiện dưới dạng giá trị pixel. Tôi đánh giá cao nếu bạn giúp tôi tìm ra nguồn gốc của vấn đề. Đây là mã:Độ tương phản kéo giãn hình ảnh bằng openCV

cvNormalize(srcImage, dstImage, 0, 255, CV_MINMAX); 

for (int pixel = 0; pixel < dstImage->height * dstImage->width; pixel++) { 
    printf("%d\t",*(dstImage->imageData + pixel)); 
} 

Trả lời

5

Bởi vì loại imageData 's là char*char có thể nagative (Phạm vi đó là [-128, 127]). Thử truyền tới unsigned char.

Xem docs.

+0

Cùng một vấn đề phát sinh khi tôi nhập nó vào unsigned char: printf ("% d \ t", (uchar *) * (dstImage-> imageData + pixel)) – Mike

+0

những gì về '(uchar) * (dstImage-> imageData + pixel))? – ArtemStorozhuk

+0

Cảm ơn bạn Astor; bây giờ nó hoạt động! – Mike

Các vấn đề liên quan