幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!
作为一名23年从四川师范大学毕业的毕业生,我曾经颇为迷茫,因为大学时期学习的知识并不系统,毕业后进入艺术创意行业担任设计师,虽然充满激情,但却渐渐觉得迷失。直到我踏入了华清远见,参加了为期四个月的嵌入式课程,我的人生轨迹发生了改变。
在这里,我学到了系统的嵌入式开发知识,不仅填补了之前知识的空白,更让我看到了新的未来。在学习的过程中,我结识了一群志同道合的朋友,我们相互学习、相互进步,共同奋斗在技术的征途上。
毕业典礼上,我惊喜地获得了优秀学员称号和优秀项目奖,这对我而言是莫大的鼓励和肯定。更让我感动的是,我顺利成为了华清远见的嵌入式兼职助教,这份工作让我有机会将所学传承下去,同时也为我开拓了更广阔的视野。
在老师们的关怀和帮助下,我顺利找到了一份全职软件工程师的工作,这对我而言是实现职业梦想的重要一步。这四个月的时间,不仅让我收获了专业知识和技能,更让我收获了友情和成长。感谢每一位曾经帮助过我的老师、同学和朋友,感谢这段珍贵的时光,让我领悟到努力奋斗的意义和价值。
人生的道路上充满了坎坷和挑战,但只要坚定信念,勇敢前行,就一定能够迎接更美好的明天。我将怀揣着感恩之心,继续努力学习,不断提升自己,为实现更多的梦想而努力奋斗。愿逐梦人生,扬帆起航,勇往直前,终将抵达成功的彼岸!
帮我写1000字左右的就业感言,内容包括:23年从四川师范大学毕业,大学学习的知识不系统,毕业后从艺术创意行业的设计师来到华清远见学了四个月的嵌入式课程,学到了系统的嵌入式开发知识,结识了一群志同道合的朋友,在毕业典礼上获得了优秀学员将和优秀项目奖,不仅聘上了华清远见的嵌入式兼职助教,还在老师的关心和帮助下找到了一份全职软件工程师的工作,四个月收获很多,感慨颇深
在艺术创意行业的设计师转行到嵌入式领域,经过华清远见四个月的学习,经历了一段充实而难忘的成长之路。从最初对嵌入式系统一无所知,到如今获得系统的嵌入式开发知识,这段旅程不仅充实了我的技术能力,更让我体会到学习的乐趣和挑战。
在华清远见学习期间,结识了一群志同道合的朋友,大家一起奋斗、学习、进步。在这个集体中,我不仅收获了知识,更收获了友情和团队精神。毕业典礼上获得优秀学员和优秀项目奖,是我学习之路上的鼓舞和肯定,更是我前行的动力和信心。
在毕业的那一刻,我充满感慨,回想起这四个月的学习生活,收获实在太多。而最让我感到幸运和自豪的是,我不仅聘上了华清远见的嵌入式兼职助教,更在老师的关心和帮助下找到了一份全职软件工程师的工作。这份工作不仅是对我学习成果的认可,更是我展示实力、实现梦想的舞台。
这四个月的学习经历,让我从一个对嵌入式开发一窍不通的小白,变成了一名具有系统知识和实战技能的软件工程师。这不仅是一次职业转型,更是一次自我重塑和提升的过程。我深知学无止境,未来的道路上还有很多挑战等待着我,我会保持初心,继续努力学习,不断提升自己,成为更优秀的软件工程师。
最后,我要感谢华清远见的老师、同学和朋友们,在你们的帮助和支持下,我才能走到今天。未来的日子里,我会怀着感恩之心,永远珍惜这段难忘的学习经历,不忘初心,砥砺前行,让自己的人生更加精彩!
帮我写800字左右的就业感言,内容包括:从艺术创意行业的设计师来到华清远见学了四个月的嵌入式课程,学到了系统的嵌入式开发知识,结识了一群志同道合的朋友,在毕业典礼上获得了优秀学员将和优秀项目奖,不仅聘上了华清远见的嵌入式兼职助教,还在老师的关心和帮助下找到了一份全职软件工程师的工作,四个月收获很多,感慨颇深
在 C++ 中,宏是使用 `#define` 预处理指令定义的标识符常量或函数。C++ 并没有提供直接删除宏的机制,因为一旦定义了宏,在预处理阶段就会替换掉所有的宏调用。
然而,你可以使用 `#undef` 预处理指令来取消宏定义。`#undef` 指令用于取消已经定义的宏,将其还原为普通的标识符。
例如,如果你想取消宏名为 `DEBUG` 的定义,可以使用以下方式:
```cpp
#undef DEBUG
```
这样在宏定义之后,`DEBUG` 就不再是一个宏了。注意,取消宏定义只对当前源文件有效,如果你在其他文件中仍然包含了该宏的定义,那么在那些文件中 `DEBUG` 仍然会被视为宏。
总之,在 C++ 中,宏的定义可以使用 `#define` 进行,而取消宏的定义可以使用 `#undef` 进行。
c++消失的宏
以下是将给定的 Python 代码转换为 C++ 的实现:
```cpp
#include
cv::Mat overlay_img(cv::Mat img, cv::Mat img_over, int img_over_x, int img_over_y) {
int img_h = img.rows; // 获取背景图像的高度
int img_w = img.cols; // 获取背景图像的宽度
int img_p = img.channels(); // 获取背景图像的通道数
int img_over_h = img_over.rows; // 获取覆盖图像的高度
int img_over_w = img_over.cols; // 获取覆盖图像的宽度
int img_over_c = img_over.channels(); // 获取覆盖图像的通道数
if (img_over_c == 3) { // 若覆盖图像的通道数为3,则转换为4通道
cv::cvtColor(img_over, img_over, cv::COLOR_BGR2BGRA);
}
for (int w = 0; w < img_over_w; ++w) { for (int h = 0; h < img_over_h; ++h) { if (img_over.at(h, w)[3] != 0) { // 判断第四个通道,1为完全不透明,0为完全透明,如果不是全透明的像素 for (int c = 0; c < 3; ++c) { // 遍历三个通道 int x = img_over_x + w; // 覆盖像素的横坐标 int y = img_over_y + h; // 覆盖像素的纵坐标 if (x >= img_w || y >= img_h) { // 如果坐标超出最大宽高
break; // 不做操作
}
img.at(y, x)[c] = img_over.at(h, w)[c]; // 覆盖像素
}
}
}
}
return img; // 完成覆盖的图像
}
int main() {
cv::Mat face_img = cv::imread("ym.jpg"); // 读取人脸图像
cv::Mat glass_img = cv::imread("glass.png", cv::IMREAD_UNCHANGED); // 读取眼镜图像,保留图像类型
int height = glass_img.rows; // 获取眼镜图像的高度
int width = glass_img.cols; // 获取眼镜图像的宽度
int channel = glass_img.channels(); // 获取眼镜图像的通道数
cv::CascadeClassifier face_cascade;
face_cascade.load("haarcascade_frontalface_default.xml"); // 加载级联分类器
cv::Mat garyframe;
cv::cvtColor(face_img, garyframe, cv::COLOR_BGR2GRAY); // 转为黑白图像
std::vector faces;
face_cascade.detectMultiScale(garyframe, faces, 1.3, 5); // 识别人脸
for (const auto& face : faces) { // 遍历所有人脸的区域
int x = face.x;
int y = face.y;
int w = face.width;
int h = face.height;
int gw = w; // 眼镜缩放之后的宽度
int gh = static_cast(height * w / width); // 眼镜缩放之后的高度
cv::resize(glass_img, glass_img, cv::Size(gw, gh)); // 按照人脸大小缩放眼镜
overlay_img(face_img, glass_img, x, y + static_cast(h * 1 / 3)); // 将眼镜绘制到人脸上
}
cv::imshow("screen", face_img); // 显示最终处理的效果
cv::waitKey(); // 按下任何键盘按键后
cv::destroyAllWindows(); // 释放所有窗体
return 0;
}
```
请注意,你可能需要根据本地的编译环境和库设置进行适当的配置。
我将给你一段python代码,帮我转换成cPP:
# 定义覆盖图像
def overlay_img(img, img_over, img_over_x, img_over_y):
"""
:param img: 背景图像
:param img_over: 覆盖图像
:param img_over_x: 覆盖图像的横坐标
:param img_over_y: 覆盖图像的纵坐标
:return:
"""
img_h, img_w, img_p = img.shape # 获取背景图像的宽、高、通道数
img_over_h, img_over_w, img_over_c = img_over.shape # 覆盖图像的宽、高、通道数
if img_over_c == 3: # 若覆盖图像的通道数为3,则转换为4通道
img_over = cv2.cvtColor(img_over, cv2.COLOR_BGR2BGRA)
for w in range(0, img_over_w):
for h in range(0, img_over_h):
if img_over[h, w, 3] != 0: # 判断第四个通道,1为完全不透明,0为完全透明,如果不是全透明的像素
for c in range(0, 3): # 遍历三个通道
x = img_over_x + w # 覆盖像素的横坐标
y = img_over_y + h # 覆盖像素的纵坐标
if x >= img_w or y >= img_h: # 如果坐标超出最大宽高
break # 不做操作
img[y, x, c] = img_over[h, w, c] # 覆盖像素
return img # 完成覆盖的图像
face_img = cv2.imread('ym.jpg') # 读取人脸图像
glass_img = cv2.imread("glass.png", cv2.IMREAD_UNCHANGED) # 读取眼镜图像,保留图像类型
height, width, channel = glass_img.shape # 获取眼镜图像高、宽、通道数
# 加载级联分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
garyframe = cv2.cvtColor(face_img, cv2.COLOR_BGR2GRAY) # 转为黑白图像
faces = face_cascade.detectMultiScale(garyframe, 1.3, 5) # 识别人脸
for (x, y, w, h) in faces: # 遍历所有人脸的区域
gw = w # 眼镜缩放之后的宽度
gh = int(height * w / width) # 眼镜缩放之后的高度度
glass_img = cv2.resize(glass_img, (gw, gh)) # 按照人脸大小缩放眼镜
overlay_img(face_img, glass_img, x, y + int(h * 1 / 3)) # 将眼镜绘制到人脸上
cv2.imshow("screen", face_img) # 显示最终处理的效果
cv2.waitKey() # 按下任何键盘按键后
cv2.destroyAllWindows() # 释放所有窗体
这段代码使用OpenCV库实现了给人脸图像增加眼镜的效果。具体步骤如下:
1. 读取人脸图像和眼镜图像。
2. 使用级联分类器检测人脸区域。
3. 遍历每个人脸区域,根据人脸大小缩放眼镜图像。
4. 将眼镜图像覆盖到人脸图像上指定位置。
5. 显示处理后的图像。
最终效果是在人脸图像上添加了眼镜。你可以在OpenCV的官方文档中查找更多关于级联分类器和图像处理的相关内容。
# 定义覆盖图像
def overlay_img(img, img_over, img_over_x, img_over_y):
"""
:param img: 背景图像
:param img_over: 覆盖图像
:param img_over_x: 覆盖图像的横坐标
:param img_over_y: 覆盖图像的纵坐标
:return:
"""
img_h, img_w, img_p = img.shape # 获取背景图像的宽、高、通道数
img_over_h, img_over_w, img_over_c = img_over.shape # 覆盖图像的宽、高、通道数
if img_over_c == 3: # 若覆盖图像的通道数为3,则转换为4通道
img_over = cv2.cvtColor(img_over, cv2.COLOR_BGR2BGRA)
for w in range(0, img_over_w):
for h in range(0, img_over_h):
if img_over[h, w, 3] != 0: # 判断第四个通道,1为完全不透明,0为完全透明,如果不是全透明的像素
for c in range(0, 3): # 遍历三个通道
x = img_over_x + w # 覆盖像素的横坐标
y = img_over_y + h # 覆盖像素的纵坐标
if x >= img_w or y >= img_h: # 如果坐标超出最大宽高
break # 不做操作
img[y, x, c] = img_over[h, w, c] # 覆盖像素
return img # 完成覆盖的图像
face_img = cv2.imread('ym.jpg') # 读取人脸图像
glass_img = cv2.imread("glass.png", cv2.IMREAD_UNCHANGED) # 读取眼镜图像,保留图像类型
height, width, channel = glass_img.shape # 获取眼镜图像高、宽、通道数
# 加载级联分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
garyframe = cv2.cvtColor(face_img, cv2.COLOR_BGR2GRAY) # 转为黑白图像
faces = face_cascade.detectMultiScale(garyframe, 1.3, 5) # 识别人脸
for (x, y, w, h) in faces: # 遍历所有人脸的区域
gw = w # 眼镜缩放之后的宽度
gh = int(height * w / width) # 眼镜缩放之后的高度度
glass_img = cv2.resize(glass_img, (gw, gh)) # 按照人脸大小缩放眼镜
overlay_img(face_img, glass_img, x, y + int(h * 1 / 3)) # 将眼镜绘制到人脸上
cv2.imshow("screen", face_img) # 显示最终处理的效果
cv2.waitKey() # 按下任何键盘按键后
cv2.destroyAllWindows() # 释放所有窗体