1.å
³äºcè¯è¨ä¸newå符ç使ç¨ã
2.OpenCV图像处理|Python OpenCV计算轮廓面积、函函数周长并显示极点
3.编写一个小程序,数源可以读入一个英文的函函数文本文件,显示这个文件,数源并统计这个文件有多少个字符,函函数多少个单词,数源devpxpress源码
4.如何用turbo c写窗体程序
5.详解用OpenCV绘制各类几何图形
6.OpenCV入门(五)快速学会OpenCV4文字绘制&边界填充
å ³äºcè¯è¨ä¸newå符ç使ç¨ã
/*ç»ä½ ççæç¨å§ï¼ï¼*/
Turbo C2.0çå符å±å¹å½æ°ä¸»è¦å æ¬ææ¬çªå£å¤§å°ç设å®ãçªå£é¢è²ç设置ã
çªå£ææ¬çæ¸ é¤åè¾å ¥è¾åºçå½æ°ã
1.ææ¬çªå£çå®ä¹
Turbo C2.0é»è®¤å®ä¹çææ¬çªå£ä¸ºæ´ä¸ªå±å¹,函函数 å ±æå(æå)è¡çææ¬
åå , æ¯ä¸ªåå å æ¬ä¸ä¸ªå符åä¸ä¸ªå±æ§, å符å³ASCII ç å符, å±æ§è§å®è¯¥å
符çé¢è²å强度ã
Turbo C2.0å¯ä»¥å®ä¹å±å¹ä¸çä¸ä¸ªç©å½¢åä½ä¸ºçªå£, 使ç¨window()å½æ°å®ä¹ã
çªå£å®ä¹ä¹å, ç¨æå ³çªå£çè¾å ¥è¾åºå½æ°å°±å¯ä»¥åªå¨æ¤çªå£å è¿è¡æä½èä¸è¶
åºçªå£çè¾¹çã
window()å½æ°çè°ç¨æ ¼å¼ä¸º:
void window(int left, int top, int right, int bottom);
该å½æ°çååå¨conio.h ä¸ (å ³äºææ¬çªå£çææå½æ°å ¶å¤´æ件å为conio.h,
åé¢ä¸å说æ)ã å½æ°ä¸å½¢å¼åæ°(int left, int top)æ¯çªå£å·¦ä¸è§çåæ ,
(int right, int bottom)æ¯çªå£çå³ä¸è§åæ , å ¶ä¸(left, top)å(right,
bottom) æ¯ç¸å¯¹äºæ´ä¸ªå±å¹èè¨çã Turbo C 2.0è§å®æ´ä¸ªå±å¹çå·¦ä¸è§åæ 为
(1, 1), å³ä¸è§åæ 为(, )ã并è§å®æ²¿æ°´å¹³æ¹å为 Xè½´, æ¹åæå³; 沿åç´
æ¹å为 Yè½´, æ¹åæä¸ãè¥window()å½æ°ä¸çåæ è¶ è¿äºå±å¹åæ ççé, åçª
å£çå®ä¹å°±å¤±å»äºæä¹, ä¹å°±æ¯è¯´å®ä¹å°ä¸èµ·ä½ç¨, ä½ç¨åºç¼è¯é¾æ¥æ¶å¹¶ä¸åºéã
å¦å¤, ä¸ä¸ªå±å¹å¯ä»¥å®ä¹å¤ä¸ªçªå£, ä½ç°è¡çªå£åªè½æä¸ä¸ª(å 为DOS为åä»»
å¡æä½ç³»ç»), å½éè¦ç¨å¦ä¸çªå£æ¶, å¯å°å®ä¹è¯¥çªå£çwindow() å½æ°åè°ç¨ä¸
次, æ¤æ¶è¯¥çªå£ä¾¿æ为ç°è¡çªå£äºã
å¦è¦å®ä¹ä¸ä¸ªçªå£å·¦ä¸è§å¨å±å¹(, 5)å¤, 大å°ä¸ºåè¡ççªå£å¯åæ:
window(, 5, , );
2. ææ¬çªå£é¢è²ç设置
ææ¬çªå£é¢è²ç设置å æ¬èæ¯é¢è²ç设置åå符é¢è²ç设置, 使ç¨çå½æ°å
å ¶è°ç¨æ ¼å¼ä¸º:
设置èæ¯é¢è²: void textbackground(int color);
设置å符é¢è²: void textcolor(int color);
æå ³é¢è²çå®ä¹è§è¡¨1ã
表1. æå ³é¢è²çå®ä¹
âââââââââââââââââââââââââââ
符å·å¸¸æ° æ°å¼ å«ä¹ å符æèæ¯
âââââââââââââââââââââââââââ
BLACK 0 é» ä¸¤è åå¯
BLUE 1 å ° 两è åå¯
GREEN 2 绿 两è åå¯
CYAN 3 é 两è åå¯
RED 4 红 两è åå¯
MAGENTA 5 æ´çº¢ 两è åå¯
BROWN 6 æ£ ä¸¤è åå¯
LIGHTGRAY 7 æ·¡ç° ä¸¤è åå¯
DARKGRAY 8 æ·±ç° åªç¨äºå符
LIGHTBLUE 9 æ·¡å ° åªç¨äºå符
LIGHTGREEN 淡绿 åªç¨äºå符
LIGHTCYAN æ·¡é åªç¨äºå符
LIGHTRED 淡红 åªç¨äºå符
LIGHTMAGENTA æ·¡æ´çº¢ åªç¨äºå符
YELLOW é» åªç¨äºå符
WHITE ç½ åªç¨äºå符
BLINK éªç åªç¨äºå符
âââââââââââââââââââââââââââ
ä¸è¡¨ä¸ç符å·å¸¸æ°ä¸ç¸åºçæ°å¼çä»·, äºè å¯ä»¥äºæ¢ãä¾å¦è®¾å®å °è²èæ¯å¯
以使ç¨textbackground(1), ä¹å¯ä»¥ä½¿ç¨textbackground(BLUE), 两è 没æä»»ä½
åºå«, åªä¸è¿åè æ¯è¾å®¹æè®°å¿, ä¸çå°±ç¥éæ¯å °è²ã
Turbo Cå¦å¤è¿æä¾äºä¸ä¸ªå½æ°, å¯ä»¥åæ¶è®¾ç½®ææ¬çå符åèæ¯é¢è², è¿
个å½æ°çè°ç¨æ ¼å¼ä¸º:
void textattr(int attr);
å ¶ä¸: attrçå¼è¡¨ç¤ºé¢è²å½¢å¼ç¼ç çä¿¡æ¯, æ¯ä¸ä½ä»£è¡¨çå«ä¹å¦ä¸:
ä½ 7 6 5 4 3 2 1 0
B b b b c c c c
â âââââ âââââââ
éªç èæ¯é¢è² å符é¢è²
åèä½åä½cccc设置å符é¢è²(0å°), 4~6ä¸ä½bbb设置èæ¯é¢è²(0å°7),
第7ä½B设置å符æ¯å¦éªçãåå¦è¦è®¾ç½®ä¸ä¸ªå °åºé»å, å®ä¹æ¹æ³å¦ä¸:
textattr(YELLOW+(BLUE<<4));
è¥åè¦æ±å符éªç, åå®ä¹å为:
textattr(+YELLOW+(BLUE<<4);
注æ:
(1) 对äºèæ¯åªæ0 å°7 å ±å «ç§é¢è², è¥å大äº7 å°äºçæ°, å代表ç
é¢è²ä¸å 7åçå¼å¯¹åºçé¢è²ç¸åã
(2) ç¨textbackground()åtextcolor() å½æ°è®¾ç½®äºçªå£çèæ¯ä¸å符é¢
è²å, å¨æ²¡æç¨clrscr()å½æ°æ¸ é¤çªå£ä¹å, é¢è²ä¸ä¼æ¹å, ç´å°ä½¿ç¨äºå½æ°
clrscr(), æ´ä¸ªçªå£åéåè¾åºå°çªå£ä¸çææ¬å符æä¼åææ°é¢è²ã
(3) ç¨textattr()å½æ°æ¶èæ¯é¢è²åºå·¦ç§»4ä½, æè½ä½¿3ä½èæ¯é¢è²ç§»å°æ£
ç¡®ä½ç½®ã
ä¸é¢è¿ä¸ªç¨åºä½¿ç¨äºå ³äºçªå£å¤§å°çå®ä¹ãé¢è²ç设置çå½æ°, å¨ä¸ä¸ªå±å¹
ä¸ä¸åä½ç½®å®ä¹äº7个çªå£, å ¶èæ¯è²åå«ä½¿ç¨äº7ç§ä¸åçé¢è²ã
ä¾1.:
#include <stdio.h>
#include <conio.h>
main()
{
int i;
textbackground(0); /* 设置å±å¹èæ¯è² */
clrscr(); /* æ¸ é¤ææ¬å±å¹ */
for(i=1; i<8; i++)
{
window(+i*5, 5+i, +i*5, +i); /* å®ä¹ææ¬çªå£ */
textbackground(i); /* å®ä¹çªå£èæ¯è² */
clrscr(); /* æ¸ é¤çªå£ */
}
getch();
}
3. çªå£å ææ¬çè¾å ¥è¾åºå½æ°
ä¸ãçªå£å ææ¬çè¾åºå½æ°
int cprintf("<æ ¼å¼åå符串>", <åé表>);
int cputs(char *string);
int putch(int ch);
cprintf()å½æ°è¾åºä¸ä¸ªæ ¼å¼åçå符串ææ°å¼å°çªå£ä¸ãå®ä¸printf() å½
æ°çç¨æ³å®å ¨ä¸æ ·, åºå«å¨äºcprintf()å½æ°çè¾åºåçªå£éå¶, èprintf() å½
æ°çè¾åºä¸ºæ´ä¸ªå±å¹ã
cputs()å½æ°è¾åºä¸ä¸ªå符串å°å±å¹ä¸, å®ä¸puts()å½æ°ç¨æ³å®å ¨ä¸æ ·, åª
æ¯åçªå£å¤§å°çéå¶ã
putch()å½æ°è¾åºä¸ä¸ªå符å°çªå£å ã
注æ:
(1) 使ç¨ä»¥ä¸å ç§å½æ°, å½è¾åºè¶ åºçªå£çå³è¾¹çæ¶ä¼èªå¨è½¬å°ä¸ä¸è¡ç
å¼å§å¤ç»§ç»è¾åºãå½çªå£å 填满å 容ä»æ²¡æç»æè¾åºæ¶, çªå£å±å¹å°ä¼èªå¨éè¡
ä¸å·ç´å°è¾åºç»æ为æ¢ã
äºãçªå£å ææ¬çè¾å ¥å½æ°
int getche(void);
该å½æ°å¨åé¢å·²ç»è®²è¿, éè¦è¯´æçæ¯, getche()å½æ°ä»é®çä¸è·å¾ä¸ä¸ªå
符, å¨å±å¹ä¸æ¾ç¤ºçæ¶å, å¦æåç¬¦è¶ è¿äºçªå£å³è¾¹ç, åä¼è¢«èªå¨è½¬ç§»å°ä¸ä¸
è¡çå¼å§ä½ç½®ã
ä¸é¢è¿ä¸ªç¨åºç»ä¾1.ä¸å å ¥äºä¸äºææ¬çè¾åºå½æ°ã
ä¾2.:
#include <stdio.h>
#include <conio.h>
int main()
{
int i;
char *c[]={ "BLACK", "BLUE", "GREEN", "CYAN", "RED",
"MAGENTA", "BROWN", "LIGHTGRAY"};
textbackground(0); /* 设置å±å¹èæ¯è² */
clrscr(); /* æ¸ é¤ææ¬å±å¹ */
for(i=1; i<8; i++)
{
window(+i*5, 5+i, +i*5, +i); /* å®ä¹ææ¬çªå£ */
textbackground(i); /* å®ä¹çªå£èæ¯è² */
clrscr(); /* æ¸ é¤çªå£ */
}
getch();
return 0;
}
4. æå ³å±å¹æä½çå½æ°
void clrscr(void); æ¸ é¤å½åçªå£ä¸çææ¬å 容, 并æå æ å®ä½å¨çªå£
çå·¦ä¸è§(1, 1)å¤ã
void clreol(void); æ¸ é¤å½åçªå£ä¸ä»å æ ä½ç½®å°è¡å°¾çææå符, å
æ ä½ç½®ä¸åã
void gotoxy(x, y); 该å½æ°å¾æç¨, å®ç¨æ¥å®ä½å æ å¨å½åçªå£ä¸çä½
ç½®ãè¿éx, yæ¯æå æ è¦å®ä½å¤çåæ (ç¸å¯¹äºçªå£
èè¨), å½x, yè¶ åºäºçªå£ç大å°æ¶, 该å½æ°å°±ä¸èµ·
ä½ç¨äºã
int gettext(int xl, int yl, int x2, int y2, void *buffer);
int puttext(int x1, int y1, int x2, int y2, void *buffer);
gettext()å½æ°æ¯å°å±å¹ä¸æå®çç©å½¢åºåå ææ¬å 容åå ¥buffer æéæå
çä¸ä¸ªå å空é´ãå åç大å°ç¨ä¸å¼è®¡ç®:
æç¨åè大å°=è¡æ°*åæ°*2
å ¶ä¸:
è¡æ°=y2-y1+1 åæ°=x2-x1+1
puttext()å½æ°åæ¯å°gettext()å½æ°åå ¥å åbufferä¸çæåå 容æ·è´å°å±
å¹ä¸æå®çä½ç½®ã
int movetext(int x1, int x2, int y2, int x3, int y3);
movetext()å½æ°å°å±å¹ä¸å·¦ä¸è§ä¸º(x1, y1), å³ä¸è§ä¸º(x2, y2)çä¸ç©å½¢çª
å£å çææ¬å 容æ·è´å°å·¦ä¸è§ä¸º(x3, y3)çæ°çä½ç½®ã该å½æ°çåæ ä¹æ¯ç¸å¯¹äº
æ´ä¸ªå±å¹èè¨çã
注æ:
1. gettext()å½æ°åputtext()å½æ°ä¸çåæ æ¯å¯¹æ´ä¸ªå±å¹èè¨ç, å³æ¯å±
å¹çç»å¯¹åæ , èä¸æ¯ç¸å¯¹çªå£çåæ ã
2. movetext()å½æ°æ¯æ·è´èä¸æ¯ç§»å¨çªå£åºåå 容, å³ä½¿ç¨è¯¥å½æ°å, å
ä½ç½®åºåçææ¬å 容ä»ç¶åå¨ã
ä¾3.
include <conio.h>
main()
{
int i;
char *f[]={ "Load F3", "Pick Alt-F3", "New ",
"Save F2", "Write to ", "Directory",
"Change dir", "Os shee ", "Quit Alt-X"};
char buf[9**2];
clrscr();
textcolor(YELLOW);
textbackground(BLUE);
clrscr();
gettext(, 2, , , buf);
window(, 2, , );
textbackground(RED);
textcolor(YELLOW);
clrscr();
for(i=0; i<9; i++)
{
gotoxy(1, i++);
cprintf("%s", f[i]);
}
getch();
movetext(, 2, , , , );
puttext(, 2, , , buf);
getch();
}
ä¸é¢åä»ç»ä¸äºå½æ°:
void highvideo(void); 设置æ¾ç¤ºå¨é«äº®åº¦æ¾ç¤ºå符ã
void lowvideo(void); 设置æ¾ç¤ºå¨ä½äº®åº¦æ¾ç¤ºå符ã
void normvideo(void); 使æ¾ç¤ºå¨è¿åå°ç¨åºè¿è¡åçæ¾ç¤ºæ¹å¼ã
int wherex(void); è¿ä¸¤ä¸ªå½æ°è¿åå½åçªå£ä¸å æ çx, yåæ ã
int wherey(void);
OpenCV图像处理|Python OpenCV计算轮廓面积、周长并显示极点
Python OpenCV计算轮廓面积、数源周长并显示极点
通过Python的函函数OpenCV库,可以方便地计算图像中轮廓的数源面积和周长,并且能够清晰地显示轮廓的函函数极点。以下为实现此功能的数源完整代码。
首先,函函数通过函数解析来理解代码中关键步骤的数源含义:
1、cv2.contourArea()函数用来计算轮廓的函函数面积。
2、cv2.arcLength函数用于计算轮廓的周长。
3、left = tuple(ct[ct[:, :, 0].argmin()][0]) # 图像轮廓的最左端像素点的坐标
4、top = tuple(ct[ct[:, :, 1].argmin()][0]) # 图像轮廓的最顶端像素点的坐标
5、cv2.circle(img, bottom, 5, (0, 0, ), -1)
6、cv2.FONT_HERSHEY_SIMPLEX,java erp 源码 视频 0.5, (0, , 0), 1
结合以上解析,代码逻辑清晰:利用OpenCV库中的函数,首先计算轮廓的面积与周长,然后分别找到轮廓的最左端、最顶端坐标。接着,使用cv2.circle函数绘制轮廓的极点,并通过cv2.putText添加文字说明。最终,展示处理后的图像,直观呈现轮廓的面积、周长与极点信息。
编写一个小程序,可以读入一个英文的文本文件,显示这个文件,并统计这个文件有多少个字符,多少个单词,
#include<stdio.h>
//定义一个结构体来统计所有的信息
struct ALLNUM {
int wordnum, charnum; //wordnum,charnum分别表示单词和字符的个数。
unsigned char blank, tab, enter;
// blank, tab,enter,分别表示空格,TAB,段落的个数。
//在程序中用空格,手机制作源码TAB来划分单词与字符
};
unsigned char *str;
void puttext(void);
struct ALLNUM num(void);
int main(void)
{
puttext();
num();
return 0;
}
void puttext(void)
{
printf("请输入相应的字符:\n");
scanf("%s",str);
getchar();
}
struct ALLNUM num(void)//返回结构体类型的函数。将所有的个数信息返回
{
struct ALLNUM tempnum;
//这里添加相关的统计类的语句
return tempnum;
}
//注:由于时间限制在分钟以内,所以不可能完全将所以程序写完,如真的想把这个程序很好的完成,请/ //联系我。以上程序可能有很多错误的地方。
如何用turbo c写窗体程序
Turbo
C2.0的字符屏幕函数主要包括文本窗口大小的设定、窗口颜色的设置、
窗口文本的清除和输入输出等函数。
1.文本窗口的定义
Turbo
C2.0默认定义的文本窗口为整个屏幕,
共有列(或列)行的文本
单元,
每个单元包括一个字符和一个属性,
字符即ASCII
码字符,
属性规定该字
符的颜色和强度。
Turbo
C2.0可以定义屏幕上的一个矩形域作为窗口,
使用window()函数定义。
窗口定义之后,
用有关窗口的输入输出函数就可以只在此窗口内进行操作而不超
出窗口的边界。
window()函数的调用格式为:
void
window(int
left,
int
top,
int
right,
int
bottom);
该函数的原型在conio.h
中
(关于文本窗口的所有函数其头文件均为conio.h,
后面不再说明)。
函数中形式参数(int
left,
int
top)是窗口左上角的坐标,
(int
right,
int
bottom)是窗口的右下角坐标,
其中(left,
top)和(right,
bottom)
是相对于整个屏幕而言的。
Turbo
C
2.0规定整个屏幕的左上角坐标为
(1,
1),
右下角坐标为(,
)。并规定沿水平方向为
X轴,
方向朝右;
沿垂直
方向为
Y轴,
方向朝下。若window()函数中的坐标超过了屏幕坐标的界限,
则窗
口的定义就失去了意义,
也就是说定义将不起作用,
但程序编译链接时并不出错。
另外,
一个屏幕可以定义多个窗口,
但现行窗口只能有一个(因为DOS为单任
务操作系统),
当需要用另一窗口时,
可将定义该窗口的window()
函数再调用一
次,
此时该窗口便成为现行窗口了。
如要定义一个窗口左上角在屏幕(,
5)处,
大小为列行的窗口可写成:
window(,
5,
,
);
2.
文本窗口颜色的设置
文本窗口颜色的设置包括背景颜色的设置和字符颜色的设置,
使用的函数及
其调用格式为:
设置背景颜色:
void
textbackground(int
color);
设置字符颜色:
void
textcolor(int
color);
有关颜色的定义见表1。
表1.
有关颜色的定义
━━━━━━━━━━━━━━━━━━━━━━━━━━━
符号常数
数值
含义
字符或背景
———————————————————————————
BLACK
0
黑
两者均可
BLUE
1
兰
两者均可
GREEN
2
绿
两者均可
CYAN
3
青
两者均可
RED
4
红
两者均可
MAGENTA
5
洋红
两者均可
BROWN
6
棕
两者均可
LIGHTGRAY
7
淡灰
两者均可
DARKGRAY
8
深灰
只用于字符
LIGHTBLUE
9
淡兰
只用于字符
LIGHTGREEN
淡绿
只用于字符
LIGHTCYAN
淡青
只用于字符
LIGHTRED
淡红
只用于字符
LIGHTMAGENTA
淡洋红
只用于字符
YELLOW
黄
只用于字符
WHITE
白
只用于字符
BLINK
闪烁
只用于字符
━━━━━━━━━━━━━━━━━━━━━━━━━━━
上表中的符号常数与相应的数值等价,
二者可以互换。例如设定兰色背景可
以使用textbackground(1),欢乐翻牌红包源码
也可以使用textbackground(BLUE),
两者没有任何
区别,
只不过后者比较容易记忆,
一看就知道是兰色。
Turbo
C另外还提供了一个函数,
可以同时设置文本的字符和背景颜色,
这
个函数的调用格式为:
void
textattr(int
attr);
其中:
attr的值表示颜色形式编码的信息,
每一位代表的含义如下:
位
7
6
5
4
3
2
1
0
B
b
b
b
c
c
c
c
↓
┕━━━┙
┖—————┘
闪烁
背景颜色
字符颜色
字节低四位cccc设置字符颜色(0到),
4~6三位bbb设置背景颜色(0到7),
第7位B设置字符是否闪烁。假如要设置一个兰底黄字,
定义方法如下:
textattr(YELLOW+(BLUE<<4));
若再要求字符闪烁,
则定义变为:
textattr(+YELLOW+(BLUE<<4);
注意:
(1)
对于背景只有0
到7
共八种颜色,
若取大于7
小于的数,
则代表的
颜色与减
7后的值对应的颜色相同。
(2)
用textbackground()和textcolor()
函数设置了窗口的背景与字符颜
色后,
在没有用clrscr()函数清除窗口之前,
颜色不会改变,
直到使用了函数
clrscr(),
整个窗口和随后输出到窗口中的文本字符才会变成新颜色。
(3)
用textattr()函数时背景颜色应左移4位,
才能使3位背景颜色移到正
确位置。
下面这个程序使用了关于窗口大小的定义、颜色的设置等函数,
在一个屏幕
上不同位置定义了7个窗口,
其背景色分别使用了7种不同的颜色。
例1.:
#include
<stdio.h>
#include
<conio.h>
main()
{
int
i;
textbackground(0);
/
*设置屏幕背景色
*/
clrscr();
/
*清除文本屏幕
*/
for(i=1;
i<8;
i++)
{
window(+i*5,
5+i,
+i*5,
+i);
/
*定义文本窗口
*/
textbackground(i);
/
*定义窗口背景色
*/
clrscr();
/
*清除窗口
*/
}
getch();
}
3.
窗口内文本的输入输出函数
一、窗口内文本的输出函数
int
cprintf("<格式化字符串>",
<变量表>);
int
cputs(char
*string);
int
putch(int
ch);
cprintf()函数输出一个格式化的字符串或数值到窗口中。它与printf()
函
数的用法完全一样,
区别在于cprintf()函数的输出受窗口限制,
而printf()
函
数的输出为整个屏幕。
cputs()函数输出一个字符串到屏幕上,
它与puts()函数用法完全一样,
只
是受窗口大小的限制。
putch()函数输出一个字符到窗口内。
注意:
(1)
使用以上几种函数,
当输出超出窗口的右边界时会自动转到下一行的
开始处继续输出。当窗口内填满内容仍没有结束输出时,
窗口屏幕将会自动逐行
上卷直到输出结束为止。
二、窗口内文本的输入函数
int
getche(void);
该函数在前面已经讲过,
需要说明的是,
getche()函数从键盘上获得一个字
符,
在屏幕上显示的时候,
如果字符超过了窗口右边界,
则会被自动转移到下一
行的开始位置。
下面这个程序给例1.中加入了一些文本的输出函数。
例2.:
#include
<stdio.h>
#include
<conio.h>
int
main()
{
int
i;
char
*c[]={ "BLACK",
"BLUE",
"GREEN",
"CYAN",
"RED",
"MAGENTA",
"BROWN",
"LIGHTGRAY"};
textbackground(0);
/
*设置屏幕背景色
*/
clrscr();
/
*清除文本屏幕
*/
for(i=1;
i<8;
i++)
{
window(+i*5,
5+i,
+i*5,
+i);
/
*定义文本窗口
*/
textbackground(i);
/
*定义窗口背景色
*/
clrscr();
/
*清除窗口
*/
}
getch();
return
0;
}
4.
有关屏幕操作的函数
void
clrscr(void);
清除当前窗口中的文本内容,
并把光标定位在窗口
的左上角(1,
1)处。
void
clreol(void);
清除当前窗口中从光标位置到行尾的所有字符,
光
标位置不变。
void
gotoxy(x,
y);
该函数很有用,
它用来定位光标在当前窗口中的位
置。这里x,
y是指光标要定位处的坐标(相对于窗口
而言),
当x,
y超出了窗口的大小时,
该函数就不起
作用了。
int
gettext(int
xl,欢乐跳瓶 源码
int
yl,
int
x2,
int
y2,
void
*buffer);
int
puttext(int
x1,
int
y1,
int
x2,
int
y2,
void
*buffer);
gettext()函数是将屏幕上指定的矩形区域内文本内容存入buffer
指针指向
的一个内存空间。内存的大小用下式计算:
所用字节大小=行数*列数*2
其中:
行数=y2-y1+1
列数=x2-x1+1
puttext()函数则是将gettext()函数存入内存buffer中的文字内容拷贝到屏
幕上指定的位置。
int
movetext(int
x1,
int
x2,
int
y2,
int
x3,
int
y3);
movetext()函数将屏幕上左上角为(x1,
y1),
右下角为(x2,
y2)的一矩形窗
口内的文本内容拷贝到左上角为(x3,
y3)的新的位置。该函数的坐标也是相对于
整个屏幕而言的。
注意:
1.
gettext()函数和puttext()函数中的坐标是对整个屏幕而言的,
即是屏
幕的绝对坐标,
而不是相对窗口的坐标。
2.
movetext()函数是拷贝而不是移动窗口区域内容,
即使用该函数后,
原
位置区域的文本内容仍然存在。
例3.
include
<conio.h>
main()
{
int
i;
char
*f[]={ "Load
F3",
"Pick
Alt-F3",
"New
",
"Save
F2",
"Write
to
",
"Directory",
"Change
dir",
"Os
shee
",
"Quit
Alt-X"};
char
buf[9**2];
clrscr();
textcolor(YELLOW);
textbackground(BLUE);
clrscr();
gettext(,
2,
,
,
buf);
window(,
2,
,
);
textbackground(RED);
textcolor(YELLOW);
clrscr();
for(i=0;
i<9;
i++)
{
gotoxy(1,
i++);
cprintf("%s",
f[i]);
}
getch();
movetext(,
2,
,
,
,
);
puttext(,
2,
,
,
buf);
getch();
}
下面再介绍一些函数:
void
highvideo(void);
设置显示器高亮度显示字符。
void
lowvideo(void);
设置显示器低亮度显示字符。
void
normvideo(void);
使显示器返回到程序运行前的显示方式。
int
wherex(void);
这两个函数返回当前窗口下光标的x,
y坐标。
int
wherey(void);
详解用OpenCV绘制各类几何图形
详解用OpenCV绘制各类几何图形
本文详细介绍了OpenCV绘制几何图形的方法,利用cv2.line()、v2.circle()、cv2.rectangle()、cv2.ellipse()、cv2.polylines()、cv2.putText()函数实现。
一. 绘制直线
在OpenCV中,绘制直线通过调用cv2.line()函数实现,需要获取直线的起点和终点坐标。下面的代码展示了如何绘制一条直线:通过np.zeros()创建一幅黑色图像,接着调用cv2.line()绘制直线,参数包括起始坐标和颜色、粗细。
输出结果如图3-1所示,从坐标(0,0)到(,)绘制一条直线,直线颜色为(,,),粗细为5。
二. 绘制矩形
绘制矩形通过调用cv2.rectangle()函数实现,该函数需要矩形的左上角和右下角坐标。下面的代码展示了如何绘制一个矩形:通过np.zeros()创建一幅黑色图像,接着调用cv2.rectangle()绘制矩形,参数包括左上角坐标、右下角坐标、颜色、粗细。
输出结果如图3-2所示,从左上角坐标为(,),右下角坐标为(,),绘制的矩形颜色为蓝色(,0,0),粗细为2。
三. 绘制圆形
绘制圆形同样使用cv2.rectangle()函数,但需要额外参数,如中心点的位置坐标,半径等。下面的代码展示了如何绘制一个圆形:在圆形为(,)的位置,绘制了一个半径为,颜色为(,,0)、粗细为4的圆。
注意,将粗细设置为“-1”时,绘制的圆为实心,如图3-4所示。
四. 绘制椭圆
绘制椭圆较为复杂,需要输入多个参数,如中心点的位置坐标,长轴和短轴的长度,椭圆沿逆时针方向旋转的角度等。下面的代码展示了如何绘制一个椭圆:椭圆中心为(,),长轴为,短轴为,偏转角度为,圆弧起始角的角度为0,圆弧终结角的角度为,表示一个完整的椭圆。绘制的颜色为(,0,),粗细为2。
五. 绘制多边形
绘制多边形通过调用cv2.polylines()函数实现,需要指定每个顶点的坐标。下面的代码展示了如何绘制一个闭合的多边形和一个五角星多边形。
输出结果如图3-6和图3-7所示,分别展示了绘制的多边形。
六. 绘制文字
添加文字通过调用cv2.putText()函数实现,需要指定字体、文本内容、起始位置、字体大小、颜色等参数。下面的代码展示了如何绘制文字:在图像上绘制的文字为“I love Python!I love Huawei!”。
七. 总结
本文详细介绍了OpenCV绘制几何图形的方法,利用多种函数实现基本图形的绘制。初学者通过本文可以掌握基础图形绘制的用法,为后续应用提供帮助。同时,建议读者尝试结合本文内容实现一个简单的画图软件。
OpenCV入门(五)快速学会OpenCV4文字绘制&边界填充
在探讨OpenCV4的文字绘制与边界填充技术中,我们将重点解析两个核心功能:文字绘制与边界填充。OpenCV为图像处理提供丰富的工具集,其中文字绘制功能通过putText()函数实现,允许在图像上添加文字信息。此函数接收参数如待绘制图像、文字内容、文字框左下角坐标、字体、尺寸因子、颜色和线条宽度等,允许高度定制化文字呈现。
以示例代码展示,首先通过for循环调整像素值,实现色彩渐变效果,然后使用getTextSize()确定文字大小,进而通过putText()绘制字符串"Hello World"。结果可视化显示。
进入边界填充技术领域,复制MakeBorder()函数发挥关键作用。此函数为图像添加额外边界,可通过参数调整扩充像素数量,支持多种边界处理策略,如复制法、反射法、常量法等,各具特色。通过代码实例,直观展示了不同边界填充效果,如复制法、反射法、外包法和常量法的实现与输出结果。