[問題] call by reference

看板C_and_CPP (C/C++)作者 (泰勞)時間11年前 (2014/08/30 16:21), 11年前編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/1
#include "camera.h" #include "imgproc.h" public: void RGB2Gray(Mat &src) { cv::cvtColor(src, src, CV_RGB2GRAY); mImage_gray = src; }; void Binary(Mat &src) { cv::threshold(src, src, 0, 255, cv::THRESH_BINARY | cv::THRESH_OTSU); mImage_binary = src; }; public: Mat mImage_raw; Mat mImage_gray; Mat mImage_binary; }; void recognition(cv::Mat &); Imgproc *mImgproc = new Imgproc(); int main() { cv::Mat img; mImgproc->mImage_raw = img; cv::namedWindow("Output", 1); recognition(img); cv::imshow("Output", img); -----------------> 問題點 return 0; } void recognition(cv::Mat &raw) { mImgproc->RGB2Gray(raw); mImgproc->Binary(raw); } 片段如上, 我的問題在於說 "問題點"分別帶入 mImgproc->mImage_gay 和 mImgproc->mImage_binary 的結果是一樣的 因為我想保留每個時期不同的圖形,所以請問是我哪邊該修改 請各位前輩幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.218.85.161 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1409386897.A.4DF.html

08/30 16:24, , 1F
這 code 一定有甚麼誤會.
08/30 16:24, 1F

08/30 16:30, , 2F
... 開寫了個測試也是跑 b=2; c=3, 可是我用這個想法去寫
08/30 16:30, 2F

08/30 16:31, , 3F
別的程式 結果卻不是我要的 怪怪
08/30 16:31, 3F

08/30 16:39, , 4F
建議你先給個真的能跑的 code. 我覺得你肯定誤會了些甚麼
08/30 16:39, 4F
※ 編輯: makuebx (49.218.85.161), 08/30/2014 16:59:51

08/30 17:04, , 5F
補充:RGB2Gray和Binary兩個執行的輸入/輸出都是src
08/30 17:04, 5F
※ 編輯: makuebx (49.218.85.161), 08/30/2014 17:04:30

08/30 17:15, , 6F
是 OpenCV 嗎? 你誤會了 Mat::operator=, 找一下 Mat::clone
08/30 17:15, 6F

08/30 17:16, , 7F
這邊跟是不是 reference 沒有關係. 是 Mat 的用法錯誤
08/30 17:16, 7F

08/30 17:45, , 8F
是OpenCV沒錯 感謝你的回答 總算有個方向了
08/30 17:45, 8F
文章代碼(AID): #1K0OcHJV (C_and_CPP)
文章代碼(AID): #1K0OcHJV (C_and_CPP)