2012-02-26 19 views
5

Tôi hoàn toàn mới với OpenCV. Tôi bắt đầu đọc Learing OpenCV một vài ngày trước và bây giờ tôi muốn làm một số xét nghiệm.OpenCV - cvPutText đang thêm tiếng ồn vào hình ảnh của tôi

Tôi muốn lập trình một người nói chuyện nghệ thuật ASCII. Tôi đã thực hiện phép lặp hình ảnh và các điểm ảnh được nhóm theo các ô vuông để tính toán từng độ sáng vùng để liên kết nó với một ký tự tương ứng. Vì vậy, bây giờ tôi cần phải biết làm thế nào sáng là một nhân vật để liên kết từng khu vực hình ảnh với một nhân vật. Ý tưởng của tôi là tạo một chương trình khác mang lại cho tôi độ sáng của một số ký tự. Cách tiếp cận như sau:

  • Tạo một hình ảnh kích thước 100 * 100 (ví dụ) - nền đen và 1 kênh
  • Vẽ nhân vật ở đâu đó trong nó màu trắng (cvPutText)
  • iterate hình ảnh và đếm số lượng các điểm ảnh màu trắng
  • Đồng hóa kết quả

tôi nghĩ rằng chương trình của tôi là ok, nhưng tôi nhận được kết quả kỳ lạ ... Chỉ cần để kiểm tra xem nó, tôi đang trưng bày những hình ảnh với nhau nhân vật và somethi ng lạ đang xảy ra. Hình ảnh cho thấy những gì tôi đang nói về.

cvPutText() result

Đây là mã tôi đang sử dụng:

... 
char c = 'a'; //or whatever 
IplImage *img = cvCreateImage(cvSize(150, 150), IPL_DEPTH_8U, 1); 

char buffer[7]; 
sprintf(buffer, "%c", c); 

CvFont font; 
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.5, 0.5); 
cvPutText(img, buffer, cvPoint(2, 15), &font, cvScalar(255)); 

//iteration to calculate brightness will go here 

cvNamedWindow(buffer); 
cvShowImage(buffer, img); 
cvMoveWindow(buffer, 50*(c-first), 20); 
... 

Tôi đang phát triển trên hệ điều hành MacOS Lion (nếu nó giúp ...). Cảm ơn bạn đã đọc (và giúp đỡ!).

+0

Tôi đang sử dụng OpenCV 2.4 trên Ubuntu 12.04. Tôi đã thử đoạn mã của bạn, nhưng tôi không thấy sự cố khi hiển thị hình ảnh với ký tự. Chỉ cần tự hỏi nếu bạn làm bất kỳ thao tác hình ảnh sau cvPutText()? – zkan

+2

Tôi nghĩ rằng cvCreateImage không khởi tạo hình ảnh, bạn đã thử cvSet (img, cvScalar (0,0,0)); ? – Milo

+0

Cảm ơn sự giúp đỡ của bạn. Tôi không còn sử dụng OpenCV nữa nhưng tôi hy vọng có thời gian trong ngày để tiếp tục thử nghiệm với điều này. –

Trả lời

1

Bạn không khởi tạo nội dung hình ảnh: bạn vừa cấp phát bộ nhớ và bạn thấy một số loại rác bộ nhớ.

Chỉ cần thêm cvSet (img, cvScalarAll (0)) để đặt hình ảnh của bạn thành màu đen.

+0

Cảm ơn sự giúp đỡ của bạn. Tôi sẽ không thể kiểm tra các giải pháp trong một thời gian, nhưng những gì bạn nói (và nó đã được nói bởi Milo một tháng trước quá) có ý nghĩa. Vì vậy, tôi chấp thuận câu trả lời của bạn. –

+0

Tôi cuối cùng đã lấy lại dự án này. Tôi đã hoàn thành một phiên bản đầu tiên rất đơn giản này. Giải pháp của bạn thật tuyệt vời! Cảm ơn bạn (và @Milo quá!) Nếu bạn tò mò về kết quả, tôi đã tải chúng lên trang github của tôi: https://github.com/ricardperez/ASCIIArt –

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