在c++语言中使用opencv环境中的函数画一个熊猫🐼头像
时间: 2025-03-18 11:05:47 浏览: 45
要在C++语言中使用OpenCV库绘制一个类似熊猫头像的画面,可以按照以下步骤操作。这里我们通过基本绘图功能模拟出一只简单的“熊猫”图案。
### 步骤解析
#### 1. 创建空白图像
首先创建一幅指定大小的黑色背景图片作为画布。
```cpp
cv::Mat image = cv::Mat::zeros(500, 500, CV_8UC3); // 创建500x500像素、三通道黑白图像
```
#### 2. 绘制白色圆形区域代表脸部
利用`circle()`函数绘制白色的圆圈表示熊猫的脸部轮廓。
```cpp
// (中心坐标(x,y),半径,颜色(B,G,R))
cv::circle(image, cv::Point(250, 250), 200, cv::Scalar(255, 255, 255), -1);
```
#### 3. 添加两个小黑耳朵
分别用两片较小的椭圆填充为黑色来制作耳廓部分。
```cpp
cv::ellipse(image, cv::Point(150, 150), cv::Size(60, 90), 0, 0, 360, cv::Scalar(0, 0, 0), -1);
cv::ellipse(image, cv::Point(350, 150), cv::Size(60, 90), 0, 0, 360, cv::Scalar(0, 0, 0), -1);
```
#### 4. 描绘眼睛部位——大块眼罩及瞳孔点睛之处
先添加较大的圆形覆盖形成所谓的“黑眼圈”,然后在其内部放置小小的深色圆点当作眼球核心。
```cpp
cv::circle(image, cv::Point(170, 250), 50, cv::Scalar(0, 0, 0), -1); // 左边大的黑色圆环(左眼)
cv::circle(image, cv::Point(330, 250), 50, cv::Scalar(0, 0, 0), -1); // 右边大的黑色圆环(右眼)
cv::circle(image, cv::Point(170, 250), 10, cv::Scalar(0, 0, 0), -1); // 瞳孔左边的小白点
cv::circle(image, cv::Point(330, 250), 10, cv::Scalar(0, 0, 0), -1); // 瞳孔右边的小白点
```
#### 5. 最后别忘了鼻子嘴巴哦!
为了增添更多趣味性和识别度,在中央位置加上一个小三角形作为鼻尖,并且连接上下两条弧线象征微笑开口笑哈哈的模样吧~
```cpp
std::vector<cv::Point> nose_points;
nose_points.push_back(cv::Point(240, 320));
nose_points.push_back(cv::Point(260, 320));
nose_points.push_back(cv::Point(250, 335));
cv::fillConvexPoly(image, nose_points, cv::Scalar(0, 0, 0)); // 鼻子
cv::ellipse(image, cv::Point(250, 340), cv::Size(30, 10), 0, 0, 180, cv::Scalar(0, 0, 0), 5); // 嘴巴上弯部分
cv::ellipse(image, cv::Point(250, 360), cv::Size(30, 10), 0, 180, 360, cv::Scalar(0, 0, 0), 5); // 下唇补充完整曲线效果
```
#### 完整代码示例
将上述所有片段整合起来就可以得到最终版本啦!记得最后展示结果前需要调用imshow()显示窗口以及waitKey等待按键关闭程序运行结束。
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main(){
Mat image = Mat::zeros(500, 500, CV_8UC3);
circle(image, Point(250, 250), 200, Scalar(255, 255, 255), -1);
ellipse(image, Point(150, 150), Size(60, 90), 0, 0, 360, Scalar(0, 0, 0), -1);
ellipse(image, Point(350, 150), Size(60, 90), 0, 0, 360, Scalar(0, 0, 0), -1);
circle(image, Point(170, 250), 50, Scalar(0, 0, 0), -1);
circle(image, Point(330, 250), 50, Scalar(0, 0, 0), -1);
std::vector<Point> nose_points;
nose_points.push_back(Point(240, 320));
nose_points.push_back(Point(260, 320));
nose_points.push_back(Point(250, 335));
fillConvexPoly(image, nose_points, Scalar(0, 0, 0));
ellipse(image, Point(250, 340), Size(30, 10), 0, 0, 180, Scalar(0, 0, 0), 5);
ellipse(image, Point(250, 360), Size(30, 10), 0, 180, 360, Scalar(0, 0, 0), 5);
imshow("Panda Face", image);
waitKey();
}
```
这是一只可爱的简笔画风格的卡通版大熊猫形象了!
阅读全文
相关推荐

















