01/10/2018, 14:52
Sao chép dynamic array 2d sang Mat của opencv
Hello
Mình có 1 mảng động 2 chiều lưu dữ liệu ảnh, mỗi điểm ảnh có 3 kênh, vì thế 1 ảnh 3x3 thì mảng này sẽ có cỡ là 3 hàng 9 cột
Mình muốn đẩy mảng này qua Mat của opencv để xem kết quả
Mình chuyển như sau
void setPixel8UC3(Matrix &mat, Mat &img) {
uchar *row_ptr, *pixel;
unsigned int k;
for (unsigned int i = 0; i < img.rows; i++){
row_ptr = img.ptr<uchar>(i);
k = 0;
for (unsigned int j = 0; j < img.cols; j++){
pixel = row_ptr;
pixel[0] = mat[i][k + 0]; // b
pixel[1] = mat[i][k + 1]; // r
pixel[2] = mat[i][k + 2]; // g
row_ptr += 3;
k += 3;
}
}
}
thì bị lỗi như thế này
Mình đoán là lỗi về bộ nhớ mà không thấy bug đâu
Thank you
Bài liên quan
trong C++ operator[] ko có nhận 2 args, chắc từ C# mới sang hả @_@
sửa lại là
mat[i][k + 0]
e viết nhầm, nhưng lỗi không phải ở đó