C_and_CPP 板


LINE

開發平台(Platform): (Ex: Win10, Linux, ...) win10/VS2019 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) <opencv2> <pco.sdk> 問題(Question): 我本來使用opencv搭配相機(pco工業相機)的sdk , 希望在拍攝物體的當下,除了顯示畫 面外也能夠及時儲存每張圖片 不過cpu速度很明顯會下降很多,查了網路上的解法需要加入thread做處理. 我的思路是在int main 函式前使用class與public分別定義imshow與imwrite的行為 ,再用thread來做加速. 不曉得這樣做是否正確 還有一個問題是, 可能我對指標不是很熟…我在用下面語法寫 public class時無法讀取i nt main的指標資訊, 希望各位大大能指點迷津 感謝 class test_thread{ public: void cvshow( WORD Width, WORD Height, WORD buffer) { Width = &imgWidth; Height = & imgHeight; buffer = *imgBuffer; cv::Mat cv_image; cv_image = ( cv::Size(Width,Height), CV_16UC1, buffer) imshow() waitKey(1) } } int main() …… // 原始程式碼(已簡略), 目地是希望改成 // void cvshow() // { cv: imshow } // int main() // { 讀入相機資訊,並回傳指標 // ex: imgWidth 、imgBuffer 給cvshow // 做thread處理 } 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) #include "opencv.hpp" #include "sc2_SDKStructures.h" #include "PCO_Recorder_Defines.h" using namespace std; using namespace cv; int main ( int argc , char*argv ) { int acquireimage = 10; // 從相機得到圖片長、寬資訊 int iRet; WORD imgWidth = 0, imgHeight = 0; iRet = Pco_RecorderGetSetting( ...,&imgWidth,&imgHeight ); // 為圖片分配內存 WORD *imgBuffer = NULL; imgBuffer = new WORD[(__int64)imgWidth*(__int64)imgHeight]; iRet = RecorderGetStatus( ... ); while ( isRunning ) if ( imagecount > 0 ) { iRet = ( ... , imgWidth, imgHeight,imgBuffer ); return ( imgWidth ); cv:: Mat cv_image; cv_image = (cv:: Size( imgWidth , imgHeight ) , CV_16UC1 , imgBuffer , cv:: Ma t :: AUTO_STEP ); cv:: nameWindow ( "image", CV_WINDOW_NORMAL ); imshow ( "image" , cv_image); waitKey(1); for (unsigned int i = 0; i < acquireimage; i++ ) { string a = " C:/desktop/folder/img " + to_string(i) + ".tif" ; imwrite( a ,cv_image ) } } return 0; } --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.175.4 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1641810968.A.0D7.html ※ 編輯: Vvvahc (140.112.175.4 臺灣), 01/10/2022 18:37:12 ※ 編輯: Vvvahc (140.112.175.4 臺灣), 01/10/2022 18:39:11
1F:→ nh60211as: 你這程式碼編譯邊得過嗎 01/10 19:03
2F:→ Vvvahc: 下面程式碼(為方便閱讀有簡略過)是可以執行且順利顯示的(01/10 19:08
3F:→ Vvvahc: 但我imwrite的寫法會很卡), 不過當我要改成有thread的寫01/10 19:08
4F:→ Vvvahc: 法就會出問題…01/10 19:08
5F:→ Vvvahc: 主要是想問如何在上方的class : void()中,去讀取下方int01/10 19:10
6F:→ Vvvahc: main()中的指標資訊01/10 19:10
※ 編輯: Vvvahc (140.112.175.4 臺灣), 01/10/2022 19:19:04
7F:推 ko27tye: 呃 把你的指標當參數傳進去阿 01/10 20:25
8F:推 sarafciel: 先不講傳參的問題 你用來起thread的程式碼呢 01/10 21:05
9F:推 lycantrope: 到底在寫什麼啊w 01/10 22:24
10F:→ lycantrope: nameWindow可以移出while 只留下imshow 01/10 22:24
11F:推 lycantrope: waitkey是millisecond,你應該不需要1000fps imshow 01/10 22:29
12F:→ lycantrope: 然後opencv有startWindowThread可以讓視窗thread 01/10 22:31
13F:推 henrylin8086: 先說thread要能加速,建立在你task能平行化上。不 01/15 11:56
14F:→ henrylin8086: 能的話,用thread是把task給其他thread做,這樣才 01/15 11:56
15F:→ henrylin8086: 不會卡main thread。速度不會被提升,但是程式不會 01/15 11:56
16F:→ henrylin8086: 被卡住。 01/15 11:56
17F:推 henrylin8086: 你可以把main裡的指標傳進去給class,比較粗糙的寫 01/15 12:08
18F:→ henrylin8086: 法就是直接assign,在main裡面Class.ptr_inClass = 01/15 12:08
19F:→ henrylin8086: ptr_inMain,但是要小心多執行緒的時序問題。 01/15 12:08
20F:→ Vvvahc: 我主要是打算讓每張拍攝的照片能吐出到硬碟資料夾中 01/25 11:11
21F:→ Vvvahc: 我有試著照h大的做法 不過在拆出來的function中,我遇到 01/25 11:15
22F:→ Vvvahc: 相機buffer的ptr會報錯exception thrown 01/25 11:15
23F:→ Vvvahc: 有點懷疑是不是我buffer ptr型態寫錯的問題… 01/25 11:16
24F:→ Lipraxde: Backtrace 看一看,debug 加油 02/06 04:08







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP