[問題] 從主程式移出函數遇到exception thrown

作者: Vvvahc (我來搞事了)   2022-01-25 10:19:30
各位大大好
我最近在使用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的問題… 但又不懂錯在哪
謝謝~
作者: lylu (理路)   2022-01-25 10:49:00
你傳入的addbuffer沒有用到 function裡面還是用imgBuffer_ptr?
作者: Vvvahc (我來搞事了)   2022-01-25 11:10:00
我function內是用addbuffer才對,用手機編輯沒注意到XD已改正不過還是不知道錯在哪( _ )
作者: flyfoxy (飛狐)   2022-01-25 12:38:00
cvshow() return ?
作者: lycantrope (阿寬)   2022-01-25 12:48:00
沒return cv::Mat 或是改成void?
作者: closer76 (克樓瑟)   2022-01-25 12:50:00
你的 imgBuffer_ptr 是怎麼宣告的?空間是如何配置的?另外,是全域還是區域變數?
作者: Vvvahc (我來搞事了)   2022-01-25 14:33:00
return我等下來試試 void我昨天有試過也是不能…imgBuffer_ptr 是我宣告word*imgBuffer_ptr 後,丟到sdk提供的copy function去得到指標位址我是設定成區域變數
作者: henrylin8086 (小木)   2022-01-26 23:12:00
你沒有return編譯得過去嗎我只是好奇,我記得VS很聰明非void沒return會跳紅字程式碼你可能需要提供更完整一些我稍看一下沒有看到有什麼語法邏輯錯誤
作者: Vvvahc (我來搞事了)   2022-01-28 17:20:00
感謝h大的站內信這邊更新一下,mat要用return才能編譯 (會不會成功執行是另一回事…)

Links booklink

Contact Us: admin [ a t ] ucptt.com