1. 程式人生 > >讀取大恆工業相機碼流&opencv呼叫顯示

讀取大恆工業相機碼流&opencv呼叫顯示

#include "stdafx.h"
#include "GxIAPI.h"
#include "DxImageProc.h" 
#include <iostream>  
#include <opencv2/core/core.hpp>  
#include <opencv2/imgproc/imgproc.hpp>  
#include <opencv2/highgui/highgui.hpp> 

using namespace cv; 
using namespace std;

static void GX_STDC OnFrameCallbackFun(GX_FRAME_CALLBACK_PARAM* pFrame)
{
	int64_t nWidth = pFrame->nWidth;
	int64_t nHeight= pFrame->nHeight;
	BYTE *m_pBufferRaw = new BYTE[nWidth * nHeight];          ///< 原始影象資料
	BYTE *pRGB24Buf = new BYTE[nWidth * nHeight];          
	if (pFrame->status == 0)
	{
		memcpy(m_pBufferRaw, pFrame->pImgBuf, pFrame->nImgSize);
		for (int i = 0; i <nHeight; i++)     
{ 
			memcpy(pRGB24Buf + i*nWidth, m_pBufferRaw + (nHeight - i - 1)*nWidth, (size_t)nWidth); 
		} 
		IplImage* src= cvCreateImage(cvSize(nWidth, nHeight), 8, 1);
		src->imageData = (char*)m_pBufferRaw;
		namedWindow("Image:",CV_WINDOW_NORMAL);
		cvShowImage("Image:",src); 
		cvWaitKey(1);
		cvReleaseImage(&src);
		delete []m_pBufferRaw;
		delete []pRGB24Buf;
	}
	return;    
}
int _tmain(int argc, _TCHAR* argv[])
{
	GX_STATUS status = GX_STATUS_SUCCESS;  
	GX_DEV_HANDLE hDevice = NULL;
	GX_OPEN_PARAM stOpenParam;
	uint32_t nDeviceNum = 0;

	//在起始位置呼叫GXInitLib()進行初始化,申請資源
	status = GXInitLib();
	if (status != GX_STATUS_SUCCESS)
	{
		return 0;
	}
	// 列舉裝置列表
	status = GXUpdateDeviceList(&nDeviceNum, 1000);
	if ((status != GX_STATUS_SUCCESS) || (nDeviceNum <= 0))
	{
		return 0;
	}
	//開啟裝置
	stOpenParam.accessMode = GX_ACCESS_EXCLUSIVE;
	stOpenParam.openMode   = GX_OPEN_INDEX;
	stOpenParam.pszContent = "1";
	status = GXOpenDevice(&stOpenParam, &hDevice);
	if (status == GX_STATUS_SUCCESS)
	{
		//註冊影象處理回撥函式
		status = GXRegisterCaptureCallback(hDevice, NULL, OnFrameCallbackFun);
		//傳送開採命令
		status = GXSendCommand(hDevice, GX_COMMAND_ACQUISITION_START);     


		while(1)
		{
		}
		//傳送停採命令
		status = GXSendCommand(hDevice, GX_COMMAND_ACQUISITION_STOP);
		//登出採集回撥
		status = GXUnregisterCaptureCallback(hDevice);
	}
	//在結束的時候呼叫GXCLoseLib()釋放資源
	status = GXCloseDevice(hDevice);
	status = GXCloseLib();
	return 0;
}

如若涉及到opencv處理影象部分可設定全域性變數,在回撥函式中間IplImage* src拷貝出來,後在GXSendCommand函式下進行操作。

以上程式碼中涉及的opencv及大恆lib、dll請自行新增至環境中。

相關推薦

讀取工業相機&opencv呼叫顯示

#include "stdafx.h" #include "GxIAPI.h" #include "DxImageProc.h" #include <iostream> #include <opencv2/core/core.hpp> #i

工業相機+opencv開發經歷

遇到的問題: 1、開啟Daheng Galaxy Viewer(x64)沒有影象 由於對工業相機不熟悉,原因是沒有安裝鏡頭,安裝鏡頭後可以正常使用,否則只有白色或黑色,用手指靠近鏡頭感測器,可以觀察到螢幕上黑白水紋狀的東西。 2、VS程式訪問出錯,導致無法除錯並藍屏 以下是兩個VS曾經提示

opencv筆記8----從工業攝像頭讀取影象

採用大恆MER系列工業攝像機,不能用opencv自帶函式開啟攝像頭,需要用廠商提供的API 工業攝像頭採集的圖片格式為BYTE,opencv需要從記憶體中讀取BYTE,轉化成IplImage *(in C) 或者Mat( in c++) #include "std

opencv讀取相機

大恆相機真的是坑,如果你想連續儲存儲存影象基本會藍屏,至於原因我還在找,感覺它的sdk做的不是很人性化,怎麼說呢,用opencv讀影象一點問題沒有,顯示也沒有,但是想要連續儲存就會藍屏,真的不是很懂。 我用的程式碼幾乎就是sdk裡面doc文件的c++,但是怎麼用opencv來讀取影象呢,需要

VS2015+OpenCV+MER-Gx系列工業相機

VS2015+OpenCV+大恆MER-Gx系列工業相機 1.實驗所需 2.建立C++專案 3. 新增原始檔 4.感言 本人C++和OpenCV基礎比較薄弱,VS2015龐雜的處理介面又讓人應接不暇。之前偶爾使用網路攝像頭,勉強能夠完成基

opencv使用相機的痛苦經歷

做畢業設計需要用到工業相機,之前的IDS需要還了,心想買個便宜點的(畢竟做完畢設就離開實驗室了,太貴不好。。),挑了個國產的相機,大恆的DH-HV3151UC 從到貨那天開始經歷了整整一週的折磨(不過

AI新時代-神教你使用python+Opencv完成人臉解鎖(附源

判斷 剛才 src 學習 需要 亂七八糟 很多 request mbx 好吧,夥計們,我回來了。說我拖更不寫文章的可以過來用你的小拳拳狠命地捶我胸口.... 那麽今天我們來講關於使用python+opencv+face++來實現人臉驗證及人臉解鎖。代碼量同樣不多,你可以將這

0007-用OpenCV的VideoCapture類讀取avi視訊檔案,並以幀的形式顯示出來!

OpenCV用VideoCapture類實現avi視訊讀取的相關操作,具體怎麼使用,大家看程式碼便知! 示例程式碼如下: 程式碼中用的視訊下載連結:http://pan.baidu.com/s/1qYbRtqW 密碼:5bcu //opencv版本:OpenCV3.0 //VS版本:VS20

DALSA線陣CCD相機開發 之 opencv讀取圖片

SDK的下載 SDK的安裝 解壓執行.exe檔案,按照提示確定,下一步即可。 幫助文件和demo 如果要獲得完整的幫助文件和demo,在SDK安裝時選擇full安裝,路徑可以自己選擇,預設路徑為 C:\Program Files\Teledyne DALSA\

華NVR裝置接分別入宇視攝像機Onvif和RTSP主子的方案說明

需求提要 1、各個內網現場有多種網路攝像機IPC和網路硬碟錄影機NVR裝置; 2、需要將這些裝置統一接入到雲端中心平臺,進行統一的視訊直播和錄影回放管理; 3、由於目前IPC裝置都屬於高清裝置,主碼流比較大,如果走公網傳輸,在雲端中心平臺觀看體驗會非常差,但不能直接降低IPC

Basler工業相機基於opencv 採集影象

本實驗在兩個部落格的基礎上實現的,首先是配置opencv http://blog.csdn.net/lili2425960/article/details/54234299 先前查了一些關於win10+opencv3.0(2.xx)+vs配置的文章,準備以此為樣本來配置

Ubuntu下使用Python-opencv獲取海康威視RTSP教程

已更新(前面的方法雖然可行但不能解決根本問題,對不住大家了,讓大家浪費了時間!實際有更簡單的方案,請直接檢視分割線以下的內容) /* 下面這部分內容被作廢了 筆者在釋出這篇部落格之前為了拿到海康威視的碼流費了九牛二虎之力,當然也可能是筆者太菜,但是既然折騰出來

python json及mysql——讀取json文件存sql、數據庫日期類型轉換、終端操縱mysql及python codecs讀取文件問題

temp extra log urn xtra mysql 程序 pre 安裝mysql preface: 近期幫師兄處理json文件,須要讀到數據庫裏面,以備其興許從數據庫讀取數據。數據是關於yelp站點裏面的: https://github.com/Yelp/d

關於對H264的PS的封裝的相關代實現

真心 clip gef 但是 占用 udp 大致 結果 方法 轉自:http://www.cnblogs.com/lidabo/p/6604988.html 1、寫在開始之前: 最近因為新工作要維護別人留下的GB模塊代碼,先熟悉了流程,然後也試著封裝

關於對H264的TS的封裝的相關代實現

有效 當前 完成 read ble tco and mark comm 轉自:http://www.cnblogs.com/lidabo/p/6604998.html 1 寫在開始之前 在前段時間有分享一個H264封裝ps流到相關文章的,這次和

vlc命令行: 轉 化 推

dom 文件 control 字幕 ica png 6.0 app 全部 vlc命令行: 轉碼 流化 推流 寫在命令行之前的話: VLC不僅僅可以通過界面進行播放,轉碼,流化,也可以通過命令行進行播放,轉碼和流化。還可以利用裏面的SDK進行二

python 讀取文件

treat pan 出現 擔心 code including open hand you 要讀取個大文件,文件大概是3G左右,擔心read會出現內存溢出的情況,網上找了個靠譜的用法: with open(...) as f: for line in f:

H264中SPS PPS詳解<轉>

擴展 vlc 地址 逗號 部分 級別 軟件 第一個 bottom 轉載地址:https://zhuanlan.zhihu.com/p/27896239 1 SPS和PPS從何處而來? 2 SPS和PPS中的每個參數起什麽作用? 3 如何解析SDP中

C#應用視頻教程3.1 USB工業相機測試

高光 -s back 進行 ace 測試環境 family 在線 學習 圖像處理是工控很有價值的一個領域,比如人臉識別,車牌識別,還有產品的位置識別,瑕疵檢測,對於個人學習來說,我們無法直接上手幾萬塊的成熟工業相機(高端的康耐視要6萬左右,而且是黑白的,要測試一些帶顏色的算

快速讀取文件的幾種方式

讀取 auto 塊大小 最終 net trace ngx 語言 -1 轉一篇:http://blog.csdn.net/fengxingzhe001/article/details/67640083 原來使用一行一行讀取文本的方式,速度是慢的的可以,弄了好久還是不行,後來看