作者Vvvahc (我來搞事了)
看板C_and_CPP
標題[問題] 從主程式移出函數遇到exception thrown
時間Tue Jan 25 10:19:30 2022
各位大大好
我最近在使用opencv套件時遇到exception thrown的問題
原本可編譯執行程式碼如下
int main (int argc,char*argv[ ])
{
……
cv::Mat cv_image(cv::size(1024,1024), cv_16UC1, imgBuffer_ptr, cv::Mat::AU
TO_STEP);
cv:: nameWindow(" " , 1);
imshow(" ",cv_image);
waitKey(20);
……
}
其中imgBuffer_ptr資料型態是Word*
指向sdk提供的相機儲存圖片的位址
但當我只是改成這樣
cv::Mat cvshow(WORD*addbuffer)
{
cv::Mat cv_image(cv::size(1024,1024), cv_16UC1, addbuffer, cv::Mat::AU
TO_STEP);
cv:: nameWindow(" " , 1);
imshow(" ",cv_image);
waitKey(20);
}
int main(int argc,char*argv[ ]) {
……
cvshow( imgBuffer_ptr);
……
}
執行後就會跳出c++ exception at memory location的error
想請問各位,我該如何改掉這錯誤啊?
第一直覺是ptr的問題… 但又不懂錯在哪
謝謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.5.5 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1643077172.A.081.html
※ 編輯: Vvvahc (114.136.5.5 臺灣), 01/25/2022 10:19:54
※ 編輯: Vvvahc (140.112.174.64 臺灣), 01/25/2022 10:21:22
1F:推 lylu: 你傳入的addbuffer沒有用到 function裡面還是用imgBuffer_01/25 10:49
2F:→ lylu: ptr?01/25 10:49
※ 編輯: Vvvahc (140.112.174.64 臺灣), 01/25/2022 11:08:02
3F:→ Vvvahc: 我function內是用addbuffer才對,用手機編輯沒注意到XD 01/25 11:10
4F:→ Vvvahc: 已改正 01/25 11:10
5F:→ Vvvahc: 不過還是不知道錯在哪( _ ) 01/25 11:17
6F:→ flyfoxy: cvshow() return ? 01/25 12:38
7F:推 lycantrope: 沒return cv::Mat 或是改成void? 01/25 12:48
8F:→ closer76: 你的 imgBuffer_ptr 是怎麼宣告的?空間是如何配置的? 01/25 12:50
9F:→ closer76: 另外,是全域還是區域變數? 01/25 12:50
10F:→ Vvvahc: return我等下來試試 void我昨天有試過也是不能… 01/25 14:33
11F:→ Vvvahc: imgBuffer_ptr 是我宣告word*imgBuffer_ptr 後,丟到sdk 01/25 14:34
12F:→ Vvvahc: 提供的copy function去得到指標位址 01/25 14:34
13F:→ Vvvahc: 我是設定成區域變數 01/25 14:35
14F:→ henrylin8086: 你沒有return編譯得過去嗎 01/26 23:12
15F:推 henrylin8086: 我只是好奇,我記得VS很聰明非void沒return會跳紅字 01/26 23:16
16F:推 henrylin8086: 程式碼你可能需要提供更完整一些 01/26 23:22
17F:→ henrylin8086: 我稍看一下沒有看到有什麼語法邏輯錯誤 01/26 23:22
18F:→ Vvvahc: 感謝h大的站內信 01/28 17:20
19F:→ Vvvahc: 這邊更新一下,mat要用return才能編譯 (會不會成功執行是另 01/28 17:20
20F:→ Vvvahc: 一回事…) 01/28 17:20