Tôi đang triển khai thuật toán xử lý hình ảnh trong C++ bằng cách sử dụng openCV, trong đó bước đầu tiên yêu cầu hình ảnh được chuyển đổi thành ma trận. Tôi biết rằng khi một hình ảnh được tải vào openCV, nó đã được lưu trữ như một ma trận. Hình ảnh mà tôi đang sử dụng có kích thước 80 x 60, vì vậy tôi giả sử rằng ma trận được lưu trữ có kích thước 80 x 60. Tuy nhiên, tôi muốn lần đầu tiên có thể xem ma trận này và sau đó có thể định lại hình ảnh nó thành một ma trận với cùng một không. của pixel nhưng thay vì một cột dài thay thế. tức là ma trận 80 x 60 giờ sẽ trở thành ma trận 4800 x 1. Tôi đã thử nghiên cứu sách giáo khoa và trực tuyến nhưng không có kết quả. Đây là mã của tôi cho đến nay. Trong mọi trường hợp, nó không hoạt động bởi vì tôi không thể chuyển đổi từ 'IplImage *' thành 'CvMat * nhưng làm cách nào khác tôi phải gán giá trị pixel của mình cho ma trận sau khi tạo nó? Xin vui lòng, tôi sẽ đánh giá rất cao nếu ai đó có thể giúp tôi với mã này.Cách lấy ma trận điểm ảnh và ma trận định hình lại trong openCV
#include "cv.h"
#include "highgui.h"
#include "iostream"
using namespace std;
int main(int argc, char* argv) {
IplImage* img0 = NULL;
CvMat* img0_mat = NULL ;
img0 = cvLoadImage("C:\\new\\walk mii.jpg");
if (!img0){
return -1;}
img0_mat = cvCreateMat(80, 60, 1);
img0_mat = img0;
cout <<" matrix " << img0 << endl;
cvWaitKey(0);
return 0;
}
Giống như thông tin: opencv không lưu trữ hình ảnh trong ma trận theo nghĩa 'int [] []'. Bên trong nó chỉ sử dụng một chiều duy nhất, như 'char []'. – vsz