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

巴斯勒相機(jī)基于SDK 二次開(kāi)發(fā)C++程序

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

巴斯勒相機(jī)在VS中如何進(jìn)行連接調(diào)用呢(軟觸發(fā)調(diào)用)
1.查找巴斯勒相機(jī)網(wǎng)口;
2.調(diào)用巴斯勒相機(jī)提供的接口,連接巴斯勒相機(jī);
3.初始化相機(jī);
(安裝巴斯勒相機(jī)軟件)

#pragma once
#include <pylon/PylonIncludes.h>
#include "CameraConfiguration.h"
#include "BitmapControl.h"
#include "utilities.h"

#define MAX_CAMERA	10

using namespace std;

class CPylonCamera:
			public CImageEventHandler             // For receiving grabbed images.
			, public CConfigurationEventHandler     // For getting notified about device removal.
{
public:
	CPylonCamera(void);
	~CPylonCamera(void);
public:
	// Device list.
	Pylon::DeviceInfoList_t m_devices;

	// Index of currently used camera.
	int m_ixCamera;

	// The CInstant camera.
	CInstantCamera m_camera[MAX_CAMERA];

	// The TransportLayer.
	Pylon::CTlFactory *m_pTlFactory;

	// Camera Node Map.
	GenApi::INodeMap *m_pCameraNodeMap;

	// The current pixel type.
	Pylon::PixelType m_PixelFormat;

	// To save images.
	bool m_bSaveImage;

	// Pointer for the last grabbed image, which will be displayed.
	CGrabResultPtr m_LastGrabbedImage;

	CBitmapControl m_ImageControl[MAX_CAMERA];

	// Will be used to lock the access.
	GenApi::CLock m_lock;

	// Used to measure the frame rate.
	CStopWatch m_StopWatch;

	// Frame rate
	CMovingAvg<double> m_Fps;

	virtual void OnImageGrabbed(CInstantCamera& camera, const CGrabResultPtr& ptrGrabResult);
	 //virtual void OnGrabError( CInstantCamera& camera, const char* errorMessage);
	 //virtual void OnCameraDeviceRemoved( CInstantCamera& camera);

	// Set up the camera
	void SetupCamera(int index);
	void SetTriggerFunction();
	void SetCamera(int index);
	bool InitCamera(int index,int w=1280,int h=1024);
	bool FindCamera();
	bool Connect(char *szID,int index);
	void StartLive(int index);
	void StopLive(int index);
	void GetOne(int index);
	bool IsGrabbing(int index);

	//設(shè)置相機(jī)參數(shù)
	bool SetFrame(int index,int nValue);				// 設(shè)置采集幀率
	bool SetGain(int index,int nValue);					// 設(shè)置增益
	bool SetExposureTime(int index,int nValue);	// 設(shè)置曝光時(shí)間
	bool SetReverseX(int index,bool bEnable);		// 設(shè)置X方向鏡像

	//相機(jī)屬性
	static DeviceInfoList_t GetCameraInfoList();
	CString GetDeviceSN(int index);
	CString GetDeviceUserID(int index);

	void GetCameraPrm(int index);

	int m_iExp[MAX_CAMERA];
	int m_iGain[MAX_CAMERA];
	int m_iWidth[MAX_CAMERA];
	int m_iHeight[MAX_CAMERA];
	int m_DevDir[MAX_CAMERA];
	int m_iFrame[MAX_CAMERA];
	bool m_bFrame[MAX_CAMERA];
	CString m_strSerialNumber[MAX_CAMERA];
	int m_CameraList[MAX_CAMERA];
	int m_CurCameraIndex;
	int m_CameraNum;
private:
	int64_t Adjust(int64_t val, int64_t min,int64_t max,int64_t inc);
public:
	long	m_ImgBufLen[MAX_CAMERA];
	BYTE	*m_pGraBuffer[MAX_CAMERA];
	BITMAPINFO *m_pBmpInfo[MAX_CAMERA];
};

#include "StdAfx.h"
#include "PylonCamera.h"

using namespace GenApi;
using namespace Pylon;

CPylonCamera::CPylonCamera(void)
{
	for(int i=0;i<MAX_CAMERA;i++)
	{
		m_iGain[i] = 25;
		m_iWidth[i] = CAMERA_SIZE_X;
		m_iHeight[i] = CAMERA_SIZE_Y;
		m_pGraBuffer[i] = NULL;
		m_camera[i].RegisterConfiguration(new CAcquireContinuousConfiguration, RegistrationMode_ReplaceAll, Ownership_TakeOwnership);
		m_camera[i].RegisterConfiguration( new CameraConfiguration, RegistrationMode_Append, Ownership_TakeOwnership);
		m_camera[i].RegisterConfiguration( this, RegistrationMode_Append, Ownership_ExternalOwnership);
		m_camera[i].RegisterImageEventHandler( this, RegistrationMode_Append, Ownership_ExternalOwnership);
		m_pBmpInfo[i] = new BITMAPINFO;
	}
	m_CurCameraIndex = 0;
}

CPylonCamera::~CPylonCamera(void)
{
	for(int i=0;i<MAX_CAMERA;i++)
	{
		m_camera[i].DestroyDevice();
		delete m_pBmpInfo[i];
		//	回收?qǐng)D像緩沖區(qū)
		if(m_pGraBuffer[i]!=NULL) delete []m_pGraBuffer[i];
	}
}

bool CPylonCamera::FindCamera()
{
	CString str;
	m_pTlFactory = &CTlFactory::GetInstance ();
	m_devices.clear ();
	m_pTlFactory->EnumerateDevices (m_devices);
	int nSize = m_devices.size();
	if(m_devices.empty ())
	{
		AfxMessageBox("沒(méi)有安裝相機(jī)!");
		return false;
	}
	else
	{
		for(int i = 0; i < nSize; i++)
		{
			str.Format("相機(jī)[%d] : %s", i + 1, m_devices[i].GetFullName().c_str());
		}
	}
	return true;
}

bool CPylonCamera::InitCamera(int index,int w,int h)
{
	m_iWidth[index] = w;
	m_iHeight[index] = h;
	m_ImgBufLen[index] = m_iWidth[index] * m_iHeight[index] * 3;

	/*
	分配Bayer轉(zhuǎn)換后圖像數(shù)據(jù)緩沖
	*/
	m_pGraBuffer[index] = new BYTE[(m_iWidth[index]+2) * (m_iHeight[index]+2)];
	ASSERT(m_pGraBuffer);

	// Reset the viewer.
	m_LastGrabbedImage.Release();
	m_ImageControl[index].SetImage(m_LastGrabbedImage);
	// Force CBitmapControl to repaint its client area.
	if(m_ImageControl[index].m_hWnd != NULL) m_ImageControl[index].Invalidate();

	//	初始化BITMAPINFO 結(jié)構(gòu),此結(jié)構(gòu)在保存bmp文件、顯示采集圖像時(shí)使用
	m_pBmpInfo[index]->bmiHeader.biSize			= sizeof(BITMAPINFOHEADER);
	//	圖像寬度,一般為輸出窗口寬度
	m_pBmpInfo[index]->bmiHeader.biWidth			= m_iWidth[index];
	//	圖像寬度,一般為輸出窗口高度
	m_pBmpInfo[index]->bmiHeader.biHeight			= m_iHeight[index];
	/*
	*	以下設(shè)置一般相同,
	*	對(duì)于低于8位的位圖,還應(yīng)設(shè)置相應(yīng)的位圖調(diào)色板
	*/
	m_pBmpInfo[index]->bmiHeader.biPlanes			= 1;
	m_pBmpInfo[index]->bmiHeader.biBitCount			= 24;
	m_pBmpInfo[index]->bmiHeader.biCompression		= BI_RGB;
	m_pBmpInfo[index]->bmiHeader.biSizeImage		= 0;
	m_pBmpInfo[index]->bmiHeader.biXPelsPerMeter	= 0;
	m_pBmpInfo[index]->bmiHeader.biYPelsPerMeter	= 0;
	m_pBmpInfo[index]->bmiHeader.biClrUsed			= 0;
	m_pBmpInfo[index]->bmiHeader.biClrImportant		= 0;
	return true;
}

bool CPylonCamera::Connect(char *szID,int index)
{
	if(index<0 || index>=m_CameraNum) return false;
	
	CString str;
	int nSize = m_devices.size();
	int tIndex = -1;
	for(int i=0;i<nSize;i++)
	{
		str.Format(m_devices[i].GetSerialNumber());
		if(str.Compare(szID)==0)
		{
			tIndex = i;
			m_CameraList[index] = i;
			m_strSerialNumber[index] = str;
		}
	}
	if(tIndex<0)
	{
		str.Format("沒(méi)有找到相機(jī)[%s]",szID);
		AfxMessageBox(str);
		return false;
	}
	SetupCamera(index);
	return true;
}

void CPylonCamera::SetupCamera(int index)
{
	CString str;
	int n = m_devices.size();
	if(n<index)
		return;
	try
	{
		m_camera[index].DestroyDevice();
		m_camera[index].Attach(m_pTlFactory->CreateDevice(m_devices[m_CameraList[index]]),Cleanup_None);
		if(m_camera[index].IsOpen())
			m_camera[index].Close();
		m_camera[index].Open();
	}
	catch (GenICam::GenericException& e)
	{
		CString str;
		str.Format(_T("設(shè)置相機(jī)[%s] error: %s"),m_devices[m_CameraList[index]].GetSerialNumber().c_str(),e.GetDescription());
		TRACE(str);
	}
}

void CPylonCamera::StartLive(int index)
{
	if(m_camera[index].IsGrabbing()) return;
	if (m_camera[index].IsPylonDeviceAttached()) {
		m_camera[index].StartGrabbing(GrabStrategy_OneByOne, GrabLoop_ProvidedByInstantCamera); 
	}
	m_StopWatch.Start();

	// 設(shè)置采集參數(shù)
	//if(m_iFrame[index]<0) m_iFrame[index]=0;
	//if(m_iFrame[index]>4) m_iFrame[index]=4;
	//SetFrame(index,m_iFrame[index]*10);
	//SetExposureTime(index,m_iExp[index]);
	//SetReverseX(index,m_DevDir[index]==TRUE);
	//SetGain(index,m_iGain[index]);
}

void CPylonCamera::GetOne(int index)
{
	if(m_camera[index].IsGrabbing())
	{
		m_camera[index].StopGrabbing();
		Sleep(200);
	}
	CGrabResultPtr ptrGrabResult;
	m_camera[index].GrabOne(200,ptrGrabResult);
	m_ImageControl[index].SetImage(ptrGrabResult);
}

void CPylonCamera::StopLive(int index)
{
	m_camera[index].StopGrabbing();
}

DeviceInfoList_t CPylonCamera::GetCameraInfoList()
{
	Pylon::DeviceInfoList_t deviceInfoList;
	try
	{
		Pylon::CTlFactory& tlFactory = CTlFactory::GetInstance();
		tlFactory.EnumerateDevices(deviceInfoList);
	}
	catch (GenICam::GenericException& e)
	{
		CString str;
		str.Format(_T("InitAll() error: %s"),e.GetDescription());
		TRACE(str);
	}
	return deviceInfoList;
}

CString CPylonCamera::GetDeviceSN(int index)
{
	if(!m_camera[index].IsPylonDeviceAttached()) return "NULL";
	CString strCameraSN = "";
	DeviceInfoList_t cameraInfoList = CPylonCamera::GetCameraInfoList();
	DeviceInfoList_t::iterator it = cameraInfoList.begin();
	strCameraSN = (*it).GetSerialNumber().c_str();
	return strCameraSN;
}

CString CPylonCamera::GetDeviceUserID(int index)
{
	if(!m_camera[index].IsPylonDeviceAttached()) return "NULL";
	CString strCameraUserID = "";
	DeviceInfoList_t cameraInfoList = CPylonCamera::GetCameraInfoList();
	DeviceInfoList_t::iterator it = cameraInfoList.begin();
	strCameraUserID = (*it).GetUserDefinedName().c_str();
	return strCameraUserID;
}

void CPylonCamera::GetCameraPrm(int index)
{
	m_pCameraNodeMap= &m_camera[index].GetNodeMap();

	CIntegerPtr ptrExp = m_pCameraNodeMap->GetNode ("ExposureTimeRaw");
	m_iExp[index] = (int)ptrExp->GetValue();

	CIntegerPtr ptrGain = m_pCameraNodeMap->GetNode ("GainRaw");
	m_iGain[index] = (int)ptrGain->GetValue();

	CBooleanPtr ptrFrameRateEnable = m_pCameraNodeMap->GetNode("AcquisitionFrameRateEnable");
	m_bFrame[index] = ptrFrameRateEnable->GetValue();

	if(m_bFrame[index] == true)
	{
		CIntegerPtr ptrFrame = m_pCameraNodeMap->GetNode ("AcquisitionFrameRateAbs");
		if(ptrFrame.IsValid())
		{
			m_iFrame[index] = (int)ptrFrame->GetValue();
		}
	}

	CIntegerPtr ptrWidth = m_pCameraNodeMap->GetNode ("Width");
	m_iWidth[index] = (int)ptrWidth->GetValue();

	CIntegerPtr ptrHeight  = m_pCameraNodeMap->GetNode ("Height");
	m_iHeight[index] = (int)ptrHeight->GetValue();
}

void CPylonCamera::SetTriggerFunction()
{
	static bool trigger = false;
	if(!trigger)
	{
		CEnumerationPtr  ptrTrigger  = m_pCameraNodeMap->GetNode ("TriggerMode");
		ptrTrigger->SetIntValue(1);
		trigger = true ;
	}
	else
	{
		CEnumerationPtr  ptrTrigger  = m_pCameraNodeMap->GetNode ("TriggerMode");
		ptrTrigger->SetIntValue(0);
		trigger = false ;
	}
}

void CPylonCamera::SetCamera(int index)
{
	m_pCameraNodeMap= &m_camera[index].GetNodeMap();

	CIntegerPtr ptrExp = m_pCameraNodeMap->GetNode ("ExposureTimeRaw");
	ptrExp->SetValue(m_iExp[index]);

	CIntegerPtr ptrGain = m_pCameraNodeMap->GetNode ("GainRaw");
	ptrGain->SetValue(m_iGain[index]);

	CIntegerPtr ptrWidth = m_pCameraNodeMap->GetNode ("Width");
	ptrWidth->SetValue(m_iWidth[index]);

	CIntegerPtr ptrHeight  = m_pCameraNodeMap->GetNode ("Height");
	ptrHeight->SetValue(m_iHeight[index]);
}

bool CPylonCamera::SetExposureTime(int index,int nValue)
{
	bool ret = false;
	try
	{
		m_pCameraNodeMap = &m_camera[index].GetNodeMap();
		CEnumerationPtr ptrExposureMode(m_pCameraNodeMap->GetNode("ExposureMode"));
		if(IsWritable(ptrExposureMode))
		{
			ptrExposureMode->FromString("Timed");
		}

		CIntegerPtr ptrExposureTimeRaw(m_pCameraNodeMap->GetNode("ExposureTimeRaw"));
		if(ptrExposureTimeRaw.IsValid())
		{
			int64_t newExposureTimeRaw = Adjust(nValue, ptrExposureTimeRaw->GetMin(), ptrExposureTimeRaw->GetMax(), ptrExposureTimeRaw->GetInc());
			ptrExposureTimeRaw->SetValue(newExposureTimeRaw);
			ret = true;
		}
	}
	catch(GenICam::GenericException &e)
	{
		CString str;
		str.Format(_T("SetExposureTimeRaw() error: %s"),e.GetDescription());
		TRACE(str);
	}
	return ret;
}

bool CPylonCamera::SetGain(int index,int nValue)
{
	bool ret = false;
	try
	{
		m_pCameraNodeMap = &m_camera[index].GetNodeMap();
		CEnumerationPtr ptrGainAuto(m_pCameraNodeMap->GetNode("GainAuto"));
		if(IsWritable(ptrGainAuto))
		{
			ptrGainAuto->FromString("Off");
		}

		CEnumerationPtr ptrGainSelector(m_pCameraNodeMap->GetNode("GainSelector"));
		if(IsWritable(ptrGainSelector))
		{
			ptrGainSelector->FromString("DigitalAll");
		}

		CIntegerPtr ptrGainRaw(m_pCameraNodeMap->GetNode("GainRaw"));
		if(ptrGainRaw.IsValid())
		{
			int64_t newGainRaw = Adjust(nValue, ptrGainRaw->GetMin(), ptrGainRaw->GetMax(), ptrGainRaw->GetInc());
			ptrGainRaw->SetValue(newGainRaw);
			ret = true;
		}
	}
	catch(GenICam::GenericException &e)
	{
		CString str;
		str.Format(_T("SetGainRaw() error: %s"),e.GetDescription());
		TRACE(str);
	}
	return ret;
}

bool CPylonCamera::SetFrame(int index,int nValue)
{
	// nValue  幀率, <=0表示無(wú)限制
	bool ret = false;
	try
	{
		m_pCameraNodeMap = &m_camera[index].GetNodeMap();
		CBooleanPtr ptrFrameRateEnable(m_pCameraNodeMap->GetNode("AcquisitionFrameRateEnable"));
		if(IsWritable(ptrFrameRateEnable))
		{
			if(nValue<=0) ptrFrameRateEnable->SetValue(false);
			else ptrFrameRateEnable->SetValue(true);
		}

		CIntegerPtr ptrFrameRateAbs(m_pCameraNodeMap->GetNode("AcquisitionFrameRateAbs"));
		if(ptrFrameRateAbs.IsValid())
		{
			int64_t newFrameRateAbs = Adjust(nValue, ptrFrameRateAbs->GetMin(), ptrFrameRateAbs->GetMax(), ptrFrameRateAbs->GetInc());
			ptrFrameRateAbs->SetValue(newFrameRateAbs);
			ret = true;
		}
	}
	catch(GenICam::GenericException &e)
	{
		CString str;
		str.Format(_T("SetFrame() error: %s"),e.GetDescription());
		TRACE(str);
	}
	return ret;
}

bool CPylonCamera::SetReverseX(int index,bool bEnable)
{
	bool ret = false;
	try
	{
		m_pCameraNodeMap = &m_camera[index].GetNodeMap();
		CBooleanPtr ptrFrameRateEnable(m_pCameraNodeMap->GetNode("ReverseX"));
		if(IsWritable(ptrFrameRateEnable))
		{
			ptrFrameRateEnable->SetValue(bEnable);
		}
	}
	catch(GenICam::GenericException &e)
	{
		CString str;
		str.Format(_T("SetReverseX() error: %s"),e.GetDescription());
		TRACE(str);
	}
	return ret;
}

void CPylonCamera::OnImageGrabbed(CInstantCamera& camera, const CGrabResultPtr& ptrGrabResult) 
{
	 if(ptrGrabResult->GrabSucceeded())
	 {
		 CString str;
		 for(int i=0;i<MAX_CAMERA;i++)
		 {
			 str = camera.GetDeviceInfo().GetSerialNumber();
			 if(str.Compare(m_strSerialNumber[i])==0)
			 {
				 m_ImageControl[i].SetImage(ptrGrabResult);
				 return;
			 }
		 }
	 }
}

int64_t CPylonCamera::Adjust(int64_t val, int64_t min,int64_t max,int64_t inc)
{
	if(inc <= 0)
	{
		throw LOGICAL_ERROR_EXCEPTION("Unexpected increment %d",inc);
	}
	if(min > max)
	{
		throw LOGICAL_ERROR_EXCEPTION("minimum bigger than maximum.");
	}
	if(val < min)
	{
		return min;
	}
	if(val > max)
	{
		return max;
	}
	if(inc == 1)
	{
		return val;
	}
	return min + ( ((val - min) / inc) * inc);
}

bool CPylonCamera::IsGrabbing(int index)
{
	return m_camera[index].IsGrabbing();
};

其他引用第三方庫(kù)以及對(duì)應(yīng)頭文件
鏈接:https://pan.quark.cn/s/71bb1b3e0dad
提取碼:JfM9文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-850997.html

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

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(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)文章

  • 【記錄】??迪鄼C(jī)(SDK)二次開(kāi)發(fā)時(shí)的錯(cuò)誤碼

    在進(jìn)行??祍dk二次開(kāi)發(fā)的時(shí)候,經(jīng)常碰到各種錯(cuò)誤,遂結(jié)合官方文檔和廣大網(wǎng)友的一些經(jīng)驗(yàn),把這些錯(cuò)誤碼記錄一下,方便查找。筆者使用的SDK版本是HCNetSDKV6.1.9.4。 錯(cuò)誤類(lèi)型 錯(cuò)誤碼 錯(cuò)誤信息 NET_DVR_NOERROR 0 沒(méi)有錯(cuò)誤。 NET_DVR_PASSWORD_ERROR 1 用戶(hù)名密碼錯(cuò)誤。注冊(cè)時(shí)輸入的用戶(hù)名

    2024年04月08日
    瀏覽(24)
  • 基于??低暤腟DK實(shí)現(xiàn)二次開(kāi)發(fā)

    基于??低暤腟DK實(shí)現(xiàn)二次開(kāi)發(fā)

    因?yàn)榫W(wǎng)上關(guān)于海康威視SDK這塊的開(kāi)發(fā)資源比較少,自己也是一步一步摸索過(guò)來(lái),知道那種痛苦, 所以把自己的一些過(guò)來(lái)人的經(jīng)驗(yàn)寫(xiě)出來(lái)供大家學(xué)習(xí)參考 進(jìn)入海康威視官網(wǎng) 下載你所需要的SDK開(kāi)發(fā)包(這里我就用windows來(lái)作為案列) 下載完SDK解壓 里面有開(kāi)發(fā)文檔和SDK的動(dòng)態(tài)庫(kù)文

    2024年04月10日
    瀏覽(17)
  • 大恒水星相機(jī)SDK(實(shí)時(shí)采集)基于QT與C++

    大恒水星相機(jī)SDK(實(shí)時(shí)采集)基于QT與C++

    資料文檔下載 本次的開(kāi)發(fā)環(huán)境是基于vs2019使用QT的框架對(duì)大恒相機(jī)的SDK進(jìn)行實(shí)時(shí)采集的操作。我們從零開(kāi)始講,根據(jù)上面的 資料文檔 我們來(lái)添加一個(gè)新的項(xiàng)目,并且將C++的庫(kù)文件添加進(jìn)去。 首先,我們新建的時(shí)候使用QT的模板。 記住我們新建的路徑,下面添加庫(kù)文件的時(shí)候

    2024年02月04日
    瀏覽(167)
  • 基于康耐視cognexVisionpro用C#二次開(kāi)發(fā)的多相機(jī)視覺(jué)對(duì)位框架

    基于康耐視cognexVisionpro用C#二次開(kāi)發(fā)的多相機(jī)視覺(jué)對(duì)位框架

    基于康耐視cognexVisionpro用C#二次開(kāi)發(fā)的多相機(jī)視覺(jué)對(duì)位框架 支持1:多相機(jī)對(duì)位邏輯運(yùn)算,旋轉(zhuǎn)標(biāo)定坐標(biāo)關(guān)聯(lián)運(yùn)算(可供參考學(xué)習(xí))可以協(xié)助理解做對(duì)位貼合項(xiàng)目思路。 支持2:直接連接運(yùn)動(dòng)控制卡,控制UVW平臺(tái)運(yùn)動(dòng)(可供參考學(xué)習(xí)) 支持3:自動(dòng)標(biāo)定程序設(shè)定(可供參考學(xué)習(xí)

    2024年04月15日
    瀏覽(19)
  • 基于C++開(kāi)發(fā)的醫(yī)院醫(yī)學(xué)影像PACS 可二次開(kāi)發(fā),三維重建

    基于C++開(kāi)發(fā)的醫(yī)院醫(yī)學(xué)影像PACS 可二次開(kāi)發(fā),三維重建

    醫(yī)學(xué)影像PACS系統(tǒng)源碼,集成三維影像后處理功能,包括三維多平面重建、三維容積重建、三維表面重建、三維虛擬內(nèi)窺鏡、最大/小密度投影、心臟動(dòng)脈鈣化分析等功能。系統(tǒng)功能強(qiáng)大,代碼完整。有演示。 本套PACS系統(tǒng)專(zhuān)門(mén)針對(duì)醫(yī)院工作流程設(shè)計(jì)的,完全符合醫(yī)院需要,配置

    2023年04月23日
    瀏覽(24)
  • 【VisionMaster SDK開(kāi)發(fā)】第三講 C#二次開(kāi)發(fā)介紹及應(yīng)用案例

    【VisionMaster SDK開(kāi)發(fā)】第三講 C#二次開(kāi)發(fā)介紹及應(yīng)用案例

    VisionMaster(后簡(jiǎn)稱(chēng)VM)作為一款功能強(qiáng)大的工業(yè)圖像算法平臺(tái),可對(duì)工業(yè)中遇到的各種圖像進(jìn)行處理,同時(shí)擁有性能強(qiáng)大的算子以及豐富的教學(xué)例程,作為圖像處理的通用平臺(tái)是非常不錯(cuò)的選擇。但Vision Master軟件依舊有不足,就是難以配置復(fù)雜或定制化的圖形界面,故需要結(jié)

    2024年02月05日
    瀏覽(31)
  • WPS二次開(kāi)發(fā)系列:WPS SDK初始化

    本文將詳細(xì)介紹WPS SDK初始化,幫您能夠更好的在項(xiàng)目中接入WPS SDK實(shí)現(xiàn)自己的應(yīng)用和WPS應(yīng)用進(jìn)行通信交互。 向WPS官方發(fā)送郵件申請(qǐng),郵件格式如下 郵件模板: 發(fā)起人 :有需要申請(qǐng)接入WPS移動(dòng)端的企業(yè)或者個(gè)人 郵件主題: XXX公司XXX項(xiàng)目---WPS Android端 SDK二次開(kāi)發(fā)集成申請(qǐng) 郵件

    2024年04月16日
    瀏覽(25)
  • Baumer工業(yè)相機(jī)堡盟相機(jī)如何使用NEOAPI SDK實(shí)現(xiàn)相機(jī)的連接(C++)

    Baumer工業(yè)相機(jī)堡盟相機(jī)如何使用NEOAPI SDK實(shí)現(xiàn)相機(jī)的連接(C++)

    ? Baumer工業(yè)相機(jī)堡盟相機(jī)是一種高性能、高質(zhì)量的工業(yè)相機(jī),可用于各種應(yīng)用場(chǎng)景,如物體檢測(cè)、計(jì)數(shù)和識(shí)別、運(yùn)動(dòng)分析和圖像處理。 Baumer的萬(wàn)兆網(wǎng)相機(jī)擁有出色的圖像處理性能,可以實(shí)時(shí)傳輸高分辨率圖像。此外,該相機(jī)還具有快速數(shù)據(jù)傳輸、低功耗、易于集成以及高度

    2024年02月03日
    瀏覽(25)
  • 圖漾相機(jī)-SDK開(kāi)發(fā)流程

    圖漾相機(jī)-SDK開(kāi)發(fā)流程

    請(qǐng)參照我們的在線文檔:http://doc.percipio.xyz/cam/last/apiguides/api_description.html 因?yàn)樗蠸DK都是基于C++代碼,所以以C++為例: 下載鏈接:https://www.percipio.xyz/downloadcenter/ 目前圖漾SDK支持:Android、ROS、C#、Python、Windows、Halcon、Linux(ubuntu以及嵌入式開(kāi)發(fā)) 深度圖 輸出的深度圖是一個(gè)1

    2024年02月07日
    瀏覽(60)
  • ??迪鄼C(jī)開(kāi)發(fā):SDK安裝和ARM開(kāi)發(fā)

    在海康相機(jī)開(kāi)發(fā)過(guò)程中,首先需要進(jìn)行SDK的安裝和ARM平臺(tái)的開(kāi)發(fā)。本文將詳細(xì)介紹如何安裝??迪鄼C(jī)SDK并進(jìn)行ARM開(kāi)發(fā),包括安裝步驟和相關(guān)源代碼。 一、SDK安裝步驟: 下載SDK:訪問(wèn)??倒俜骄W(wǎng)站,找到相機(jī)SDK的下載頁(yè)面,根據(jù)所需的平臺(tái)選擇合適的SDK版本進(jìn)行下載。 安裝

    2024年02月03日
    瀏覽(132)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包