Re: [問題] opencv顯示圖形

看板C_and_CPP作者 (安)時間13年前 (2010/09/16 22:09), 編輯推噓1(1013)
留言14則, 2人參與, 最新討論串2/2 (看更多)
先謝謝freesamael和jerohands的幫忙,我已經可以顯示資料在螢幕上了 只是我的資料量很多,需要顯示的畫面很多 (1).要如何才能一次顯示一張,過段時間後再顯示下一張呢? (2).要怎麼樣才可以顯示成全螢幕呢? *******************************以下是我的程式碼***************************** #include <cv.h> #include <highgui.h> #include <stdio.h> #include <stdafx.h> #include <stdlib.h> #define read_path "test.txt" //想要拆解的檔案 #define x 800 #define y 600 #define data_size 800*600/8 int main() { uchar Data[y][x]; char *M = (char*) malloc( data_size*sizeof(char) ); char *N= (char*) malloc( x*y*sizeof(char) ); int i,j,k,l=0,page; unsigned int final_position; IplImage *Image1; CvSize ImageSize1 = cvSize(x,y); Image1 = cvCreateImage(ImageSize1,IPL_DEPTH_8U,1); FILE *file = fopen(read_path, "rb"); if(file == NULL) printf("讀入資料失敗!!\n"); else { while (fgetc(file)!=EOF); //取得檔案讀取後指位器位置 final_position=ftell(file); printf("total file size = %d bytes\n",final_position); rewind(file); } page=final_position/data_size; printf("total page=%d\n",page+1); //將檔案資料寫入N[],N[]=0/1 for (int k=0;k<data_size;k++) { fread(&M[k], sizeof(char),data_size, file); N[l]=M[k]/128; N[l+1]=M[k]%128/64; N[l+2]=M[k]%128%64/32; N[l+3]=M[k]%128%64%32/16; N[l+4]=M[k]%128%64%32%16/8; N[l+5]=M[k]%128%64%32%16%8/4; N[l+6]=M[k]%128%64%32%16%8%4/2; N[l+7]=M[k]%128%64%32%16%8%4%2; l=l+8; } for(int i=0;i<Image1->height;i++) { for(int j=0;j<Image1->widthStep;j++) { Data[i][j]=N[i*Image1->widthStep+j]; if (Data[i][j]==0) Image1->imageData[i*Image1->widthStep+j]=0; else Image1->imageData[i*Image1->widthStep+j]=255; } } fclose(file); cvNamedWindow("Data",1); cvShowImage("Data",Image1); cvWaitKey(0); cvReleaseImage(&Image1); cvDestroyWindow("Data"); free(N); free(M); return 0; } **************************************************************************** 因為不知道要怎麼連續顯示圖片,所以目前寫成這樣 原預計會出現第一頁資料的畫面,可是跑出來的結果像是最後一頁資料的畫面 麻煩各位高手教教我,要如何將我的資料畫面每隔1秒鐘換下一張 還有,要怎麼才可以用全螢幕顯示呢? (即使畫數設的跟螢幕一樣,還是會有tool bar跟windows的開始列) 先謝謝大家了! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.76.61

09/16 22:12, , 1F
補充一下,我這程式是將檔案拆成0/1,然後display在螢幕上
09/16 22:12, 1F

09/16 22:14, , 2F
程式碼裡面, 讀入的資料檔是哪一個?
09/16 22:14, 2F

09/16 22:18, , 3F
cvNamedWindow(,); 查一下第二個傳入參數用法
09/16 22:18, 3F

09/16 22:51, , 4F
資料檔可以隨便選,放在專案的資料夾,再改檔名就可以了
09/16 22:51, 4F

09/17 03:14, , 5F
我第一句推文裡的"讀入的資料檔是哪一個?", 是針對原文
09/17 03:14, 5F

09/17 03:14, , 6F
倒數第五句.
09/17 03:14, 6F

09/17 03:15, , 7F
應該是一張圖檔一個畫面的結果 by 我的想法,
09/17 03:15, 7F

09/17 03:16, , 8F
為什麼會是兩個畫面(或以上)來呈現?
09/17 03:16, 8F

09/17 08:07, , 9F
一個800*600的畫面,資料量是60KB,ex要拆的檔案100KBKB
09/17 08:07, 9F

09/17 08:08, , 10F
這樣我就需要兩張畫面顯示在螢幕上
09/17 08:08, 10F

09/17 08:12, , 11F
我有在最外面加上for 可是會出現Exception at memory....
09/17 08:12, 11F

09/17 08:15, , 12F
console window會出現OpenCV Error: Bad flag.....
09/17 08:15, 12F

09/17 08:18, , 13F
cvNamedWindow我改變第二傳入參數,還是會有windows bar
09/17 08:18, 13F

09/17 08:19, , 14F
目前我是想到移動視窗將bar藏起來,但是否可真的全螢幕?
09/17 08:19, 14F
文章代碼(AID): #1CaYKm7x (C_and_CPP)
文章代碼(AID): #1CaYKm7x (C_and_CPP)