用OpenCV随意写的对图像的处理10

#include"OpenCVLib2.hpp"
using namespace cv;

int main(){

    /**
     * [
     *  cosA -sinA
     *  sinA cosA
     * ]
     * 
     * A = pi/2 (90)
     * [
     *  0 -1
     *  1 0
     * ]
     * 正方向旋转90度.
     * 图像的坐标为左上角(0,0)右下角(cols,rows)
     * 向右为x正方向,向下为y正方向,
     * 所以正方向旋转90度为向下旋转90度
     */ 

    int a[2][2] = {0,-1,1,0};

    Mat src = imread("logo.png");
    imshow("Origin",src);
    
    Mat dst(src.cols,src.rows,src.type());


    println("src.rows = ",src.rows," ; src.cols = ",src.cols);
    println("dst.rows = ",dst.rows," ; dst.cols = ",dst.cols);


    for(int i=0;i<src.cols;i++){
        for(int j=0;j<src.rows;j++){
            int x = dst.cols + a[0][0]*i + a[0][1]*j - 1;/* dst.cols - j - 1; */
            int y = a[1][0]*i + a[1][1]*j;/* i; */
            // println("x = ",x," ; y = ",y);
           
            // println("dst rows = ",dst.rows," ; i = ",i);
            // println("j = ",j);

            // println("src(",src.rows,",",src.cols,"),i = ",i," ; j = ",j);

            // println("dst(",dst.rows,",",dst.cols,")");
            

            //at(row,col)
            // <=> at(y,x) (in pic row => y,col => x)
            dst.at<Vec3b>(y,x)[0] = src.at<Vec3b>(j,i)[0];
            dst.at<Vec3b>(y,x)[1] = src.at<Vec3b>(j,i)[1];
            dst.at<Vec3b>(y,x)[2] = src.at<Vec3b>(j,i)[2];
            // println("x = ",x," ; y = ",y);
        }
    }

    // println("Over");
    imshow("Effect",dst);

    waitKey(0);
    return 0;
}




评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值