资源简介
相同条件下拍到的棋盘图和日历钟表图,尝试建立几何畸变关系,并对它们进行恢复。
代码片段和文件信息
/*--------------------------
Author: 叶耀祖
opencv version: opencv343
visual studio 2017
Date:2018/12/18
EMail:yaozuye@zju.edu.cn
--------------------------*/
#include
#include
#include
#include
# include
#define PI 3.14159
#define PHOTO_W 644
#define PHOTO_H 485
#define PHOTO_AREA (644*485)
# define PARAM_SIZE 8
using namespace cv;
using namespace std;
const Point2f CenterPoint(PHOTO_W / 2 PHOTO_H / 2);
void int2str(const int &int_temp string &string_temp)
{
stringstream stream;
stream << int_temp;
string_temp = stream.str(); //此处也可以用 stream>>string_temp
}
//数字图像处理第一次作业源代码
void HK1()
{
Mat src = Mat(256 256 CV_8UC3 Scalar(0 0 0));
Mat src2 = Mat(640 640 CV_8UC3 Scalar(0 0 0));
int radius = 300;
Point center = Point(320 320);
circle(src2 center radius Scalar(255255255) -1);
Mat rectDst;
for (int i = 0; i < 256; i++)
{
for (int j = 0; j < 256; j++)
{
uchar Hue = uchar(180.0 / 255 * j);
uchar Satu = 255-i ;
uchar Value = 255;
src.at(ij) = Vec3b(Hue Satu Value);
}
}
for (int i = 0; i < 640; i++)
{
for (int j = 0; j < 640; j++)
{
if (src2.at(i j) == Vec3b(255 255 255))
{
int Hue = atan((320 - i)*1.0 / (j - 320)) / PI * 180 + 90;
if (j < 320)
{
Hue += 180;
}
uchar cvHue = Hue/2;
uchar saturation = 1.0*sqrt((320 - i)*(320 - i) + (j - 320)*(j - 320)) / radius * 255;
src2.at(i j) = Vec3b(cvHue saturation 255);
}
}
}
cvtColor(src2 src2 COLOR_HSV2RGB);
cvtColor(src src COLOR_HSV2RGB);
imshow(“rect“ src);
imshow(“circle“ src2);
imwrite(“rectDst.bmp“ src);
imwrite(“cirleDst.bmp“ src2);
waitKey(0);
}
bool absCompare(int a int b)
{
return abs(a) < abs(b);
}
//kernelSize为滤波器核的边长,k为近邻个数
void kNearMean(Mat &src8uc1 Mat &dst int k = 1 int kernelSize = 3)
{
int rows = src8uc1.rows;
int cols = src8uc1.cols;
int size = (kernelSize - 1) / 2;
int arrLen = kernelSize * kernelSize - 1;
//此处使用int是为了累加和减法不会溢出
int *sortArray = new int[arrLen];
int originValue;
for (int i = size; i < rows - size; i++)
{
for (int j = size; j < cols - size; j++)
{
int tempIndex = 0;
originValue = int(src8uc1.at(i j));
for (int tempi = i - size; tempi <= i + size; tempi++)
{
for (int tempj = j - size; tempj <= j + size; tempj++)
{
if (tempi != i || tempj != j)
{
sortArray[tempIndex] = int(src8uc1.at(tempi tempj)) - int(originValue);
tempIndex++;
}
}
}
sort(sortArray sortArray + arrLen absCompare);
int sumTemp = 0;
for (int temp = 0; temp < k; temp++)
{
sumTemp += sortArray[temp];
}
int dstValue = originValue + sumTemp*1.0 / k;
dst.at(i j) = uchar(dstValue);
}
}
delete[] sortArray;
}
void meanFilter(Mat &src8uc1 Mat &dst
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 81004 2018-12-13 20:16 chessGraph.jpg
文件 288256 2018-12-28 22:26 ConfigTest.exe
文件 82539 2018-12-13 20:16 distortion.jpg
文件 121046 2018-12-28 22:28 dst.jpg
文件 13868 2018-12-28 22:26 main.cpp
文件 1917604 2018-12-27 22:45 my_video.avi
文件 1343371 2018-12-29 14:28 opencv角点检测.png
文件 2021330 2018-12-28 14:44 梯度下降拟合函数.gif
文件 1343371 2018-12-29 14:28 畸变前角点.png
文件 1253912 2018-12-27 20:35 结果图片.png
相关资源
- 数字图像处理第三版中文及英文答案
- 数字图像处理复习资料.doc
- 数字图像处理方法的研究文献翻译
- VC数字图像处理 特效显示代码
- 数字图像处理——基础篇谷口庆治
- 数字图像处理第三版中文答案
- 数字图像处理课件 ppt
- 广东工业大学数字图像处理作业
- 数字图像处理冈萨雷斯第三版课后习
- 数字图像处理 冈萨雷斯 第三版 课后
- 数字图像处理(第3版)_课后习题解答
- 中南大学数字图像处理实验报告
- 数字图像处理编程入门pdf电子书
- 数字图像处理西安交通大学
- 广东工业大学数字图像处理历年试卷
- 数字图像处理编程吕凤军
- 基于DSP的数字图像处理
- 数字图像处理期末作业
- 数字图像处理数据集四-CSet8
- 数字图像处理入门word版
- 数字图像处理 傅里叶变换 第三章 课
- 数字图像处理编程入门 吕凤军
- 杭电数字图像处理作业2
- 《数字图像处理第3版》思考题与习题
- 武汉大学数字图像处理期末实习代码
- 《数字图像处理》第三版 (冈萨雷斯
- 《遥感数字图像处理》汤国安.pdf182
- 国科大 数字图像处理与分析 18考题
- 数字图像处理常用图片BMP
- 数字图像处理,非常经典的教材
评论
共有 条评论