国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Dalsa線掃相機(jī)SDK二次開(kāi)發(fā)

這篇具有很好參考價(jià)值的文章主要介紹了Dalsa線掃相機(jī)SDK二次開(kāi)發(fā)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

#include <iostream>
#include"SapClassBasic.h"
#include <SapBuffer.h>
#include<conio.h>
#include <string>
#include <vector>
#include <io.h>
#include <opencv2/opencv.hpp>
#include <stdio.h>
#include <QImage>
using namespace std;

SapManager* m_pManager;
SapAcquisition* m_Acquisition;
SapBufferWithTrash* m_Buffers;
SapTransfer* m_Xfer;
SapView* m_View;
SapAcqDevice *m_AcqDevice;

static void XferCallBack(SapXferCallbackInfo* pInfo)
{
	m_View->Show();
}
bool initDevice(char* m_serverName, const char*ccfpath)
{
	SapLocation loc(m_serverName, 0);//初始化采集卡

	m_Acquisition = new SapAcquisition(loc, ccfpath);
	m_Buffers = new SapBufferWithTrash(3, m_Acquisition);
	m_Xfer = new SapAcqToBuf(m_Acquisition, m_Buffers, XferCallBack, m_View);
	m_View = new SapView(m_Buffers, SapHwndAutomatic);
	if (m_Acquisition && !*m_Acquisition && !m_Acquisition->Create()) return FALSE;
	if (m_Buffers && !*m_Buffers)
	{
		if (!m_Buffers->Create())
		{
			return FALSE;
		}
		m_Buffers->Clear();
	}
	if (m_View && !*m_View && !m_View->Create())
	{
		return FALSE;
	}

	// Set next empty with trash cycle mode for transfer
	if (m_Xfer && m_Xfer->GetPair(0))
	{
		if (!m_Xfer->GetPair(0)->SetCycleMode(SapXferPair::CycleNextWithTrash))
		{
			return FALSE;
		}
	}
	// Create transfer object
	if (m_Xfer && !*m_Xfer && !m_Xfer->Create())
	{
		return FALSE;
	}
	return true;
}

int main(int argc, char** argv)
{
	char* m_SerName = new char[MAX_PATH];//采集卡名稱
	SapBuffer sapBuffer;
	int framcount = 0;
	int flag = 0;
	string ccf_path = "D:\\test\\ds\\ds\\2023_06_29.ccf";
	//vector<cv::Mat> m_Mats;
	BYTE *pData;
	uchar *imgData = new uchar[150 * 100/1.75*7000];

	cv::Mat m_Mat_all = cv::Mat::zeros(cv::Size(700,85700), CV_8U);
	int SerCount = m_pManager->GetServerCount(SapManager::ResourceAcq);
	m_pManager->GetServerName(0, SapManager::ResourceAcq, m_SerName);//獲取采集卡名稱
	m_pManager->GetServerType(m_SerName);//獲取采集卡類型
	//初始化設(shè)備
	if (initDevice(m_SerName, ccf_path.c_str()))
	{
		cout << "Open " << m_SerName << " Success!" << endl;
	}
	else
	{
		cout << "Open " << m_SerName << " Failed!" << endl;
	}
	//開(kāi)始采集
	if (!m_Xfer->IsGrabbing())
	{
		m_Xfer->Grab();
		flag = 1;
		m_Buffers->GetAddress((void**)&pData);
		//int width = m_Buffers->GetWidth();
		//int height = m_Buffers->GetHeight();
	}
	while (true)
	{
		if (flag == 1)
		{
			std::cout << "Grab" << std::endl;
			//Sleep(200);
			std::stringstream ss;
			ss << "D:\\test\\ds\\ds\\bmp1\\" << framcount << ".bmp";
			std::string name = ss.str();
			const char* savename = name.c_str();
			//cv::Mat m_Mat = cv::Mat::zeros(cv::Size(640, 480), CV_8U);
			//QImage image(640, 480, QImage::Format_Grayscale8);
			//m_Xfer->Freeze();
			//memcpy(m_Mat.data, pData, 640 * 480);
			memcpy(imgData + framcount*7000,pData,7000);
			//cv::imwrite(name,m_Mat);
			//memcpy(image.bits(), pData, 640 * 480);
			//image.save(savename);
			//m_Buffers->Save(savename, "-format bmp");
			//m_Buffers->Clear();
			//m_Xfer->Grab();
			//m_Buffers->Save(savename, "-format bmp");
			//m_Mats.push_back(m_Mat);
			framcount++;
			if (framcount > int(150 * 100 / 1.75 - 1))
			{
				framcount = 0;
				cout << "Grab Finished" << endl;//停止采集
				m_Xfer->Freeze();
				for (int i = 0; i < int(150 * 100 / 1.75 - 1); i++)
				{
					cv::Rect roiRect(0, 10 * i,700, 10);
					cv::Mat img = cv::Mat::zeros(cv::Size(700,10), CV_8U);
					memcpy(img.data, imgData + i * 7000,7000);
					//std::stringstream ss;
					//ss << "D:\\test\\ds\\ds\\bmp1\\" << i << ".bmp";
					//std::string name = ss.str();
					//cv::imwrite(name, img);
					cv::Mat roi = m_Mat_all(roiRect);
					img.copyTo(roi);
					cv::imshow("1", m_Mat_all);
					cv::waitKey(0);
				}
				cv::imwrite("test.bmp", m_Mat_all);
				break;
			}
		}
	}
	delete imgData;
	// Destroy transfer object
	if (m_Xfer && *m_Xfer) m_Xfer->Destroy();
	if (m_View && *m_View) m_View->Destroy();
	if (m_Buffers && *m_Buffers) m_Buffers->Destroy();
	if (m_Acquisition && *m_Acquisition) m_Acquisition->Destroy();

	//Delete all pointer
	if (m_View) delete m_View;
	if (m_Buffers) delete m_Buffers;
	if (m_Xfer) delete m_Xfer;
	if (m_Acquisition) delete m_Acquisition;
}

要用回調(diào)函數(shù)取圖:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-531507.html

#include <iostream>
#include"SapClassBasic.h"
#include <SapBuffer.h>
#include<conio.h>
#include <string>
#include <vector>
#include <io.h>
#include <opencv2/opencv.hpp>
#include <stdio.h>
using namespace std;

SapManager* m_pManager;
SapAcquisition* m_Acquisition;
SapBufferWithTrash* m_Buffers;
SapTransfer* m_Xfer;
SapView* m_View;
SapAcqDevice *m_AcqDevice;
BYTE *pData;
int framcount = 1;

static void XferCallBack(SapXferCallbackInfo* pInfo)
{
	cv::Mat m_Mat = cv::Mat::zeros(cv::Size(640, 480), CV_8U);
	memcpy(m_Mat.data, pData, 640 * 480);
	std::stringstream ss;
	ss << "D:\\test\\ds\\ds\\bmp\\" << framcount << ".bmp";
	std::string name = ss.str();
	cv::imwrite(name,m_Mat);
	framcount++;
	//Sleep(100);
	//m_View->Show();
}
bool initDevice(char* m_serverName, const char*ccfpath)
{
	SapLocation loc(m_serverName, 0);//初始化采集卡

	m_Acquisition = new SapAcquisition(loc, ccfpath);
	m_Buffers = new SapBufferWithTrash(3, m_Acquisition);
	m_Xfer = new SapAcqToBuf(m_Acquisition, m_Buffers, XferCallBack, m_View);
	m_View = new SapView(m_Buffers, SapHwndAutomatic);
	if (m_Acquisition && !*m_Acquisition && !m_Acquisition->Create()) return FALSE;
	if (m_Buffers && !*m_Buffers)
	{
		if (!m_Buffers->Create())
		{
			return FALSE;
		}
		m_Buffers->Clear();
	}
	if (m_View && !*m_View && !m_View->Create())
	{
		return FALSE;
	}

	// Set next empty with trash cycle mode for transfer
	if (m_Xfer && m_Xfer->GetPair(0))
	{
		if (!m_Xfer->GetPair(0)->SetCycleMode(SapXferPair::CycleNextWithTrash))
		{
			return FALSE;
		}
	}
	// Create transfer object
	if (m_Xfer && !*m_Xfer && !m_Xfer->Create())
	{
		return FALSE;
	}
	return true;
}

int main(int argc, char** argv)
{
	char* m_SerName = new char[MAX_PATH];//采集卡名稱
	SapBuffer sapBuffer;
	int flag = 0;
	string ccf_path = "D:\\test\\ds\\ds\\2023_06_29.ccf";
	vector<cv::Mat> m_Mats;
	
	cv::Mat m_Mat_all = cv::Mat::zeros(cv::Size(640, 4800), CV_8U);
	int SerCount = m_pManager->GetServerCount(SapManager::ResourceAcq);
	m_pManager->GetServerName(0, SapManager::ResourceAcq, m_SerName);//獲取采集卡名稱
	m_pManager->GetServerType(m_SerName);//獲取采集卡類型
	cout << "Opening " << m_SerName << endl;
	//初始化設(shè)備
	if (initDevice(m_SerName, ccf_path.c_str()))
	{
		cout << "Open " << m_SerName << " Success!" << endl;
	}
	else
	{
		cout << "Open " << m_SerName << " Failed!" << endl;
	}
	//開(kāi)始采集
	if (!m_Xfer->IsGrabbing())
	{
		m_Xfer->Grab();
		flag = 1;
		m_Buffers->GetAddress((void**)&pData);
		//int width = m_Buffers->GetWidth();
		//int height = m_Buffers->GetHeight();
	}
	while (true)
	{
		if (flag == 1)
		{
			std::cout << "Grab" << std::endl;
			//m_Mats.push_back(m_Mat);
			if (framcount > 1000)
			{
				framcount = 0;
				cout << "Grab Finished" << endl;//停止采集
				m_Xfer->Freeze();
				break;
			}
		}
	}

	// Destroy transfer object
	if (m_Xfer && *m_Xfer) m_Xfer->Destroy();
	if (m_View && *m_View) m_View->Destroy();
	if (m_Buffers && *m_Buffers) m_Buffers->Destroy();
	if (m_Acquisition && *m_Acquisition) m_Acquisition->Destroy();

	//Delete all pointer
	if (m_View) delete m_View;
	if (m_Buffers) delete m_Buffers;
	if (m_Xfer) delete m_Xfer;
	if (m_Acquisition) delete m_Acquisition;
}

到了這里,關(guān)于Dalsa線掃相機(jī)SDK二次開(kāi)發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • micropython 自制數(shù)碼相機(jī)

    像頭(CAMERA或WEBCAM)又稱為電腦相機(jī)、電腦眼、電子眼等,是一種視頻輸入設(shè)備,被廣泛的運(yùn)用于視頻 會(huì)議,安防系統(tǒng)??、圖像采集系統(tǒng)、?環(huán)境監(jiān)控?、工業(yè)現(xiàn)場(chǎng)過(guò)程控制?等方面。本實(shí)驗(yàn)用TPYBoard? v102以 及PTC06?串口攝像頭模塊DIY一個(gè)簡(jiǎn)易的照相機(jī)。 1.所用器材: ??? TPY

    2024年02月19日
    瀏覽(22)
  • 線掃相機(jī)DALSA--采集卡Base模式設(shè)置

    線掃相機(jī)DALSA--采集卡Base模式設(shè)置

    采集卡默認(rèn)加載“1 X Full Camera Link”固件,Base模式首先要將固件更新為“2 X Base Camera Link”。 右鍵SCI圖標(biāo),選擇“打開(kāi)文件所在的位置”,找到并打開(kāi)SciDalsaConfig的Demo,如上圖所示: 左鍵單擊“獲取相機(jī)”,稍等1-2分鐘后提示“獲取相機(jī)列表成功”; 獲取相機(jī)列表成功后點(diǎn)

    2024年02月06日
    瀏覽(29)
  • 線掃相機(jī)DALSA--常見(jiàn)問(wèn)題一:軟件安裝順序

    線掃相機(jī)DALSA--常見(jiàn)問(wèn)題一:軟件安裝順序

    1.軟件安裝順序 先安裝:Sapera_LT_SDK,后安裝Xtium-CL MX4驅(qū)動(dòng)。 2.初次安裝CamExpert,重啟電腦后未找到相機(jī) Settings(搜索協(xié)議)配置完畢后,需點(diǎn)擊Detect Camera(一鍵查找相機(jī))按鈕,搜索相機(jī)。第一次查找相機(jī)耗時(shí)會(huì)略長(zhǎng),后續(xù)打開(kāi)CamExpert無(wú)需再Detect Camera,相機(jī)專家會(huì)按照搜索協(xié)議,

    2024年02月04日
    瀏覽(108)
  • 線掃相機(jī)DALSA--常見(jiàn)問(wèn)題四:修改相機(jī)參數(shù),參數(shù)保存無(wú)效情況

    線掃相機(jī)DALSA--常見(jiàn)問(wèn)題四:修改相機(jī)參數(shù),參數(shù)保存無(wú)效情況

    該問(wèn)題是操作不當(dāng),未按照正常步驟保存參數(shù)所致,相機(jī)為RAM機(jī)制,參數(shù)需保存在采集卡的ROM內(nèi)。 保存參數(shù)步驟: ①首先將相機(jī)參數(shù)保存至User Set1; ②然后回到Board(采集卡)參數(shù)設(shè)置區(qū),鼠標(biāo)選中Basic Timing; ③最后鼠標(biāo)點(diǎn)擊相機(jī)專家菜單欄”Save”按鈕即可完成參數(shù)保存。

    2024年02月06日
    瀏覽(52)
  • 線掃相機(jī)DALSA-Advanced Control(輸出設(shè)置)

    線掃相機(jī)DALSA-Advanced Control(輸出設(shè)置)

    (Q有答疑)康耐視智能相機(jī)Insight-藥品檢測(cè) Line Sync Source(選擇觸發(fā)信號(hào)): ①None:表示關(guān)閉外觸發(fā),此時(shí)相機(jī)處于Free-Run(自由采集)模式; ②Internal Line Trigger:表示采集卡按照固定的頻率發(fā)出行信號(hào)觸發(fā)相機(jī)拍照,頻率可在下面的”Internal Line Trigger Frequency(in HZ)”欄里設(shè)置; 注:

    2024年02月09日
    瀏覽(44)
  • 如何從數(shù)碼相機(jī)恢復(fù)已刪除的照片?

    如何從數(shù)碼相機(jī)恢復(fù)已刪除的照片?

    “嗨,我刪除了索尼數(shù)碼相機(jī)中的所有照片。有什么辦法可以讓他們回來(lái)嗎?” ——?jiǎng)P 我們經(jīng)常從數(shù)碼相機(jī)中刪除照片。但是,如果我們誤刪除了一些重要的照片,則很難將其恢復(fù),因?yàn)閯h除的照片可能會(huì)繞過(guò)回收站或垃圾箱,并且數(shù)碼相機(jī)存儲(chǔ)卡中沒(méi)有“最近刪除”文

    2024年04月09日
    瀏覽(22)
  • U盤(pán)/硬盤(pán)/數(shù)碼相機(jī)RAW格式文件丟失的原因|恢復(fù)方法

    在現(xiàn)代數(shù)字生活中,U盤(pán)、硬盤(pán)以及數(shù)碼相機(jī)等設(shè)備已經(jīng)成為我們儲(chǔ)存和分享數(shù)據(jù)的主要工具。然而,當(dāng)這些設(shè)備中的RAW格式文件出現(xiàn)丟失時(shí),我們可能會(huì)陷入困境。面對(duì)這種情況,了解如何恢復(fù)這些RAW格式文件就變得至關(guān)重要。 一、理解RAW格式文件 RAW格式文件是一種原始數(shù)

    2024年02月12日
    瀏覽(18)
  • 【計(jì)算機(jī)視覺(jué):算法和應(yīng)用】第二章:圖像形成——2.3數(shù)碼相機(jī)

    【計(jì)算機(jī)視覺(jué):算法和應(yīng)用】第二章:圖像形成——2.3數(shù)碼相機(jī)

    2.1幾何圖元與變換 2.2相機(jī)輻射成像 ? ? ? ?從一個(gè)或多個(gè)光源開(kāi)始,在世界中一個(gè)或多個(gè)表面反射并通過(guò)相機(jī)鏡頭后,光最終到達(dá)成像傳感器。到達(dá)傳感器的光子是如何轉(zhuǎn)換為我們?cè)跀?shù)字圖像上看到的數(shù)字(R,G,B)值的呢?在這一節(jié),我們構(gòu)建了一個(gè)簡(jiǎn)單的模型來(lái)解釋大多數(shù)

    2024年01月19日
    瀏覽(30)
  • 小米12s ultra,索尼xperia1 iv,數(shù)碼相機(jī) 拍照對(duì)比

    小米12s ultra,索尼xperia1 iv,數(shù)碼相機(jī) 拍照對(duì)比

    首先說(shuō)明所有的測(cè)試結(jié)果和拍攝數(shù)據(jù)我放到百度網(wǎng)盤(pán)了(地址在結(jié)尾) 我一直想知道現(xiàn)在的手機(jī)和相機(jī)差距有多大,到底差在哪兒? 先說(shuō)結(jié)論: 1.1英寸的手機(jī)cmos(2022年) 6年前(2016)的入門(mén)款相機(jī)(m43畫(huà)幅) 2.手機(jī) 不能換鏡頭,只能在特定的拍攝距離才能發(fā)揮出全部的實(shí)力.數(shù)碼變焦畫(huà)質(zhì)損

    2024年02月09日
    瀏覽(34)
  • 海康威視相機(jī)SDK二次開(kāi)發(fā)(JAVA語(yǔ)言)

    ??低曄鄼C(jī)SDK二次開(kāi)發(fā)(JAVA語(yǔ)言)

    前言 有個(gè)項(xiàng)目需要使用java程序讀取??低暤南鄼C(jī)圖片。相機(jī)通過(guò)以太網(wǎng)連接服務(wù)器,部署在服務(wù)器上的java程序?qū)⑾鄼C(jī)拍攝的畫(huà)面保存在指定路徑下。 ??低曁峁┝藄dk開(kāi)發(fā)包,可以在官網(wǎng)中下載,windows和linux系統(tǒng)都有。但是開(kāi)發(fā)包中給出的示例代碼,無(wú)法滿足實(shí)際需要,

    2024年04月29日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包