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

viết 16:52 ngày 01/10/2018

mat[i, k + 0];

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]

HelloWorld viết 17:05 ngày 01/10/2018

e viết nhầm, nhưng lỗi không phải ở đó

Bài liên quan
0