30/09/2018, 20:25
Hỏi về Mat trong OpenCV
Chào mọi người ạ, hiện tại em đang tìm hiểu về OpenCV và có một đoạn code C tham khảo trên mạng như sau:
JNIEXPORT void JNICALL Java_org_opencv_samples_tutorial2_Tutorial2Activity_FindFeatures(
JNIEnv*, jobject, jlong addrGray, jlong addrRgba)
{
Mat& mGr = *(Mat*)addrGray;
Mat& mRgb = *(Mat*)addrRgba;
vector<KeyPoint> v;
FastFeatureDetector detector(50);
detector.detect(mGr, v);
for( unsigned int i = 0; i < v.size(); i++ )
{
const KeyPoint& kp = v[i];
circle(mRgb, Point(kp.pt.x, kp.pt.y), 10, Scalar(255,0,0,255));
}
}
Trong đoạn code có 2 dòng em không hiểu:
Mat& mGr = *(Mat*)addrGray;
Mat& mRgb = *(Mat*)addrRgba;
Có ai biết giải thích giùm em với được không ạ? Em cảm ơn.
Bài liên quan





Mat(matrix) là một class trong OpenCV chứa các thông tin về ma trận (của ảnh).Hai dòng đó tạo ra 2 matrix để lưu input là ảnh xám và ảnh màu rồi đưa vào xử lý.
Cú pháp
*(Mat*)addrGraycó ý nghĩa như thế nào ạ?Cast kiểu trước rồi mới truyền bạn.
Vậy thì ở đây addrGray nó là một pointer phải ko ạ?
Không,
jlongsao lại là pointer nhỉ.addrGrayđầu tiên bị cast vềMat*, sau đó được dereference ra thôi