写在前面:欢迎来到「湫歌」的博客。我是秋秋,一名普通的在校大学生。在学习之余,用博客来记录我学习过程中的点点滴滴,也希望我的博客能够更给同样热爱学习热爱技术的你们带来收获!希望大家多多关照,我们一起成长一起进步。也希望大家多多支持我鸭,喜欢我就给我一个关注吧!1、环境配置 这部分可以看一下我之前的博客文章
Visual Studio 2022下载及配置OpenCV4.5.5
2、OpenCV读入图片
Mat src;
src = https://www.it610.com/article/imread("C://Users//autumn//Desktop//forP49//1.png");
//图片地址
3、修改图片大小
Mat dst;
resize(src, dst, cv::Size(400, 400));
4、画正弦曲线 思路是:遍历单个像素点,计算对应的正弦函数值,在每一个函数点画出圆点,可以用circle函数
double zhenfu;
double zhouqi;
cout << "请依次输入振幅和周期";
cin >> zhenfu >> zhouqi;
double i, j;
for (i = dst.cols / 2;
i <= dst.cols;
i=i+0.1) {
cv::circle(dst, Point(i, int(zhenfu * sin(zhouqi*i)+dst.rows/2)), 1, cv::Scalar(0, 255, 255), -100);
} for (j = dst.cols / 2;
j >= 0;
j=j-0.1) {
cv::circle(dst, Point(j, int(zhenfu * sin(zhouqi*j)+dst.rows/2)), 1, cv::Scalar(0, 255, 255), -100);
}
5、显示图像
imshow("display", dst);
waitKey(0);
6、效果展示
文章图片
6、最后放上完整代码
#include
#include
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
int main() {
Mat src;
Mat dst;
src = https://www.it610.com/article/imread("C://Users//autumn//Desktop//forP49//1.png");
//imshow("display", src);
//waitKey(0);
resize(src, dst, cv::Size(400, 400));
double zhenfu;
double zhouqi;
cout << "请依次输入振幅和周期";
cin >> zhenfu >> zhouqi;
double i, j;
for (i = dst.cols / 2;
i <= dst.cols;
i=i+0.1) {
cv::circle(dst, Point(i, int(zhenfu * sin(zhouqi*i)+dst.rows/2)), 1, cv::Scalar(0, 255, 255), -100);
} for (j = dst.cols / 2;
j >= 0;
j=j-0.1) {
cv::circle(dst, Point(j, int(zhenfu * sin(zhouqi*j)+dst.rows/2)), 1, cv::Scalar(0, 255, 255), -100);
}
imshow("display", dst);
waitKey(0);
//cout << "图像宽为:" << src.cols << "高度为:" << src.rows << endl;
return 0;
}
【OpenCV|OpenCV在图像上画正弦曲线(c++)】 写的有点粗糙
推荐阅读
- OpenCV|Visual Studio 2022下载及配置OpenCV4.5.5
- 数据结构|数据结构课程设计——学生成绩查询与分析系统(简单详细版,含讲解)
- c#|c# opencv 轮廓检测_OPENCV图像轮廓检测
- 计算机视觉|OpenCV图像轮廓(2)轮廓面积
- 计算机视觉|OpenCV图像轮廓(1)查找和绘制轮廓
- c++|有未经处理的异常: Microsoft C++ 异常: cv::Exception
- Android|摄像头 - 对焦算法实现总结
- 图形图像|OpenCV 视频入门
- c语言|C语言——指针初识(三)(指针和指针数组,一级指针,二级指针详解)