當前位置:首頁 » 存儲配置 » opencv存儲圖片

opencv存儲圖片

發布時間: 2025-05-20 00:16:10

⑴ openCV採集攝像頭圖片並保存的方法

現在在vc上採集視頻常用的方法有三:vfw,directshow,opencv

你是要進行圖像處理的話推薦opencv(具體參考:於仕琪,opencv教程基礎篇中的例3-6,稍作修改,估計就能用於你的工程)

下面貼出我自己編的一個小工程:如有疑問,E-mail:[email protected]
進行opencv的預備操作你要看那本書和逛opencv中文網

如有問題可以和我討論(我也是菜鳥,剛為解決了這個問題竊喜不已)。
1.新建mfc對話框工程,在其中添加一個picture控制項,除了ID以外什麼都不用改

2.在對話框頭文件(沒有Dlg那個)中添加(最好是在「#include "resource.h" // main symbols之後」):
#include "cxcore.h"
#include "cvcam.h"
#include "windows.h"
#include "cv.h"
#include "highgui.h"
3.在工程-》設置-》選擇所有配置-》link(連接)-》對象/庫模塊-》中添加:
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib

4.在需要觸發攝像頭顯示的地方添加:
void CVideomfcDlg::OnButton1()
{
// TODO: Add your control notification handler code here

int ncams = cvcamGetCamerasCount( );//返回可以訪問的攝像頭數目
HWND MyWin=::GetDlgItem(m_hWnd,IDC_VIDEO); //獲得控制項句柄(IDC_VIDEO就是圖片控制項)
cvcamSetProperty(0, CVCAM_PROP_ENABLE, CVCAMTRUE); //選擇第一個攝像頭
int width=240;
int height=240;

cvcamSetProperty(0,CVCAM_PROP_WINDOW, &MyWin); // Selects a window for
cvcamSetProperty(0,CVCAM_RNDWIDTH, &width);
cvcamSetProperty(0,CVCAM_RNDHEIGHT, &height);
cvcamSetProperty(0, CVCAM_PROP_CALLBACK, callback1);
//回調函數將處理每一幀

cvcamInit( );
cvcamStart( );

}
5.改變顯示的圖像序列大小,在窗口屬性設定了以後,添加如下代碼:
int width=320; //這個就是需要顯示的窗口大小
int height=240; //根據自己需要選擇
cvcamSetProperty(0,CVCAM_RNDWIDTH, &width);
cvcamSetProperty(0,CVCAM_RNDHEIGHT, &height);

6.在對話框類中添加callback成員函數(注意,在添加函數的時候,一定要選擇static,不選的話你就自己郁悶去吧,反正我是為了這個郁悶了2個禮拜)
void CVideomfcDlg::callback1(IplImage *image)
{

IplImage* image1 = image;
int i,j;

assert (image);
//獲取當前系統時間
SYSTEMTIME st2=;
GetLocalTime(&st2);
char sss[18]=; //這個是用來存儲所要保存的圖片名的,用的是一個笨辦法,先定義,再修改其中的數組值。

sss[7]=st2.wHour/10+48; //獲取系統當前小時
sss[8]=st2.wHour%10+48;

sss[9]=st2.wMinute/10+48; //獲取系統當前分鍾
sss[10]=st2.wMinute%10+48;

sss[11]=st2.wSecond/10+48; //獲取系統當前秒
sss[12]=st2.wSecond%10+48;

cvSaveImage(sss,image1); //使用系統當前時間為名稱(XXXXXX.jpg)存儲圖片
}
ps:你還需要在c盤根目錄下建立一個叫1的文件夾保存圖片。
祝你成功!

⑵ OpenCV中為什麼將一幅圖片改為灰度圖後,灰度圖比原圖像佔用空間大

你原圖像是多大?是否為BMP格式?如果原圖比較小的話,灰度圖可能比24位真彩圖佔用更多空間,這主要是因為灰度圖需要一個顏色表。這似乎違反了直覺,因為人們通常認為灰度圖應該比真彩圖佔用更少的空間。

推薦你使用UltraEdit工具,參考圖片格式來分析這兩個圖片。在UltraEdit中,你可以看到這兩個圖片的詳細信息,包括它們各自的大小和格式。通過這種方式,你可以更直觀地理解為什麼灰度圖可能比原圖佔用更多空間。

在MATLAB中,處理圖像時主要是關注像素點的數值,因此灰度圖的數據量大約為真彩圖的1/3。這是因為灰度圖只包含亮度信息,而真彩圖則包含紅、綠、藍三種顏色的亮度信息。

但當將圖片轉換為灰度圖後,即使沒有顏色表,灰度圖的文件大小可能仍然比原圖大。這是因為顏色表中通常包含大量的顏色信息,即使在灰度圖中,顏色表仍然存在,只是其中的顏色信息較少。

值得注意的是,不同圖像編輯軟體在處理灰度圖時,可能會以不同的方式存儲顏色表。因此,即使在理論上灰度圖應該佔用更少的空間,實際情況可能會有所不同。

綜上所述,灰度圖比原圖佔用更多空間的原因主要有兩個:一是顏色表的存在,二是圖像編輯軟體的存儲方式。

熱點內容
防病毒源碼 發布:2025-05-20 05:25:00 瀏覽:925
小米自動上傳 發布:2025-05-20 05:06:06 瀏覽:624
王者榮耀引流腳本 發布:2025-05-20 05:06:03 瀏覽:485
無人深空pc需要什麼配置 發布:2025-05-20 04:55:17 瀏覽:614
可編程式恆溫恆濕試驗箱 發布:2025-05-20 04:54:34 瀏覽:367
visibilityandroid 發布:2025-05-20 04:54:26 瀏覽:699
android磁場感測器 發布:2025-05-20 04:50:46 瀏覽:828
python經典編程題 發布:2025-05-20 04:42:33 瀏覽:782
xp電腦訪問win7 發布:2025-05-20 04:41:59 瀏覽:617
金融的配置是什麼 發布:2025-05-20 04:41:07 瀏覽:466