ILI9225 TFT顯示屏16位并口方式驅動

?所用屏及資料如后圖:

????????ILI9225,176*220,8位或16位并口屏,IM0接GND,電源及背光接3.3v

主控:CH32V307驅動(庫文件和STM32基本一樣)

c281035882904959834e30a8f7bcf272.jpg

c21901d90e184cd7872f39d1657b7eb1.jpeg

2acba43771e6452a97e0b1758515f9e9.jpeg

一、源碼

ILI9225.c

#include "ILI9225.h"
#include "ch32v30x_gpio.h"
//---漢字的字庫頭文件---//
#include"charcode.h"/* Global Variable */
unsigned char fch,fcl;  //前景色高位和低位
/*** CS --_____________________________--,低:有效* RD ---------------------------------,高:寫* WR  -__--__--__--__--__--__--__-----,低:寫* RS _________________________________,低:Index* RS ---------------------------------,高:Data**/
void LCD_Writ_Bus16(unsigned char VH,unsigned char VL)
{u16 val;val=((VH<<8)&0xFF00)+VL;LCD_WR_SET;LCD_RD_SET;GPIO_Write(LCD_PORT,val);LCD_WR_CLR;LCD_WR_SET;}void LCD_Write_COM(unsigned char VL)
{LCD_CS_CLR;LCD_RS_CLR;LCD_Writ_Bus16(0x00,VL);LCD_CS_SET;
}void LCD_Write_DATA(unsigned char VH,unsigned char VL)
{LCD_CS_CLR;LCD_RS_SET;LCD_Writ_Bus16(VH,VL);LCD_CS_SET;
}void LCD_Write_DATA16(unsigned short val)
{LCD_CS_CLR;LCD_RS_SET;LCD_RD_SET;LCD_WR_CLR;GPIO_Write(LCD_PORT,val);LCD_WR_CLR;LCD_WR_SET;LCD_CS_SET;}void LCD_Write_COM_DATA(unsigned char com1,unsigned short dat1)
{LCD_Write_COM(com1);LCD_Write_DATA16(dat1);
}/** @prief InitLCD*/
void InitLCD()
{LCD_Reset();Delay_Ms(150);printf("ili9225 Initial\r\n");Delay_Ms(50);LCD_CS_CLR;LCD_Write_COM_DATA(0x10, 0x0000);LCD_Write_COM_DATA(0x11, 0x0000);LCD_Write_COM_DATA(0x12, 0x0000);LCD_Write_COM_DATA(0x13, 0x0000);LCD_Write_COM_DATA(0x14, 0x0000);Delay_Ms(40);LCD_Write_COM_DATA(0x11, 0x0018);LCD_Write_COM_DATA(0x12, 0x6121);LCD_Write_COM_DATA(0x13, 0x006F);LCD_Write_COM_DATA(0x14, 0x495F);LCD_Write_COM_DATA(0x10, 0x0800);Delay_Ms(10);LCD_Write_COM_DATA(0x11, 0x103B);Delay_Ms(50);LCD_Write_COM_DATA(0x01, 0x011C);LCD_Write_COM_DATA(0x02, 0x0100);LCD_Write_COM_DATA(0x03, 0x1030);LCD_Write_COM_DATA(0x07, 0x0000);LCD_Write_COM_DATA(0x08, 0x0808);LCD_Write_COM_DATA(0x0b, 0x1100);LCD_Write_COM_DATA(0x0c, 0x0000);LCD_Write_COM_DATA(0x0f, 0x0D01);LCD_Write_COM_DATA(0x15, 0x0020);LCD_Write_COM_DATA(0x20, 0x0000);LCD_Write_COM_DATA(0x21, 0x0000);LCD_Write_COM_DATA(0x30, 0x0000);LCD_Write_COM_DATA(0x31, 0x00DB);LCD_Write_COM_DATA(0x32, 0x0000);LCD_Write_COM_DATA(0x33, 0x0000);LCD_Write_COM_DATA(0x34, 0x00DB);LCD_Write_COM_DATA(0x35, 0x0000);LCD_Write_COM_DATA(0x36, 0x00AF);LCD_Write_COM_DATA(0x37, 0x0000);LCD_Write_COM_DATA(0x38, 0x00DB);LCD_Write_COM_DATA(0x39, 0x0000);LCD_Write_COM_DATA(0x50, 0x0000);LCD_Write_COM_DATA(0x51, 0x0808);LCD_Write_COM_DATA(0x52, 0x080A);LCD_Write_COM_DATA(0x53, 0x000A);LCD_Write_COM_DATA(0x54, 0x0A08);LCD_Write_COM_DATA(0x55, 0x0808);LCD_Write_COM_DATA(0x56, 0x0000);LCD_Write_COM_DATA(0x57, 0x0A00);LCD_Write_COM_DATA(0x58, 0x0710);LCD_Write_COM_DATA(0x59, 0x0710);LCD_Write_COM_DATA(0x07, 0x0012);Delay_Ms(50);LCD_Write_COM_DATA(0x07, 0x1017);LCD_Write_COM(0x22);LCD_CS_SET;
}void LCD_Reset(void)
{LCD_RST_CLR;Delay_Ms(50);LCD_RST_SET;Delay_Ms(150);
}/** @prief clrScr 清屏*/
void clrScr(unsigned short color)
{int i;u8 ch,cl;ch=color>>8;cl=color&0xff;clrXY();for (i=0; i<((disp_x_size+1)*(disp_y_size+1)); i++){LCD_Write_DATA(ch,cl);}}void setXY(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2)
{LCD_Write_COM_DATA(0x36,x2);LCD_Write_COM_DATA(0x37,x1);LCD_Write_COM_DATA(0x38,y2);LCD_Write_COM_DATA(0x39,y1);LCD_Write_COM_DATA(0x20,x1);LCD_Write_COM_DATA(0x21,y1);LCD_Write_COM(0x22);
}void clrXY()
{setXY(0,0,disp_x_size,disp_y_size);
}
void setPixel(unsigned char color)
{LCD_Write_DATA((color>>8),(color&0xFF));    // rrrrrggggggbbbbb}void drawPixel(unsigned char  x, unsigned char  y)
{setXY(x, y, x, y);setPixel((fch<<8)|fcl);clrXY();
}void setColor(unsigned short color)
{fch=color>>8;fcl=color & 0xFF;
}void drawHLine(unsigned char x, unsigned char y, unsigned char l)
{setXY(x, y, x+l, y);for(int i=0; i<l+1; i++){LCD_Write_DATA(fch, fcl);}clrXY();
}void drawVLine(unsigned char x, unsigned char y, unsigned char l)
{setXY(x, y, x, y+l);for(int i=0; i<l+1; i++){LCD_Write_DATA(fch, fcl);}clrXY();
}void drawLine(unsigned char  x1, unsigned char  y1, unsigned char  x2, unsigned char  y2)
{if (y1==y2)drawHLine(x1, y1, x2-x1);else if (x1==x2)drawVLine(x1, y1, y2-y1);else{unsigned int    dx = (x2 > x1 ? x2 - x1 : x1 - x2);short           xstep =  x2 > x1 ? 1 : -1;unsigned int    dy = (y2 > y1 ? y2 - y1 : y1 - y2);short           ystep =  y2 > y1 ? 1 : -1;int             col = x1, row = y1;if (dx < dy){int t = - (dy >> 1);while (1){setXY (col, row, col, row);LCD_Write_DATA(fch, fcl);if (row == y2)return;row += ystep;t += dx;if (t >= 0){col += xstep;t   -= dy;}}}else{int t = - (dx >> 1);while (1){setXY (col, row, col, row);LCD_Write_DATA(fch, fcl);if (col == x2)return;col += xstep;t += dy;if (t >= 0){row += ystep;t   -= dx;}}}}clrXY();
}void drawRect(int x1, int y1, int x2, int y2)
{drawHLine(x1, y1, x2-x1);drawHLine(x1, y2, x2-x1);drawVLine(x1, y1, y2-y1);drawVLine(x2, y1, y2-y1);
}void drawRect1(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned short c)
{setColor(c);drawRect(x, y,x+w-1 , y+h-1);
}void fillRect(int x1, int y1, int x2, int y2)
{
/*for (int i=0; i<((x2-x1)/2)+1; i++){drawVLine(x1+i, y1, y2-y1);drawVLine(x2-i, y1, y2-y1);}*/setXY(x1, y1, x2, y2);for(int i=0; i<(x2-x1)*(y2-y1)-1; i++){LCD_Write_DATA(fch, fcl);}clrXY();
}
void drawRoundRect(int x1, int y1, int x2, int y2)
{if ((x2-x1)>4 && (y2-y1)>4){drawPixel(x1+1,y1+1);drawPixel(x2-1,y1+1);drawPixel(x1+1,y2-1);drawPixel(x2-1,y2-1);drawHLine(x1+2, y1, x2-x1-4);drawHLine(x1+2, y2, x2-x1-4);drawVLine(x1, y1+2, y2-y1-4);drawVLine(x2, y1+2, y2-y1-4);}
}void fillRoundRect(int x1, int y1, int x2, int y2)
{if ((x2-x1)>4 && (y2-y1)>4){for (int i=0; i<((y2-y1)/2)+1; i++){switch(i){case 0:drawHLine(x1+2, y1+i, x2-x1-4);drawHLine(x1+2, y2-i, x2-x1-4);break;case 1:drawHLine(x1+1, y1+i, x2-x1-2);drawHLine(x1+1, y2-i, x2-x1-2);break;default:drawHLine(x1, y1+i, x2-x1);drawHLine(x1, y2-i, x2-x1);}}}
}void drawCircle(int x, int y, int radius)
{int f = 1 - radius;int ddF_x = 1;int ddF_y = -2 * radius;int x1 = 0;int y1 = radius;setXY(x, y + radius, x, y + radius);LCD_Write_DATA(fch,fcl);setXY(x, y - radius, x, y - radius);LCD_Write_DATA(fch,fcl);setXY(x + radius, y, x + radius, y);LCD_Write_DATA(fch,fcl);setXY(x - radius, y, x - radius, y);LCD_Write_DATA(fch,fcl);while(x1 < y1){if(f >= 0){y1--;ddF_y += 2;f += ddF_y;}x1++;ddF_x += 2;f += ddF_x;setXY(x + x1, y + y1, x + x1, y + y1);LCD_Write_DATA(fch,fcl);setXY(x - x1, y + y1, x - x1, y + y1);LCD_Write_DATA(fch,fcl);setXY(x + x1, y - y1, x + x1, y - y1);LCD_Write_DATA(fch,fcl);setXY(x - x1, y - y1, x - x1, y - y1);LCD_Write_DATA(fch,fcl);setXY(x + y1, y + x1, x + y1, y + x1);LCD_Write_DATA(fch,fcl);setXY(x - y1, y + x1, x - y1, y + x1);LCD_Write_DATA(fch,fcl);setXY(x + y1, y - x1, x + y1, y - x1);LCD_Write_DATA(fch,fcl);setXY(x - y1, y - x1, x - y1, y - x1);LCD_Write_DATA(fch,fcl);}clrXY();
}void fillCircle(int x, int y, int radius)
{for(int y1=-radius; y1<=0; y1++)for(int x1=-radius; x1<=0; x1++)if(x1*x1+y1*y1 <= radius*radius){drawHLine(x+x1, y+y1, 2*(-x1));drawHLine(x+x1, y-y1, 2*(-x1));break;}
}void show_color_bar()
{unsigned long i,j;clrXY();for (i=0; i<disp_y_size; i++){for (j=0; j<disp_x_size; j++){if(i>210){LCD_Write_DATA(0xFA,0x00);}else if(i>180){LCD_Write_DATA(0x04,0x00);}else if(i>150){LCD_Write_DATA(0xC6,0x18);}else if(i>120){LCD_Write_DATA(0x00,0x1F);}else if(i>90){LCD_Write_DATA(0x84,0x10);}else if(i>60){LCD_Write_DATA(0x80,0x00);}else if(i>30){LCD_Write_DATA(0xFF,0xE0);}else {LCD_Write_DATA(0x80,10);}}}
}/****************************************************************************
*函數名:GUI_Dot
*輸  入:x:點的X坐標
*      * y:點的Y坐標
*      * color:點的顏色
*輸  出:
*功  能:給一塊3*3像素涂上顏色。
****************************************************************************/void GUI_Dot(uint x, uint y, uint color)
{u8 i;setXY(x , y , x, y);  //單個像素  XS YS XE YEfor(i=0; i<9; i++){LCD_Write_DATA(color>>8,color&0xFF);}
}void GUI_Write32CnChar(unsigned char x, unsigned char y, unsigned char *cn, unsigned short wordColor, unsigned short backColor)
{u8 i, j, wordNum;uint color;while (*cn != '\0'){setXY(x, y, x+31, y+28);for (wordNum=0; wordNum<20; wordNum++){   //wordNum掃描字庫的字數if ((CnChar32x29[wordNum].Index[0]==*cn)&&(CnChar32x29[wordNum].Index[1]==*(cn+1))){for(i=0; i<116; i++){   //MSK的位數color=CnChar32x29[wordNum].Msk[i];for(j=0;j<8;j++){if((color&0x80)==0x80){LCD_Write_DATA(wordColor>>8,wordColor&0xFF);}else{LCD_Write_DATA(backColor>>8,backColor&0xFF);}color<<=1;}//for(j=0;j<8;j++)結束}}} //for (wordNum=0; wordNum<20; wordNum++)結束cn += 2;x += 32;}
}void GUI_WriteASCII(unsigned char  x, unsigned char  y, unsigned char  *p, unsigned short  wordColor, unsigned short  backColor)
{u8 j, wordByte,wordNum;uint color;while(*p != '\0'){wordNum = *p - 32;setXY(x,y,x+15, y+23);for (wordByte=0; wordByte<48; wordByte++){color = ASCII16x24[wordNum][wordByte];for (j=0; j<8; j++){if ((color&0x80) == 0x80){LCD_Write_DATA(wordColor>>8,wordColor&0xFF);}else{LCD_Write_DATA(backColor>>8,backColor&0xFF);}color <<= 1;}}p++;x +=16;}
}

ILI9225.h

#ifndef USER_ILI9225_H_
#define USER_ILI9225_H_#define disp_x_size 176
#define disp_y_size 220//*********************************
// COLORS
//*********************************
// VGA color palette
#define VGA_BLACK       0x0000
#define VGA_WHITE       0xFFFF
#define VGA_RED         0xF800
#define VGA_GREEN       0x0400
#define VGA_BLUE        0x001F
#define VGA_SILVER      0xC618
#define VGA_GRAY        0x8410
#define VGA_MAROON      0x8000
#define VGA_YELLOW      0xFFE0
#define VGA_OLIVE       0x8400
#define VGA_LIME        0x07E0
#define VGA_AQUA        0x07FF
#define VGA_TEAL        0x0410
#define VGA_NAVY        0x0010
#define VGA_FUCHSIA     0xF81F
#define VGA_PURPLE      0x8010
#define VGA_TRANSPARENT 0xFFFFFFFF/**  GND-1;VDD(3V3)-2;  IM0-25 接GND 16bit; LED-:31~33;LED+:34*/
#define LCD_CS GPIO_Pin_1       //4
#define LCD_RS GPIO_Pin_2       //5
#define LCD_WR GPIO_Pin_3       //6
#define LCD_RST GPIO_Pin_4      //24
#define LCD_RD GPIO_Pin_5       //7#define LCD_PORT GPIOD          //8-23#define LCD_CS_SET GPIO_WriteBit(GPIOA, LCD_CS,Bit_SET)
#define LCD_CS_CLR GPIO_WriteBit(GPIOA, LCD_CS,Bit_RESET)#define LCD_RS_SET GPIO_WriteBit(GPIOA, LCD_RS,Bit_SET)
#define LCD_RS_CLR GPIO_WriteBit(GPIOA, LCD_RS,Bit_RESET)#define LCD_WR_SET GPIO_WriteBit(GPIOA, LCD_WR,Bit_SET)
#define LCD_WR_CLR GPIO_WriteBit(GPIOA, LCD_WR,Bit_RESET)#define LCD_RST_SET GPIO_WriteBit(GPIOA, LCD_RST,Bit_SET)
#define LCD_RST_CLR GPIO_WriteBit(GPIOA, LCD_RST,Bit_RESET)#define LCD_RD_SET GPIO_WriteBit(GPIOA, LCD_RD,Bit_SET)
#define LCD_RD_CLR GPIO_WriteBit(GPIOA, LCD_RD,Bit_RESET)void LCD_Writ_Bus16(unsigned char VH,unsigned char VL);
void LCD_Write_COM(unsigned char VL);
void LCD_Write_DATA(unsigned char VH,unsigned char VL);
void LCD_Write_DATA16(unsigned short val);
void LCD_Write_COM_DATA(unsigned char com1,unsigned short dat1);
void InitLCD();
void LCD_Reset(void);
void clrScr(unsigned short color);
void clrXY();
void setPixel(unsigned char color);
void drawPixel(unsigned char  x, unsigned char  y);
void setColor(unsigned short color);
void drawHLine(unsigned char x, unsigned char y, unsigned char l);
void drawVLine(unsigned char x, unsigned char y, unsigned char l);
void drawLine(unsigned char  x1, unsigned char  y1, unsigned char  x2, unsigned char  y2);void fillRoundRect(int x1, int y1, int x2, int y2);
void drawCircle(int x, int y, int radius);
void fillCircle(int x, int y, int radius);
void drawRect(int x1, int y1, int x2, int y2);
void drawRect1(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned short c);
void fillRect(int x1, int y1, int x2, int y2);
void drawRoundRect(int x1, int y1, int x2, int y2);
void show_color_bar();void GUI_Write32CnChar(unsigned char x, unsigned char y, unsigned char *cn, unsigned short wordColor, unsigned short backColor);
void GUI_WriteASCII(unsigned char  x, unsigned char  y, unsigned char  *p, unsigned short  wordColor, unsigned short  backColor);#endif /* USER_ILI9225_H_ */

main.c

#include "debug.h"
#include "ILI9225.h"/* Global typedef *//* Global define */
#define CHAR32_SHOW
/* Global Variable */void LCD_GPIO_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure = {0};RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = LCD_CS|LCD_RS|LCD_WR|LCD_RST|LCD_RD;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);//16位并口RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;GPIO_Init(LCD_PORT, &GPIO_InitStructure);}/********************************************************************** @fn      main** @brief   Main program.** @return  none*/
int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);SystemCoreClockUpdate();Delay_Init();USART_Printf_Init(115200);	printf("SystemClk:%d\r\n",SystemCoreClock);printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );printf("This is printf example\r\n");LCD_GPIO_Init();InitLCD();while(1){show_color_bar();GUI_Write32CnChar(10,10,"科技日期",VGA_WHITE,VGA_BLUE);GUI_WriteASCII(10,60,"abcdefghijkl",VGA_WHITE,VGA_RED);GUI_WriteASCII(10,90,"ABCDEFGHIJKL",VGA_WHITE,VGA_RED);GUI_WriteASCII(10,120,"!@#$%^&*()~;:",VGA_WHITE,VGA_RED);Delay_Ms(3000);setColor(VGA_WHITE);clrScr(VGA_RED);fillRoundRect(50,50,100,100);Delay_Ms(1000);clrScr(VGA_GREEN);fillRoundRect(50,50,100,100);Delay_Ms(1000);clrScr(VGA_BLUE);fillRoundRect(50,50,100,100);Delay_Ms(1000);clrScr(VGA_YELLOW);fillRoundRect(50,50,100,100);setColor(VGA_RED);drawCircle(100,100,50);Delay_Ms(1000);}
}

二、總結

1、不會看屏幕引腳定義.開始找了一款LGDP4525和這個定義是一樣的,試了一天不行。又查了一下,相同款還有ILI9225驅動的,引腳定義完全相同。試了一下可以。

ILI9225演示用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160074.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160074.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160074.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

設計模式(二)-創建者模式(4)-原型模式

一、為何需要原型模式&#xff08;Prototype Pattern&#xff09;? 在軟件設計中&#xff0c;我們會遇到到這樣的情況&#xff1a;對原對象進行拷貝一個新的副本。想要實現這樣的邏輯&#xff0c;有一種笨方法就是對原對象里的所有變量進行逐一賦值。但是這樣的做法會導致代碼…

【SpringCloud】認識微服務、服務拆分以及遠程調用

SpringCloud 1.認識微服務 1.1單體架構 單體架構&#xff1a;將業務的所有功能集中在一個項目中開發&#xff0c;打成一個包部署 單體架構的優缺點&#xff1a; **優點&#xff1a;**架構簡單&#xff0c;部署成本低 **缺點&#xff1a;**耦合度高&#xff08;維護困難&…

【C++】郭老二博文之:C++目錄

1、POCO 【POCO】POCO學習總結&#xff08;一&#xff09;–下載與編譯 【POCO】POCO學習總結&#xff08;二&#xff09;——配置選擇 【POCO】POCO學習總結&#xff08;三&#xff09;——交叉編譯 2、C11 2.1 STL算法 【C】C11 STL算法(一)&#xff1a;非修改序列操作&a…

筆記59:序列到序列學習Seq2seq

本地筆記地址&#xff1a;D:\work_file\&#xff08;4&#xff09;DeepLearning_Learning\03_個人筆記\3.循環神經網絡\第9章&#xff1a;動手學深度學習~現代循環神經網絡 a a a a a a a a a a a a a a a

C++ Day04 this指針,友元函數,重載

this指針 概念 誰調用 this 所在的函數 ,this 就存儲誰的地址 特點 1, 在當前類的非靜態成員函數中調用本類非靜態成員時 , 默認有 this 關鍵字 2, 靜態成員函數 , 沒有 this 指針。 示例 #include <iostream> #include <cstring> using namespace std; class S…

前后端分離項目跨域請求的問題與解決辦法

目錄 一、為什么會存在跨域請求&#xff1f; 二、跨域請求的流程&#xff1f; 三、什么情況下會觸發CROS機制&#xff1f; 四、如何解決跨域請求導致的問題&#xff1f; 一、為什么會存在跨域請求&#xff1f; 跨域請求是因為瀏覽器的同源策略引起的。同源策略是瀏覽器的一種…

算法刷題-動態規劃2

算法刷題-動態規劃2 珠寶的最高價值下降路徑最小和 珠寶的最高價值 題目 大佬思路 多開一行使得代碼更加的簡潔 移動到右側和下側 dp[ i ][ j ]有兩種情況&#xff1a; 第一種是從上面來的禮物最大價值&#xff1a;dp[ i ][ j ] dp[ i - 1 ][ j ] g[ i ][ j ] 第二種是從左…

10.10-11 科研記錄 一些多模態工作的相關思考

論文出發點很簡單&#xff0c;第一&#xff0c;就是想要去除文本的冗余數據&#xff0c;有多篇文章也提到了&#xff0c;冗余文本影響對下游任務的性能&#xff0c;大量無關的文本輸入到大模型也會影響大模型的性能&#xff0c;本質也很好理解&#xff0c;就是盡可能去除與任務…

握住音樂的法寶 - 簡譜

簡譜是音樂學習中至關重要的記譜法。除了簡譜&#xff0c;還有吉他和鋼琴的五線譜&#xff0c;以及我最喜歡的古琴減字譜等其他記譜方式。如果你對音樂感興趣&#xff0c;一起學習吧&#xff0c;我不允許你是一個文盲。 一、調拍號 “1C 4/4”即為調拍號&#xff0c;調拍號分…

opencv-直方圖均衡化

直方圖均衡化是一種用于增強圖像對比度的圖像處理技術。它通過調整圖像的灰度級別分布&#xff0c;使得圖像中各個灰度級別的像素分布更均勻&#xff0c;從而提高圖像的對比度。 在OpenCV中&#xff0c;你可以使用cv2.equalizeHist()函數來進行直方圖均衡化。 以下是一個簡單…

opencv-2D直方圖

cv2.calcHist() 是 OpenCV 中用于計算直方圖的函數。它可以計算一維或多維直方圖&#xff0c;用于分析圖像中像素值的分布。 基本的語法如下&#xff1a; hist cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]])參數說明&#xff1a; images:…

[點云分割] 條件歐氏聚類分割

介紹 條件歐氏聚類分割是一種基于歐氏距離和條件限制的點云分割方法。它通過計算點云中點與點之間的歐氏距離&#xff0c;并結合一定的條件限制來將點云分割成不同的區域或聚類。 在條件歐氏聚類分割中&#xff0c;通常會定義以下兩個條件來判斷兩個點是否屬于同一個聚類&…

Java繼承中的屬性名相同但是類型不同的情況

如果子類出現一個屬性與父類的屬性名一樣,那么父類的屬性將會被隱藏(java官方文檔) 在繼承當中,子類繼承父類的屬性和繼承方法的方式上有所差別: 父類屬性不可被重寫,只會被調用,父類方法可以被重寫,也可以被調用 當子類中存在和父類同名屬性,父類屬性會隱藏起來,在多態的情…

利用Python進行數據分析【送書第六期:文末送書】

&#x1f468;?&#x1f393;博主簡介 &#x1f3c5;云計算領域優質創作者 ??&#x1f3c5;華為云開發者社區專家博主 ??&#x1f3c5;阿里云開發者社區專家博主 &#x1f48a;交流社區&#xff1a;運維交流社區 歡迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

vue實現愛心形狀的復選框

目錄 HTML代碼&#xff1a; CSS代碼&#xff1a; Vue代碼&#xff1a; 這個例子使用了CSS來創建一個愛心形狀的復選框&#xff0c;并使用Vue來控制其選中狀態。點擊復選框時&#xff0c;將調用toggleChecked方法來切換checked屬性的值&#xff0c;以控制復選框的狀態。 以下…

7.vue3項目(七):品牌管理頁面的增刪改查

目錄 1.靜態頁面 2.查詢功能實現 (1)設置出參入參類型 (2)編寫查詢接口

SpringBoot——》配置logback日志文件

推薦鏈接&#xff1a; 總結——》【Java】 總結——》【Mysql】 總結——》【Redis】 總結——》【Kafka】 總結——》【Spring】 總結——》【SpringBoot】 總結——》【MyBatis、MyBatis-Plus】 總結——》【Linux】 總結——》【MongoD…

目標檢測原理

一、什么是目標檢測 目標檢測的任務是找出圖像中所有感興趣的目標&#xff08;物體&#xff09;&#xff0c;確定他們的類別和位置&#xff0c;是計算機視覺領域的核心問題之一。由于各類物體有不同的外觀、形狀、姿態&#xff0c;再加上光照、遮擋等因素的干擾&#xff0c;目…

Spring Framework 6.1 正式發布

Spring Framework 6.1.0 現已從 Maven Central 正式發布&#xff01;6.1 一代有幾個關鍵主題&#xff1a; 擁抱 JDK 21 LTS虛擬線程&#xff08;Project Loom&#xff09;JVM 檢查點恢復&#xff08;項目 CRaC&#xff09;重新審視資源生命周期管理重新審視數據綁定和驗證新的…