chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux開(kāi)發(fā)_BMP圖片編程(翻轉(zhuǎn)、添加水印)

DS小龍哥-嵌入式技術(shù) ? 2022-09-17 15:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【摘要】 接收BMP圖片編程,完成BMP圖片翻轉(zhuǎn)、水印添加等知識(shí)點(diǎn)。

一、攝像頭練習(xí)

1.?改進(jìn)拍照程序,至少BMP圖片數(shù)據(jù)要正常,還可以將.c文件分隔成3個(gè).c文件。

24位的真彩色BMP圖片的構(gòu)造:分為3個(gè)部分。

(1)?存放BMP頭數(shù)據(jù)—主要存放BMP屬性,RGB數(shù)據(jù)偏移量

(2)?存放BMP信息數(shù)據(jù)—存放寬度、高度、顏色位數(shù)

(3)?存放BMP圖片源數(shù)據(jù)—RGB888

注意:

(1)?BMP圖片一行(寬度)的數(shù)據(jù)必須是4的倍數(shù)。

(2)?BMP圖片的源數(shù)據(jù)是從下到上,從左到右

BMP、JPG、PNG、MP4、MP3

2.?課后擴(kuò)展知識(shí): 拍照?qǐng)D片上加水印。比如:時(shí)間水印、或者自己的名字

(1)?第一種圖片水印: 圖片重疊。

(2)?在控制臺(tái)終端屏幕上使用*號(hào)打印自己名字。

要求:

(1)?添加文字水印和數(shù)字水印。比如: 添加自己的名字和日期

(2)?實(shí)現(xiàn)任意位置添加任意的水印。

(3)?實(shí)現(xiàn)縮放功能,將圖片可以任意放大和縮小。

3.?精簡(jiǎn)遠(yuǎn)程攝像頭監(jiān)控的代碼文件。

將網(wǎng)頁(yè)監(jiān)控相關(guān)的代碼文件單獨(dú)提取出來(lái)進(jìn)行編譯,實(shí)現(xiàn)遠(yuǎn)程監(jiān)控的效果。

使用gcc單獨(dú)編譯實(shí)現(xiàn)。(uvc)

分析: 程序是依靠Makefile文件已經(jīng)編譯。首先從Makefile文件入手。

主要修改的文件:mjpg_streamer.c

1.?改進(jìn)拍照程序,至少BMP圖片數(shù)據(jù)要正常,還可以將.c文件分隔成3個(gè).c文件。

24位的真彩色BMP圖片的構(gòu)造:分為3個(gè)部分。

(1)?存放BMP頭數(shù)據(jù)—主要存放BMP屬性,RGB數(shù)據(jù)偏移量

(2)?存放BMP信息數(shù)據(jù)—存放寬度、高度、顏色位數(shù)

(3)?存放BMP圖片源數(shù)據(jù)—RGB888

注意:

(1)?BMP圖片一行(寬度)的數(shù)據(jù)必須是4的倍數(shù)。

(2)?BMP圖片的源數(shù)據(jù)是從下到上,從左到右

BMP、JPG、PNG、MP4、MP3

2.?課后擴(kuò)展知識(shí): 拍照?qǐng)D片上加水印。比如:時(shí)間水印、或者自己的名字

(1)?第一種圖片水印: 圖片重疊。

(2)?在控制臺(tái)終端屏幕上使用*號(hào)打印自己名字。

pYYBAGMlP4mAUtE9AACFGMXStLI331.png

要求:

(1)?添加文字水印和數(shù)字水印。比如: 添加自己的名字和日期

(2)?實(shí)現(xiàn)任意位置添加任意的水印。

(3)?實(shí)現(xiàn)縮放功能,將圖片可以任意放大和縮小。

3.?精簡(jiǎn)遠(yuǎn)程攝像頭監(jiān)控的代碼文件。

將網(wǎng)頁(yè)監(jiān)控相關(guān)的代碼文件單獨(dú)提取出來(lái)進(jìn)行編譯,實(shí)現(xiàn)遠(yuǎn)程監(jiān)控的效果。

使用gcc單獨(dú)編譯實(shí)現(xiàn)。(uvc)

分析: 程序是依靠Makefile文件已經(jīng)編譯。首先從Makefile文件入手。

任務(wù)2:漢字庫(kù)的制作與使用

poYBAGMlP4mABBmSAAB9DhpyxMg380.png

需要解決的問(wèn)題:

1.?如何從漢字庫(kù)里提取自己想要的點(diǎn)陣數(shù)據(jù) 。比如: 萬(wàn)邦易嵌

漢字庫(kù)編碼還是GBK編碼: 有特定的公式可以計(jì)算點(diǎn)陣碼的位置。

2.?如何區(qū)分中文還有英文

數(shù)據(jù)大于0x80就是中文,其他就是英文數(shù)據(jù)。 變量必須是: 無(wú)符號(hào)類(lèi)型

注意: 寫(xiě)代碼需要在中文編碼的情況下編寫(xiě)!

3.?英文數(shù)據(jù)該如何取模?

從空格開(kāi)始到~號(hào)結(jié)束 ,連續(xù)95個(gè)數(shù)據(jù)。

2.1 BMP圖片縮放

#include 
#include 

int PicZoom(unsigned char *s_buff,unsigned int s_width,unsigned int s_height,unsigned char *buff,unsigned int width,unsigned int height);
void *my_memcpy(void *v_dst,const void *v_src,unsigned char c);

#pragma pack(1)   /* 必須在結(jié)構(gòu)體定義之前使用,這是為了讓結(jié)構(gòu)體中各成員按1字節(jié)對(duì)齊 */
/*需要文件信息頭:14個(gè)字節(jié) */
struct BITMAPFILEHEADER
{
	unsigned short bfType;      //保存圖片類(lèi)似。 'BM'
	unsigned long  bfSize;      //圖片的大小
	unsigned short bfReserved1;
	unsigned short bfReserved2;
	unsigned long  bfOffBits;  //RGB數(shù)據(jù)偏移地址
};

/* 位圖信息頭 */
struct BITMAPINFOHEADER { /* bmih */
	unsigned long  biSize;      //結(jié)構(gòu)體大小
	unsigned long  biWidth;		//寬度
	unsigned long  biHeight;	//高度
	unsigned short biPlanes;
	unsigned short biBitCount;	//顏色位數(shù)
	unsigned long  biCompression;
	unsigned long  biSizeImage;
	unsigned long  biXPelsPerMeter;
	unsigned long  biYPelsPerMeter;
	unsigned long  biClrUsed;
	unsigned long  biClrImportant;
};

#define NEW_FILE_NAME "new.bmp" //縮放后的新圖片名稱(chēng)
#define SRC_FILE_NAME "src.bmp" //源圖片名稱(chēng)
/*
圖片放大與縮小示例
*/
int main()
{
	struct BITMAPFILEHEADER src_head;  //源文件頭數(shù)據(jù)
	struct BITMAPINFOHEADER src_info;  //源文件參數(shù)結(jié)構(gòu)
	struct BITMAPFILEHEADER new_head;  //新文件頭數(shù)據(jù)
	struct BITMAPINFOHEADER new_info;  //新文件參數(shù)結(jié)構(gòu)
	unsigned int new_Width;			   //縮放后的寬度
	unsigned int new_Height;		   //縮放后的高度
	unsigned char *new_buff;           //存放新圖片的數(shù)據(jù)
	unsigned char *src_buff;           //存放源圖片的數(shù)據(jù)
	unsigned int cnt=0;

	/*1. 打開(kāi)圖片文件*/
	FILE *src_file=fopen(SRC_FILE_NAME,"rb");
	FILE *new_file=fopen(NEW_FILE_NAME,"wb");
	if(src_file==NULL||new_file==NULL)
	{
		printf("%s 源文件打開(kāi)失敗!\r\n",SRC_FILE_NAME);
		return;
	}
	
	/*2. 讀取源圖片參數(shù)*/
	fread(&src_head,sizeof(struct BITMAPFILEHEADER),1,src_file);
	fread(&src_info,sizeof(struct BITMAPINFOHEADER),1,src_file);
	printf("源圖片尺寸:w=%d h=%d\r\n",src_info.biWidth,src_info.biHeight);

	/*3. 獲取新圖片的尺寸*/
	printf("輸入新圖片的寬度: ");
	scanf("%d",&new_Width);
	printf("輸入新圖片的高度: ");
	scanf("%d",&new_Height);
	printf("新圖片尺寸:w=%d h=%d\r\n",new_Width,new_Height);

	/*4. 申請(qǐng)存放圖片數(shù)據(jù)的空間*/
	src_buff=malloc(src_info.biWidth*src_info.biHeight*3);
	new_buff=malloc(new_Width*new_Height*3);
	if(new_buff==NULL||src_buff==NULL)
	{
		printf("malloc申請(qǐng)空間失敗!\r\n");
		return -1;
	}

	/*5. 讀取源圖片RGB數(shù)據(jù)*/
	fseek(src_file,src_head.bfOffBits,SEEK_SET); //移動(dòng)文件指針到RGB數(shù)據(jù)位置
	fread(src_buff,1,src_info.biWidth*src_info.biHeight*3,src_file); //讀取源數(shù)據(jù)

	/*6. 縮放圖片*/
	if(PicZoom(src_buff,src_info.biWidth,src_info.biHeight,new_buff,new_Width,new_Height))
	{
		printf("圖片縮放處理失敗!\r\n");
		return -1;
	}

	/*7. 寫(xiě)入新圖片數(shù)據(jù)*/
	//填充文件頭
	memset(&new_head,0,sizeof(struct BITMAPFILEHEADER));
	new_head.bfType=0x4d42;
	new_head.bfSize=54+new_Width*new_Height*3;
	new_head.bfOffBits=54;
	//填充文件參數(shù)
	memset(&new_info,0,sizeof(struct BITMAPINFOHEADER));
	new_info.biSize=sizeof(struct BITMAPINFOHEADER);
	new_info.biWidth=new_Width;
	new_info.biHeight=new_Height;
	new_info.biPlanes=1;
	new_info.biBitCount=24;
	//寫(xiě)入文件數(shù)據(jù)
	fwrite(&new_head,sizeof(struct BITMAPFILEHEADER),1,new_file);
	fwrite(&new_info,sizeof(struct BITMAPINFOHEADER),1,new_file);
	fseek(new_file,new_head.bfOffBits,SEEK_SET); //移動(dòng)文件指針到RGB數(shù)據(jù)位置
	cnt=fwrite(new_buff,1,new_info.biWidth*new_info.biHeight*3,new_file); //寫(xiě)數(shù)據(jù)

	/*8. 關(guān)閉圖片文件*/
	fclose(new_file);
	fclose(src_file);

	printf("%s 新圖片創(chuàng)建成功! 路徑:程序運(yùn)行路徑下\r\n",NEW_FILE_NAME);
	return 0;
}
/**********************************************************************
* 函數(shù)名稱(chēng): PicZoom
* 功能描述: 近鄰取樣插值方法縮放圖片
*            注意該函數(shù)會(huì)分配內(nèi)存來(lái)存放縮放后的圖片,用完后要用free函數(shù)釋放掉
*            "近鄰取樣插值"的原理請(qǐng)參考網(wǎng)友"lantianyu520"所著的"圖像縮放算法"
* 輸入?yún)?shù):  ptOriginPic - 內(nèi)含原始圖片的象素?cái)?shù)據(jù)
*             ptZoomPic    - 內(nèi)含縮放后的圖片的象素?cái)?shù)據(jù)
* 輸出參數(shù): 無(wú)
* 返 回 值: 0 - 成功, 其他值 - 失敗
***********************************************************************/
int PicZoom(unsigned char *ptOriginPic_aucPixelDatas,unsigned int ptOriginPic_iWidth,unsigned int ptOriginPic_iHeight,unsigned char *ptZoomPic_aucPixelDatas,unsigned int ptZoomPic_iWidth,unsigned int ptZoomPic_iHeight)
{
	unsigned int ptOriginPic_iLineBytes=ptOriginPic_iWidth*3; //一行的字節(jié)數(shù)
	unsigned int ptZoomPic_iLineBytes=ptZoomPic_iWidth*3;  //一行的字節(jié)數(shù)

	unsigned long dwDstWidth=ptZoomPic_iWidth;
	unsigned long* pdwSrcXTable;
	unsigned long x;
	unsigned long y;
	unsigned long dwSrcY;
	unsigned char *pucDest;
	unsigned char *pucSrc;
	unsigned long dwPixelBytes=3; //像素字節(jié)
	pdwSrcXTable=malloc(sizeof(unsigned long) * dwDstWidth);
	if(NULL==pdwSrcXTable)
	{
		return -1;
	}

	for(x=0; x < dwDstWidth; x++)//生成表 pdwSrcXTable
	{
		pdwSrcXTable[x]=(x*ptOriginPic_iWidth/ptZoomPic_iWidth);
	}

	for(y=0; y < ptZoomPic_iHeight; y++)
	{
		dwSrcY=(y * ptOriginPic_iHeight/ptZoomPic_iHeight);

		pucDest=ptZoomPic_aucPixelDatas + y * ptZoomPic_iLineBytes;
		pucSrc=ptOriginPic_aucPixelDatas+dwSrcY * ptOriginPic_iLineBytes;

		for(x=0; x ;>

2.2 BMP圖片添加水印

#include "savebmp.h"
#include "yuvtorgb.h"

/* 圖片的象素?cái)?shù)據(jù) */
typedef struct PixelDatas {
	int iWidth;      /* 寬度: 一行有多少個(gè)象素 */
	int iHeight;     /* 高度: 一列有多少個(gè)象素 */
	int iBpp;        /* 一個(gè)象素用多少位來(lái)表示 */
	int iLineBytes;  /* 一行數(shù)據(jù)有多少字節(jié) */
	int iTotalBytes; /* 所有字節(jié)數(shù) */ 
	unsigned char *VideoBuf; //存放一幀攝像頭的數(shù)據(jù)
	//指向了存放攝像頭數(shù)據(jù)的空間地址
}T_PixelDatas;

T_PixelDatas Pixedata; //存放實(shí)際的圖像數(shù)據(jù)

/*
		USB攝像頭相關(guān)參數(shù)定義
*/
struct v4l2_buffer tV4l2Buf;
int iFd;
int ListNum;
unsigned char* pucVideBuf[4];  // 視頻BUFF空間地址
void camera_pthread(void);

int main(int argc ,char *argv[])
{
	if(argc!=2)
	{
		printf("./app /dev/videoX\n");
		return -1;
	}
	
	camera_init(argv[1]);  //攝像頭設(shè)備初始化

	//開(kāi)始采集攝像頭數(shù)據(jù),并編碼保存為BMP圖片
	camera_pthread();
	return 0;
}
//攝像頭設(shè)備的初始化
int camera_init(char *video)
{
	int i=0;
	int cnt=0;
	//定義攝像頭驅(qū)動(dòng)的BUF的功能捕獲視頻
	int iType = V4L2_BUF_TYPE_VIDEO_CAPTURE;
	
	/* 1、打開(kāi)視頻設(shè)備 */
	iFd = open(video,O_RDWR);
	if(iFd < 0)
	{
		printf("攝像頭設(shè)備打開(kāi)失敗!\n");
		return 0;
	}
	
	struct v4l2_format  tV4l2Fmt;
	
	/* 2、 VIDIOC_S_FMT 設(shè)置攝像頭使用哪種格式 */
	memset(&tV4l2Fmt, 0, sizeof(struct v4l2_format));
	tV4l2Fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; //視頻捕獲

	//設(shè)置攝像頭輸出的圖像格式
    tV4l2Fmt.fmt.pix.pixelformat=V4L2_PIX_FMT_YUYV;

	/*設(shè)置輸出的尺寸*/
	tV4l2Fmt.fmt.pix.width       = 640;
	tV4l2Fmt.fmt.pix.height      = 480;
	tV4l2Fmt.fmt.pix.field       = V4L2_FIELD_ANY;
	
    //VIDIOC_S_FMT 設(shè)置攝像頭的輸出參數(shù)
    ioctl(iFd, VIDIOC_S_FMT, &tV4l2Fmt); 

	//打印攝像頭實(shí)際的輸出參數(shù)
	printf("Support Format:%d\n",tV4l2Fmt.fmt.pix.pixelformat);
	printf("Support width:%d\n",tV4l2Fmt.fmt.pix.width);
	printf("Support height:%d\n",tV4l2Fmt.fmt.pix.height);

	/* 3、VIDIOC_REQBUFS  申請(qǐng)buffer */
	/* 初始化Pixedata結(jié)構(gòu)體,為轉(zhuǎn)化做準(zhǔn)備 */
	Pixedata.iBpp =24;								
	//高度 和寬度的賦值
	Pixedata.iHeight = tV4l2Fmt.fmt.pix.height;
	Pixedata.iWidth = tV4l2Fmt.fmt.pix.width;

	//一行所需要的字節(jié)數(shù)
	Pixedata.iLineBytes = Pixedata.iWidth*Pixedata.iBpp/8;
	//一幀圖像的字節(jié)數(shù)
	Pixedata.iTotalBytes = Pixedata.iLineBytes * Pixedata.iHeight;
	
	Pixedata.VideoBuf=malloc(Pixedata.iTotalBytes); //申請(qǐng)存放圖片數(shù)據(jù)空間

	//v412請(qǐng)求命令
	struct v4l2_requestbuffers tV4l2ReqBuffs;
	
	memset(&tV4l2ReqBuffs, 0, sizeof(struct v4l2_requestbuffers));

	/* 分配4個(gè)buffer:實(shí)際上由VIDIOC_REQBUFS獲取到的信息來(lái)決定 */
	tV4l2ReqBuffs.count   = 4; /*在內(nèi)核空間里開(kāi)辟4個(gè)空間*/
	
	/*支持視頻捕獲功能*/
	tV4l2ReqBuffs.type    = V4L2_BUF_TYPE_VIDEO_CAPTURE;
	
	/* 表示申請(qǐng)的緩沖是支持MMAP(內(nèi)存映射) */
	tV4l2ReqBuffs.memory  = V4L2_MEMORY_MMAP;
	
	/* 為分配buffer做準(zhǔn)備 */
	ioctl(iFd, VIDIOC_REQBUFS, &tV4l2ReqBuffs);
	
	for (i = 0; i < tV4l2ReqBuffs.count; i++) 
	{
		memset(&tV4l2Buf, 0, sizeof(struct v4l2_buffer));
		tV4l2Buf.index = i; // 0  1 2 3
		tV4l2Buf.type   = V4L2_BUF_TYPE_VIDEO_CAPTURE;  /*支持視頻捕獲*/
		tV4l2Buf.memory = V4L2_MEMORY_MMAP;  /*支持內(nèi)存映射*/

		/* 6、VIDIOC_QUERYBUF 確定每一個(gè)buffer的信息 并且 mmap */
		ioctl(iFd, VIDIOC_QUERYBUF, &tV4l2Buf);
		//映射空間地址
		pucVideBuf[i] = mmap(   	  /*返回用戶(hù)空間的地址*/
		          0,   				  /*表示系統(tǒng)自己制定地址*/
				  tV4l2Buf.length,   /*映射的長(zhǎng)度*/
				  PROT_READ,          /*空間數(shù)據(jù)只讀*/
				  MAP_SHARED,         /*空間支持共享*/
				  iFd,                /*將要映射的文件描述符*/
				  tV4l2Buf.m.offset  /*從哪個(gè)位置開(kāi)始映射,表示起始位置*/
				  );
		printf("mmap %d addr:%p\n",i,pucVideBuf[i]);
	}

	/* 4、VIDIOC_QBUF  放入隊(duì)列*/
    for (i = 0; i 在LCD上顯示:rgb888 */
	initLut();
	printf("開(kāi)始采集數(shù)據(jù).......\n");
//	while(1)
//	{
		FD_ZERO(&readfds);
		FD_SET(iFd,&readfds);
		select(iFd+1,&readfds,NULL,NULL,NULL);  /*檢測(cè)文件描述符是否發(fā)生了讀寫(xiě)事件*/
	  
		memset(&tV4l2Buf, 0, sizeof(struct v4l2_buffer));
		tV4l2Buf.type    = V4L2_BUF_TYPE_VIDEO_CAPTURE; //類(lèi)型
		tV4l2Buf.memory  = V4L2_MEMORY_MMAP; //存儲(chǔ)空間類(lèi)型

		/* 9、VIDIOC_DQBUF    從隊(duì)列中取出 */
		error = ioctl(iFd, VIDIOC_DQBUF, &tV4l2Buf); //取出一幀數(shù)據(jù)
		ListNum = tV4l2Buf.index; //索引編號(hào)   0
		
		//將YUV轉(zhuǎn)換為RGB
		Pyuv422torgb32(pucVideBuf[ListNum],Pixedata.iWidth,Pixedata.iHeight,Pixedata.VideoBuf);
		
		//保存BMP
		save_bmp(Pixedata.VideoBuf,Pixedata.iWidth,Pixedata.iHeight); 
		
		memset(&tV4l2Buf, 0, sizeof(struct v4l2_buffer));
		tV4l2Buf.index  = ListNum;
		tV4l2Buf.type   = V4L2_BUF_TYPE_VIDEO_CAPTURE;
		tV4l2Buf.memory = V4L2_MEMORY_MMAP;
		error = ioctl(iFd, VIDIOC_QBUF, &tV4l2Buf);  /*將緩沖區(qū)再次放入隊(duì)列*/
//	}
};>
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 攝像頭
    +關(guān)注

    關(guān)注

    61

    文章

    5055

    瀏覽量

    102370
  • BMP
    BMP
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    17690
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【免費(fèi)送書(shū)】成為硬核Linux開(kāi)發(fā)者:《Linux 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)(第 2 版)》

    Linux系統(tǒng)的設(shè)備驅(qū)動(dòng)開(kāi)發(fā),一直給人門(mén)檻較高的印象,主要因內(nèi)核機(jī)制抽象、需深度理解硬件原理、開(kāi)發(fā)調(diào)試難度大所致。2021年,一本講解驅(qū)動(dòng)開(kāi)發(fā)的專(zhuān)著問(wèn)世即獲市場(chǎng)青睞,暢銷(xiāo)近萬(wàn)冊(cè)——這便
    的頭像 發(fā)表于 11-18 08:06 ?392次閱讀
    【免費(fèi)送書(shū)】成為硬核<b class='flag-5'>Linux</b><b class='flag-5'>開(kāi)發(fā)</b>者:《<b class='flag-5'>Linux</b> 設(shè)備驅(qū)動(dòng)<b class='flag-5'>開(kāi)發(fā)</b>(第 2 版)》

    Linux 編程語(yǔ)言盤(pán)點(diǎn):從內(nèi)核到AI的全棧選擇

    在工控圈和嵌入式圈里,有一個(gè)常年被討論的問(wèn)題: ?“在 Linux 上,到底該用什么語(yǔ)言編程?” 有人堅(jiān)信:C 才是真正的工業(yè)語(yǔ)言。有人反駁:Python 才是效率王者。還有人推崇 Go、Rust
    的頭像 發(fā)表于 11-06 17:05 ?418次閱讀

    基于開(kāi)源鴻蒙的圖片編輯開(kāi)發(fā)樣例(2)

    本期內(nèi)容介紹基于開(kāi)源鴻蒙在RK3568上開(kāi)發(fā)圖片編輯樣例的全流程,分為上篇和下篇,本篇為下篇,主要介紹標(biāo)記、保存圖片功能。
    的頭像 發(fā)表于 10-31 09:19 ?2756次閱讀
    基于開(kāi)源鴻蒙的<b class='flag-5'>圖片</b>編輯<b class='flag-5'>開(kāi)發(fā)</b>樣例(2)

    基于開(kāi)源鴻蒙的圖片編輯開(kāi)發(fā)樣例(1)

    本期內(nèi)容介紹基于開(kāi)源鴻蒙在RK3568上開(kāi)發(fā)圖片編輯樣例的全流程,分為上篇和下篇,本篇為上篇,主要介紹添加相冊(cè)圖片、編譯圖片功能。
    的頭像 發(fā)表于 10-31 09:16 ?2734次閱讀
    基于開(kāi)源鴻蒙的<b class='flag-5'>圖片</b>編輯<b class='flag-5'>開(kāi)發(fā)</b>樣例(1)

    創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—Linux-RT應(yīng)用開(kāi)發(fā)案例

    Linux-RT 性能;還提供 rt_gpio_ctrl(實(shí)時(shí)線程控制 LED 翻轉(zhuǎn))、rt_input(實(shí)時(shí)線程監(jiān)聽(tīng)按鍵觸發(fā) LED)兩個(gè)開(kāi)發(fā)案例,含測(cè)試、編譯步驟與關(guān)鍵代碼,為評(píng)估板 L
    的頭像 發(fā)表于 09-25 17:25 ?524次閱讀
    創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)<b class='flag-5'>開(kāi)發(fā)</b>板—<b class='flag-5'>Linux</b>-RT應(yīng)用<b class='flag-5'>開(kāi)發(fā)</b>案例

    RK3506開(kāi)發(fā)Linux開(kāi)發(fā)板極致性?xún)r(jià)比之選

    RK3506開(kāi)發(fā)Linux開(kāi)發(fā)板極致性?xún)r(jià)比之選瑞芯微RK3506開(kāi)發(fā)板,3核Cortex-A7@1.5GHz+Cortex-M0,Linux
    的頭像 發(fā)表于 09-11 16:26 ?2717次閱讀
    RK3506<b class='flag-5'>開(kāi)發(fā)</b>板<b class='flag-5'>Linux</b><b class='flag-5'>開(kāi)發(fā)</b>板極致性?xún)r(jià)比之選

    Linux 應(yīng)用開(kāi)發(fā)手冊(cè)

    T507linux應(yīng)用開(kāi)發(fā)手冊(cè)
    發(fā)表于 08-22 17:01 ?10次下載

    鴻蒙5開(kāi)發(fā)寶藏案例分享---一多開(kāi)發(fā)實(shí)例(圖片美化)

    ?【鴻蒙開(kāi)發(fā)寶藏案例分享】一次搞定多端適配的圖片美化應(yīng)用開(kāi)發(fā)思路!? Hey小伙伴們~ 今天在翻鴻蒙文檔時(shí)挖到一個(gè)超實(shí)用的大寶藏!原來(lái)官方早就悄悄提供了超多\"一多開(kāi)發(fā)\"的實(shí)戰(zhàn)
    發(fā)表于 06-03 16:09

    如何通過(guò)SFL為設(shè)備添加Flash編程支持

    SEGGER Flash Loader(SFL)是J-Link設(shè)備支持套件(DSK)的一部分,通過(guò)SFL,用戶(hù)可以為自己的新設(shè)備添加Flash編程支持。
    的頭像 發(fā)表于 05-19 16:35 ?1064次閱讀
    如何通過(guò)SFL為設(shè)備<b class='flag-5'>添加</b>Flash<b class='flag-5'>編程</b>支持

    [迅為]Linux開(kāi)發(fā)小技巧:Remote - SSH插件

    [迅為]Linux開(kāi)發(fā)小技巧:Remote - SSH插件
    的頭像 發(fā)表于 04-01 15:46 ?920次閱讀
    [迅為]<b class='flag-5'>Linux</b><b class='flag-5'>開(kāi)發(fā)</b>小技巧:Remote - SSH插件

    DLP6500EVM每個(gè)微鏡是怎么運(yùn)轉(zhuǎn)的?

    On-The-Fly Mode 下load一個(gè)bmp圖片加載到DMD時(shí),比如一個(gè)8bit的圖,每個(gè)像素0-255,這個(gè)數(shù)值加載到DMD,DMD每個(gè)微鏡是怎么運(yùn)轉(zhuǎn)的?比如第一個(gè)像素值200,指的是DMD對(duì)應(yīng)的第一個(gè)微鏡翻轉(zhuǎn)持續(xù)時(shí)
    發(fā)表于 02-28 06:46

    DLP4500能否上傳一組圖片,然后給正向觸發(fā),每次觸發(fā)就投影一張圖片?

    求教DLP 4500能否上傳一組912*1140分辨率的bmp圖片,然后給正向觸發(fā),每次觸發(fā)投影一張圖片? 如果可以,如何操作,user‘s guide貌似沒(méi)看到這種操作。附件為其中一張bm
    發(fā)表于 02-27 07:28

    DLPDLCR3310EVM使用firmware中的update flash image模塊,實(shí)際操作中只添加了splash image圖片但報(bào)錯(cuò),怎么解決?

    的update flash image模塊,實(shí)際操作中只是添加了splash image圖片,但是報(bào)錯(cuò)。請(qǐng)問(wèn)是什么原因?splash image 對(duì)用戶(hù)添加圖片的要求有哪些?詳細(xì)操作
    發(fā)表于 02-18 07:31

    Spire.Cloud.Word云端Word文檔處理SDK介紹

    添加書(shū)簽,添加文本和圖片水印,設(shè)置背景顏色和背景圖片,添加 Word 數(shù)字簽名,
    的頭像 發(fā)表于 02-11 11:11 ?759次閱讀
    Spire.Cloud.Word云端Word文檔處理SDK介紹

    《DNESP32S3使用指南-IDF版_V1.6》第四十章 圖片顯示實(shí)驗(yàn)

    第四十章圖片顯示實(shí)驗(yàn) 在開(kāi)發(fā)產(chǎn)品的時(shí)候,很多時(shí)候,我們都會(huì)用到圖片解碼,在本章中,我們將向大家介紹如何通過(guò)ESP32-S3來(lái)解碼BMP/JPG/JPEG/PNG/GIF等
    發(fā)表于 01-04 09:22