OpenCV实践之路——矩形图片的对角线分割

来源:互联网 发布:搞笑一家人知乎 编辑:程序博客网 时间:2024/05/22 06:53

参考:http://blog.csdn.net/xingchenbingbuyu/article/details/50709047


其实思想很简单,只是由于当时我水平还不够才觉得很难。就是做出对角线,然后判断,如果某一点在直线这一片,复制到image1,否则复制到image2。对于没有值另外一半,给其赋个值。我是选择的喵星人眼睛的颜色赋值的。
代码很简单:

#include<opencv2\core\core.hpp>#include<opencv2\highgui\highgui.hpp>using namespace cv;using namespace std;int main(int argc,char* argv[]){    //Mat image = imread(argv[1]);      Mat image = imread("1.jpg");        int x1 = 0, y1 = 0;    int x2 = image.cols - 1, y2 = image.rows-1;    Mat image1(image.rows, image.cols, CV_8UC3, Scalar(180,120,50));    Mat image2(image.rows, image.cols, CV_8UC3, Scalar(180, 120, 50));    for (int x = 0; x < image.cols; x++)    {        for (int y = 0; y < image.rows; y++)        {               //如果在直线之下,赋值到image1,注意图片的坐标系y是越向下越大的            if ((y - y2)*(x1 - x2) - (x - x2)*(y1 - y2) >= 0)            {                image1.at<Vec3b>(Point(x, y)) = image.at<Vec3b>(Point(x, y));            }            //如果在直线之上,复制到image2            else            {                image2.at<Vec3b>(Point(x, y)) = image.at<Vec3b>(Point(x, y));            }               }    }    imshow("image", image);    imshow("image1", image1);    imshow("image2", image2);    while (char(waitKey(1)) != 'q'){}    return 0;}
阅读全文
0 0
原创粉丝点击