我想接触一下图像算法,但不知道该怎么入手,想自己练习一些简单的图像算法,之前MFC基本没接触过,Qt的用时间相对还算长一点,但还是不知道该怎么入手去编写处理图像的算法程序,在网上看到一个算法例子:http://blog.csdn.net/v_JULY_v/article/details/6227072 但不知道该怎么去在Qt实现,希能到大家的指点
------解决方案--------------------
楼主是想要基础函数吧,例如描点、画线的函数?
Qt是C++的一个库,语法和C++是一样的。
------解决方案--------------------
可能是getPixel之类的函数吧,参考QImage
我接触Qt时间也不长,以上仅供参考
------解决方案--------------------
QImage已经为您实现了缩放的算法了,直接呼叫scale就好
如果你想开发影象处理的演算法
我会建议您用openCV2这种专门为了影象处理而开发的库
openCV2针对各类图象处理的演算法做了不少的优化
gpgpu,sse指令的优化都不在话下
以下是我利用openCV实现的bilinear缩放算法,抛砖引玉
希望能看见更快的实做方法
template<typename T>
cv::Mat_<T> const bilinear_interpolation(cv::Mat_<T> const &src, cv::Size dsize,
float dx, float dy)
{
cv::Mat_<T> dst = dsize.area() == 0 ? cv::Mat_<T>(src.rows * dy, src.cols * dx) :
cv::Mat_<T>(dsize);
float const x_ratio = static_cast<float>((src.cols - 1)) / dst.cols;
float const y_ratio = static_cast<float>((src.rows - 1)) / dst.rows;
for(int row = 0; row != dst.rows; ++row)
{
int y = static_cast<int>(row * y_ratio);
float const y_diff = (row * y_ratio) - y; //distance of the nearest pixel(y axis)
float const y_diff_2 = 1 - y_diff;
auto *dst_ptr = &dst(row, 0)[0];
for(int col = 0; col != dst.cols; ++col)
{
int x = static_cast<int>(col * x_ratio);
float const x_diff = (col * x_ratio) - x; //distance of the nearet pixel(x axis)
float const x_diff_2 = 1 - x_diff;
float const y2_cross_x2 = y_diff_2 * x_diff_2;
float const y2_cross_x = y_diff_2 * x_diff;
float const y_cross_x2 = y_diff * x_diff_2;
float const y_cross_x = y_diff * x_diff;